Análisis sintáctico
En esta etapa, el analizador sintáctico utiliza los tokens producidos por el analizador léxico para crear una representación intermedia en forma de un árbol sintáctico, que es una representación jerárquica que muestra cómo se organizan los tokens según las reglas gramaticales. Las reglas gramaticales son aquellas que validan cadenas dentro de un lenguaje de programación. En términos sencillos, una gramática especifica la estructura y las reglas para organizar los símbolos que forman una secuencia.
El objetivo principal del análisis sintáctico es verificar si el código escrito sigue las reglas gramaticales del lenguaje de la (Figura3). Esto implica comprobar que los elementos del código estén organizados correctamente según la gramática definida.
¿Por qué es importante el análisis sintáctico?
Proceso de análisis
El analizador sintáctico toma los tokens y los compara con las reglas del lenguaje para verificar su validez. Si alguna parte del código no cumple con estas reglas, se lanza un error indicando el problema.
- Entrada: Secuencia de tokens proporcionada por el análisis léxico.
- Construcción del árbol sintáctico: Organiza los tokens en un árbol siguiendo las reglas de la gramática del lenguaje.
- Manejo de errores: Se detectan y reportan errores de sintaxis en el código.
- Salida: El árbol sintáctico, que se utiliza para la siguiente fase del compilador (análisis semántico, optimización, etc.).
En la Figura6 se presenta una determinada gramática que se puede utilizar para la suma de dos dígitos, como
3 + 5.

Se compone con los siguientes elementos:
Expresión: es el símbolo que representa una operación o una expresión completa, donde se está iniciando nuestra gramática. En este caso, una Expresión consiste en un Término, seguido del operador +, y luego otro Término.
Término: es otro símbolo no terminal que representa los componentes básicos que forman las expresiones aritméticas. Un Término puede ser simplemente un Número en este caso.
Número: es otro símbolo no terminal que representa un número entero (en este caso, de una sola cifra). Un Número está compuesto por uno o más Dígitos.
Dígito: es un símbolo terminal que representa cualquiera de los números del 0 al 9
En la Figura7 se representa el árbol de la siguiente expresión. Este árbol construye visualmente cómo se estructura la expresión según la gramática. Cada nodo del árbol representa un símbolo no terminal, y las hojas representan los terminales (como números y operadores).

Cómo leer el árbol:
- Raíz: La parte superior del árbol, en este caso "Expresión", es la raíz. Representa la estructura completa que se está analizando.
- Nodos: Cada círculo en el árbol es un nodo. Cada nodo representa una parte de la expresión.
- Hijos: Las líneas que conectan un nodo con otros nodos debajo de él representan una relación padre-hijo. Los nodos inferiores son hijos del nodo superior.
- Hojas: Los nodos que no tienen hijos se llaman hojas. En este caso, las hojas son los números (3 y 5).
Interpretación del árbol:
En este árbol, se representa una expresión aritmética muy simple: 3 + 5.
- La expresión completa se descompone en dos términos: un término a la izquierda del signo "+" y otro a la derecha.
- Cada término está compuesto por un único número.
- Los números 3 y 5 son los valores concretos de cada término.
Te dejo un video para que puedas entender mucho mejor cómo se construyen los árboles sintácticos.
Pérez, J. A. (2023, 15 de marzo). El analizador sintáctico -parser- [Video]. YouTube.
Referencias:
Tema 12: Analizadores sintácticos funcionales. (s. f.). https://www.cs.us.es/~jalonso/cursos/i1m-15/temas/tema-12.html
Aho, A. V. (2007). Compilers: Principles, Techniques, & Tools. Pearson.
¿Qué es un Analizador Sintáctico? - Ryte Marketing Wiki. (s. f.). https://es.ryte.com/wiki/Analizador_Sint%C3%A1ctico