Práctica 6 (3/11): intérpretes
Explicación lab 3
https://github.com/compiladores/esqueleto-jsonlang#
Repo de hoy:#
Brevísimo resumen de semánticas formales- Semántica axiomática (Lógica de Hoare): expresa la semántica por medio de pre y post condiciones
- Semántica operacional: como la axiomática pero con más conceptos, que modelan conceptos como la RAM, programas posibles, etc. como conjuntos.
- Semántica denotacional: Interpreta el programa como una función matemática que involucra la RAM, contextos, etc.
#
Triplas de HoareAl ejecutar , si el estado del programa es , pasa a ser
#
EjemploAsignación en C
Secuencia:
#
Semántica DenotacionalCada construcción sintáctica del programa se convierte en una representación matemática rigurosa de lo que hace.
#
EjemploEn C, todo el código que puede ejecutarse es un statement, así, podemos tener:
- if statement
- while statement
- block statement
- assign statement
- expression statement
Una función semántica va a ser será una
#
Jsonlang: un lenguaje de POJOs- : valores javascript válidos
- : expresiones del lenguaje
- : diccionario contexto
- : lista
- inputs, outputs
Sea la función semántica:
Esta función semántica vamos a llamarla eval. Ejemplos en el código.
#
EjercícioAgregarle algo de lo siguiente a Jsonlang. La función semántica debe mantenerse funcional:
- un
if
- un
while
- un
for
- scopes
- funciones