El analizador es la fase del compilador que toma una string de token como entrada y, con la ayuda de la gramática existente, la convierte en la Representación intermedia (IR) correspondiente. El analizador también se conoce como analizador de sintaxis.
Tipos de analizador:
El analizador se clasifica principalmente en dos categorías, es decir, analizador de arriba hacia abajo y analizador de abajo hacia arriba. Estos se explican a continuación:
Analizador de arriba hacia abajo:
El analizador de arriba hacia abajo es el analizador que genera análisis para la string de entrada dada con la ayuda de producciones gramaticales mediante la expansión de los no terminales, es decir, comienza desde el símbolo de inicio y termina en los terminales. Utiliza la derivación más a la izquierda.
Además, el analizador de arriba hacia abajo se clasifica en 2 tipos: un analizador de descenso recursivo y un analizador de descenso no recursivo.
- El analizador de descenso recursivo también se conoce como analizador de fuerza bruta o analizador de retroceso. Básicamente genera el árbol de análisis mediante el uso de fuerza bruta y retroceso.
- El analizador de descenso no recursivo también se conoce como analizador LL (1) o analizador predictivo o sin analizador de retroceso o analizador dinámico. Utiliza una tabla de análisis para generar el árbol de análisis en lugar de retroceder.
Analizador ascendente:
El analizador ascendente es el analizador que genera el árbol de análisis para la string de entrada dada con la ayuda de producciones gramaticales al comprimir los no terminales, es decir, comienza desde los no terminales y termina en el símbolo de inicio. Utiliza el reverso de la derivación más a la derecha.
El analizador ascendente adicional se clasifica en dos tipos: analizador LR y analizador de precedencia de operadores.
- El analizador LR es el analizador de abajo hacia arriba que genera el árbol de análisis para la string dada mediante el uso de una gramática inequívoca. Sigue el reverso de la derivación más a la derecha.
El analizador LR es de cuatro tipos:
(a)LR(0) (b)SLR(1) (c)LALR(1) (d)CLR(1)
- El analizador de precedencia de operadores genera el árbol de análisis a partir de la gramática y la string dadas, pero la única condición son dos no terminales consecutivos y épsilon nunca aparece en el lado derecho de ninguna producción.
- Las técnicas de análisis de precedencia de operadores se pueden aplicar a las gramáticas de operadores.
- Gramática de operadores: Se dice que una gramática es gramática de operadores si no existe ninguna regla de producción en el lado derecho.
1. como ε(Epsilon)
2. Dos no terminales aparecen consecutivamente, es decir, sin ningún terminal entre ellos El análisis sintáctico de precedencia de operadores no es una técnica simple para aplicar a la mayoría de las construcciones del lenguaje, pero se convierte en una técnica fácil de implementar donde se puede producir una gramática adecuada.