Professional Documents
Culture Documents
Ejemplos:
Tipos de semntica:
Semntica esttica
Semntica dinmica
Semntica
Semntica esttica
Semntica
Generar Cdigo.
Insertar informacin en la Tabla de Smbolos.
Realizar el Chequeo Semntico.
Dar mensajes de error, etc.
Semntica
Reglas semnticas
Ecuaciones de atributo asociadas
.
.
Ecuaciones de atributo asociadas
Semntica
Regla gramatical
Reglas semnticas
lista-var.at = tipo.at
tipo.at = int
tipo.at = float
id.at = lista-var.at
Aadetipo(id.entrada, lista-var.at)
id.at = lista-var.at
Aadetipo(id.entrada, lista-var1.at)
lista-var2 .at = lista-var.at
lista-var id
lista-var1 id, lista-var2
tipo
(at = float)
float
lista-var
(at = float)
id
,
(Aadetipo(z, float))
z
lista-var
(at = float)
id
(Aadetipo(t, float))
t
Semntica
Semntica dinmica.
Semntica
No es fcil
No existen herramientas estndar como en el
caso de la sintxis (diagramas sintcticos y
BNF)
Hay diferentes soluciones formales:
Semntica axiomtica
Semntica denotacional
Semntica operacional
Semntica
Semntica axiomtica
Semntica
Semntica axiomtica
a
b
r
c
Precondicin: {b distinto de cero}
Sentencia: expresin que divide a por b
Postcondicin: {a=b*c+r y r<b}
Semntica
Semntica denotacional
FNbin(0)=0
FNbin(1)=1
Semntica
Semntica Operacional
Semntica
Semntica Operacional
Ejemplo:
Lenguajes
for i := pri to ul do
begin
........
end
Mquina abstracta
i := pri
lazo if i > ul goto sal
............
i := i +1
goto lazo
sal ..........
Procesamiento de un lenguaje
Traduccin
Aparicin
de #12,
los Lenguajes
de alto nivel
SUM #13,
#13
DIV #13, 3, #13
FIN
Procesamiento de un lenguaje
Interpretacin y compilacin
Interpretacin
Compilacin
Interpretacin
Intrprete:
Lee,
Analiza
Decodifica y
Ejecuta una a una las sentencias de un programa
escrito en un lenguaje de programacin.
Interpretacin
E
Programa
INTRPRET
E
Resultados
Compilacin
Lenguaje
fuente
Lenguaje
objeto
COMPILACIN
Traduccin
La traduccin lleva varios pasos.
Ej: Pasos que prodra realizarse en una
traduccin:
Compilado a assembler
Ensamblado a cdigo
reubicable
Linkeditado
Cargado en la memoria
Compilador
Assembler
Link-editor
Loader
Traduccin
Tipos de traductores:
Compilador
Assembler
Traduccin
Link-editor
Loader
Traduccin
Traduccin
Ejemplo lenguaje C:
Traduccin
Y en el cdigo aparece:
r = max(s,5);
.
El preprocesador
hara:
Preprocesador
o macro-procesador:
. fuente: Forma extendida de algn lenguaje de
Lenguaje
alto nivelr =
(Cs>5?s:5;
con macros)
Lenguaje objeto: Forma estndar del mismo lenguaje.
Traduccin
Intrprete:
Compilador:
Intrprete:
Compilador:
Traduccin
Tiempo de ejecucin:
Intrprete:
Compilador:
Eficiencia:
Intrprete:
Ms lento en ejecucin
Compilador:
Traduccin
Espacio ocupado:
Intrprete:
Compilador:
Deteccin de errores:
Intrprete:
Compilador:
Traduccin
Traduccin
Otro
forma
de
combinarlos:
traduccin a un cdigo intermedio
que luego se interpretar.
Traduccin
INTERMEDIO
Interpretacin
EJECUTABLE
Compiladores
Anlisis
Sntesis
Generacin de
cdigo intermedio
Compiladores
Compiladores
Compiladores
Es la fase medular
Es la mas importante
Las estructuras sintcticas reconocidas por el analizador
sintctico son procesadas y la estructura del cdigo
ejecutable toma forma.
Se realiza la comprobacin de tipos
Se agrega la informacin implcita (variables no
declaradas)
Se agrega a la tabla de smbolos los descriptores de
tipos, etc. a la vez que se hacen consultas para realizar
comprobaciones.
Se hacen las comprobaciones de nombres. Ej: toda
variable debe estar declarada.
Es el nexo entre el anlisis y la sntesis
Compiladores
L4: t1:=b*a
t2:=t1-10
a:=t2
goto L1
L3: .
Compiladores
Sntesis:
Compiladores
Optimizacin (ejemplo):
Posibles optimizaciones locales:
t1:=b*a
t1:=a*4
t2:=t1-10
t2:=t1-5
a:=t2
goto L1
L3: .
Quedara t1:=b+c
a:=t1+d
b:=t1+e
Compiladores
PROGRMA FUENTE
ANALIZADOR LEXICO
ANALIZADOR SINTACTICO
SEMNTICA ESTATICA
CODIGO INTERMEDIO
CODIGO DE MAQUINA
E
COMPUTADORA
OPTIMIZACION