[Teoría Compiler] 2. análisis sintáctico (análisis de sintaxis)

Hay tres tipos generales de programas de análisis de gramáticas

universal De arriba hacia abajo de abajo hacia arriba
Cocke-Younger-Kasami algoritmo, el algoritmo de Earley
analizar cualquier gramática, ineficiente trabajar sólo para subclases de gramáticas trabajar sólo para subclases de gramáticas

estrategias de errores sintácticos para la recuperación de errores: pánico modo , recuperación a nivel de frase , error-producciones,-corrección global se espera que un compilador para ayudar al programador a localizar y rastrear errores

gestor de errores en un analizador tiene objetivos:

  • Reportar la presencia de errores de forma clara y precisa.
  • Recuperarse de cada error con la suficiente rapidez para detectar errores posteriores.
  • Añadir una sobrecarga mínima para el procesamiento de programas correctos.

### a, gramática libre de contexto compuesta de una serie de producción

  • símbolos terminales
  • no terminales
  • producciones
  • comenzar símbolo #### Derivación forma de frase, oración, forma de izquierda oracional, derivación por la izquierda, derivación por la derecha

Cada constructo que se puede describir por una expresión regular puede ser descrito por una gramática, pero no viceversa.

recursividad inmediata izquierda se puede eliminar mediante la siguiente técnica

Algoritmo 4.19, a continuación, elimina sistemáticamente recursión por la izquierda de una gramática.

Dos ###, de arriba hacia abajo de análisis de arriba hacia abajo método de análisis sintáctico tiene tres, -recursive Este descenso del análisis sintáctico, análisis predictivo y análisis sintáctico predictivo no recursivo, análisis predictivo es un análisis especial de descenso recursivo.

Una clase de gramática de análisis predictivo será capaz de analizar llamada LL (. 1) gramática, y una izquierda recursiva Esta gramática no es necesariamente LL gramática ambigua (1) gramática.

Si y sólo si una gramática \ (G \) cuando se cumplen las condiciones siguientes, \ (G \) con el fin de convertirse en un LL (1) gramática:
Si \ (A \ a \ alpha | \ beta \) son dos producciones diferentes, entonces. 1) \ (FIRST (\ alpha) \ primera tapa (\ beta) = \ emptyset \) 2) Si \ (\ Epsilon \ en FIRST (\ beta) \) , entonces \ (FIRST (\ alpha) \ cap SEGUIMIENTO (\ beta) = \ emptyset \) ; \ (\ epsilon \ en FIRST (\ Alpha) \) Del mismo modo.

método de análisis sintáctico predictivo de algoritmo de construcción de la tabla de análisis sintáctico: Entrada de Gramática \ (G \) , la salida del análisis de tabla \ (M \) . De la gramática \ (G \) toda la producción de \ (A \ a \ alpha \ ) realizar los dos pasos siguientes:

  1. \ (\ FORALL A \ en FIRST (\ Alpha) \) , los $ A \ a \ alpha $ Añadir a \ (M [A, a] \) de
  2. Si $ \ epsilon \ en FIRST (\ alpha) $, el \ (\ FORALL B \ en SIGUIENTE (\ Alpha) \) , los $ A \ a \ alpha $ Añadir a \ (M [a, b] \) de Si \ (\ eXISTE A, A, M ST [A, A] = \ emptyset \) , entonces que M $ [A, A] = $ error

Tenga en cuenta que para la LL (. 1) Gramática, Mesa \ (M \) Cada entrada contiene como máximo una producción. Considere $ A \ a \ alpha | \ $ beta, tenemos que explicar que no podían aparecer en la misma entrada en. LL (1) gramática condición 1, los dos producción a través de los pasos 1, no puede aparecer en la misma entrada en LL (1) gramática describe las condiciones primeros $ 1 (\ Alpha), PRIMER (\ beta) describe \ (no puede contener tanto \) \ Epsilon $, por lo que hasta dos producción a través de se puede añadir a la 2 sólo un paso \ (M \) , mientras que LL (1) gramática y el estado 2 se describe después de la etapa 2 a la \ (M \ ) en una producción con otra pieza de la producción no puede aparecer en la misma entrada en.

### tres, Bottum arriba analizar Aquí están Bottum en marcha tres tipos método, SLR, LR conanical (LR para abreviar) y LALR, que se basan en el método de reducción por desplazamiento

Nos fijamos en tres tipos de analizador LR en común, y luego ver las diferencias entre ellos

#### tipo 1.LR analizador configurado para procesar \ (Tema \ la DFA a \ análisis a \) \ (Tabla \) \ (la DFA \) una \ (Estado \) correspondiente a una pluralidad de \ (Tema \) configurado una \ (conjunto \)

#### Tipo 2.LR analizador de estructura y principio de funcionamiento estructura de tipo LR analizador se muestra más arriba, hay un estado de almacenamiento de la pila, una entrada de almacén intermedio, hay que tomar una decisión analizar mesa. 1) analizador cada vez que un siguiente terminal de acuerdo con el estado de entrada de la pila y la acción tampón para consulta de análisis de tabla de la zona, está determinado cambio siguiente, reducir, aceptar o error. 2) Si se reducen, el pop-up tendrá que manejar un número de representante del estado de la pila, y luego el nuevo estado de la pila y no terminal en lugar del mango a consulta analizar región mesa Goto, el siguiente estado se inserta en la pila y el salto arriba o error. ps: J entra en el estado de cualquier otro estado debe ser por la misma gramática símbolo X. pss: Todo tipo LR gramática es ambigua.

#### 3.SLR, la diferencia entre LR y LALR tres Paser utiliza un elemento diferente,

articulo analizador gramática
LR (0) SLR SLR
LR (1) LR LR
LALR (1) LALR LALR

Supongo que te gusta

Origin www.cnblogs.com/-zyq/p/12355302.html
Recomendado
Clasificación