Sesión 04: Árboles de sintaxis abstracta¶
Introducción¶
Motivación
- Hemos visto representaciones basadas en tipos de datos existentes en el lenguaje, por ejemplo listas y procedimientos
- Una representación totalmente fiel a la gramática, que permita representar datos pertenecientes a un conjunto y trabajar con ellos
Arbol de Sintaxis Abstracta (AST)
- Es una representación que nace a partir de la gramática
- Si el tipo de dato esta correctamente construido se puede construir el AST, de lo contrario no es posible
- AST permiten validar la sintaxis directamente
- Los compiladores trabajan sobre el AST directamente
- El flujo de ejecución se hace sobre el AST
- Son independientes de la representación del lenguaje
Operaciones
- Parser: Transformar de sintaxis concreta a abstracta (lenguaje entendido por humanos a entendido por el inteprete/compilador)
- Unparser: Transforma de sintaxis abstracta a sintaxis concreta
Sintaxis concreta y abstracta¶
Sintaxis concreta, es lo que ve el programador, por ejemplo codigo fuente
int main() {
int a = 8;
int b = 9;
int c = 10;
printf("%d,%d, %d",a,b,c);
}
Sintaxis abstracta es lo que el programa ejecuta y es entedido por el interprete o compilador