Semantica de los lenguajes de programación, esto tiene que ver con el funcionamiento de las diferentes expresiones que tiene un lenguaje
Vimos el proceso de compilación e interpretación, un codigo fuente es pasado a través del frontend: Construye el arbol de sintaxis abstracta
Interpretar: Realiza las ejecuciones y nos retorna una respuesta
Compilar: Se transforma a código fuente y se ejecuta en la maquina
Codigo binario: CPU
Bycode (Java) es posteriormente interpretado
Frontend
Scanner: Captura unidades significativas y deja ultimo (elimina espacios en blanco y comentarios)
Parser: Recibe una secuencia de tokens (scanner) y nos retorna AST
Un interpretador:
Una especificación léxica: Especificamos que son las unidades significativas: numeros, identificadores, comentarios, y que hacemos con ellos: skip (ignorar), symbol, number o string
Especificación gramatical: COmo construimos el AST a partir de las reglas de escritura del codigo.
SLLGEN: Lenguajes por la izquierda, que el inicio debe ser diferente, gramatica regular: \(<regla>:= <terminal> | <terminal> <regla>\)
Rutinas para hacer los datatypes de expresiones
Rutinar para hace el scanner y el parser
Rutina para hacer el interprete
Interprete simple
Valores expresados: Son aquellos que se manejan directamente en el lenguaje
Valores denotados: Son aquellos que se almacen en los ambientes
TADs
Expresiones: Representaciones del codigo fuente, por ejemplo identificador es un var-exp, un numero es lit-exp
Datos: Ambientes
Este interprete inicial nos ofrece operaciones matematicas.