Un Aceptor Push-Down (APD) es una tupla de 6 elementos con:

  1. : conjunto finito de estados.
  2. : alfabeto finito de entrada.
  3. : alfabeto finito de pila o stack.
  4. : es el programa de . Es una secuencia finita de instrucciones.
  5. : conjunto de estados iniciales.
  6. : conjunto de estados finales.

En cada instrucción el estado es la etiqueta o rótulo de la instrucción y es el estado sucesor. Cada en rotula un único tipo de instrucción (scan, write, o read). Se considera una tupla con la configuración de . Una configuración describe el estado total de un APD en algún punto de su análisis de una cinta.

Algunos conceptos:

  1. es configuración inicial de .
  2. es configuración final de .
  3. es string aceptado por tiene secuencia de movimientos , donde el stack debe estar vacío.
  4. es el lenguaje reconocido .
  5. es determinístico para toda configuración nunca hay más de un movimiento posible.
  6. Una instrucción es impropia si es rótulo de una instrucción read.
  7. Un APD es propio si su programa no contiene instrucciones impropias.

Transformación de APD a APDP

Sean los APD y APDP : el siguiente procedimiento verifica que .

  1. con con (1). Por cada instrucción se agrega . Si en en . Esto se repite para cada par y para los cuales tiene una secuencia de movimientos como (1).
  2. Se borran todas las instrucciones impropias. Las restantes forman el de .

Tabla: Construcción de un Analizador Push-Down

Dada se puede construir un . Sean , , , .

AcciónCondiciónInstrucción
Para inicializar:] write
Para expandir:
] read
] write
Para hacer “matching”:] read
] scan
Para aceptar :Si

Por cada GLC se puede construir un APD tal que .