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