Día 1
Análisis léxico
Fichero c.
if (a==5) b=4 → analisis lexico
separa en tokens
IF (ID 'a') EQ (Num 5) (ID 'b') ASSIGN (Num 4) -- TOKENS
Análisis sintáctico
Árbol de análisis sintáctico
IF (EQ (ID 'a') (Num '5')) (ASSIGN (ID 'b') (Num 4)) -- El arbol
- Métodos ascendentes y descendentes
Análisis semántico
El árbol es la entrada del análisis semántico -> significado y sentido
Se recorre el árbol con información adicional(se genera un árbol decorado), los tipos de datos
ejemplo ID 'a' -> es de tipo String
EQ (ID 'a') (Num 4)
--> error semántico.
- Se pueden realizar optimizaciones aquí -> son independientes de la máquina
Ejemplo
a = 2*3
-> Constant folding
a = 6
Generación de código(Interpretación)
Un interprete casi ejecuta el árbol o una versión intermedia de él → De un arbol se pasa a una estructura lineal → una cadena
Para cada tipo de nodo hay un esquema de traducción.
- Traduzco condición
jumpifzero label
- Traduzco sentencia
label