Semntica
Semntica esttica
est relacionado con las formas validas.
el anlisis para el chequeo puede hacerse en
compilacin.
Para describir la sintaxis y la semntica esttica
formalmente sirven las denominadas gramticas
de atributos, inventadas por Knuth en 1968.
Generalmente las gramticas sensibles al
contexto resuelven los aspectos de la semntica
esttica.
CONCEPTOS DE LENGUAJES 2005
Semntica
Semntica dinmica.
describe el efecto de ejecutar las diferentes
construcciones en el lenguaje de programacin.
Los programas solo se pueden ejecutar si son
correctos para la sintaxis y para la semntica
esttica.
Semntica
Cmo se describe la semntica?
No existen herramientas estndar como en el
caso de la sintaxis (diagramas sintcticos y
BNF)
soluciones formales:
Semntica axiomtica
Semntica denotacional
Semntica operacional
Semntica
Semntica axiomtica
La notacin empleada es el clculo de
predicados.
Se desarroll para probar la correccin de los
programas.
Ve al programa como una mquina de
estados.
Los constructores de un lenguajes de
programacin se formalizan describiendo
como su ejecucin provoca un cambio de
estado.
CONCEPTOS DE LENGUAJES 2005
Semntica
Semntica axiomtica
Un estado se describe con un predicado que describe
los valores de las variables en ese estado
Existe un estado anterior y un estado posterior a la
ejecucin del constructor.
Cada sentencia se precede y se contina con una
expresin lgica que describe las restricciones y
relaciones entre los datos.
Precondicin
Poscondicin
Semntica
Semntica denotacional
Se basa en la teora de funciones recursivas
Describe los estados a travs de funciones.
Se define una correspondencia entre los
constructores sintcticos y sus significados
Semntica
Semntica Operacional
El significado de un programa se describe
mediante otro lenguaje de bajo nivel
implementado sobre una mquina abstracta
Los cambios que se producen en el estado de
la mquina cuando se ejecuta una sentencia
del lenguaje de programacin definen su
significado
Es un mtodo informal
Es el ms utilizado en los libros de texto
CONCEPTOS DE LENGUAJES 2005
Semntica
Semntica Operacional
Lenguajes
Mquina abstracta
for i := pri to ul do
begin
........
end
i := pri
lazo if i > u goto sal
............
i := i +1
goto lazo
sal ..........
Procesamiento de un lenguaje
Interpretacin y traduccin
Las computadoras ejecutan lenguajes de
bajo nivel
cmo los programas escritos en lenguajes
de alto nivel pueden ser ejecutados sobre
una computadora cuyo lenguaje de muy
bajo nivel?
Alternativas:
Interpretacin
Traduccin
CONCEPTOS DE LENGUAJES 2005
10
Interpretacin
Intrprete programa capaz de
leer,analizar, decodificar y ejecutar una a
una las sentencias de un programa escrito
en un lenguaje de programacin.
Por cada posible accin hay un
subprograma que ejecuta esa accin.
La interpretacin se realiza llamando a
estos subprogramas en la secuencia
adecuada.
CONCEPTOS DE LENGUAJES 2005
11
Interpretacin
E
INTRPRET
E
Programa
Resultados
12
Traduccin
Lenguaje
fuente
Lenguaje
objeto
TRADUCCIN
CONCEPTOS DE LENGUAJES 2005
13
Traduccin
La traduccin lleva varios pasos.
Ej: Pasos que se realizan para traducir un
programa escrito en Fortran:
Compilado a assembler
Ensamblado a cdigo
reubicable
Linkeditado
Cargado en la memoria
CONCEPTOS DE LENGUAJES 2005
Compilador
Assembler
Link-editor
Loader
14
Traduccin
Tipos de traductores:
Compilado
Assembler
Link-editor
Loader
15
Traduccin
Preprocesador o macro-procesador:
16
Traduccin
Comparacin entre Traductor e
Intrprete:
Forma de ejecucin
Orden ejecucin
Tiempo de ejecucin
Eficiencia
Espacio ocupado
Deteccin de errores
17
Traduccin
Combinacin de ambas tcnicas:
Los compiladores y los interpretes se
diferencian en la forma que ellos reportan
los errores de ejecucin.
Algunos ambientes de programacin contienen
las dos versiones interpretacin y
compilacin.
Utilizan el intrprete en la etapa de desarrollo,
facilitando el diagnstico de errores.
Luego que el programa ha sido validado se compila
para generar cdigo mas eficiente.
CONCEPTOS DE LENGUAJES 2005
18
Traduccin
19
Traduccin
Combinacin de ambas tcnicas:
FUENTE
Traduccin
INTERMEDIO
Interpretacin
EJECUTABLE
CONCEPTOS DE LENGUAJES 2005
20
Compiladores
ejecucin ms rpida.
C, Ada, Cobol, etc.
un paso o en dos pasos.
Etapa
Anlisis
Anlisis lxico (Scanner)
Anlisis sintctico ( Parser)
Anlisis semntico (Semntica esttica)
Sntesis
Optimizacin del cdigo
Generacin del cdigo
21
Compiladores
Anlisis del programa fuente
Anlisis lxico (Scanner):
Hace el anlisis a nivel de palabra
Divide el programa en: identificadores, delimitadores,
smbolos especiales, nmeros, palabras clave,
delimitadores, comentarios, etc.
Analiza el tipo de cada token
Convierte a representacin interna los nmeros en
punto fijo o punto flotante
Poner los identificadores en la tabla de smbolos
Reemplaza cada smbolo por su entrada en la tabla
items lxicos o tokens.
22
Compiladores
Anlisis sintctico (Parser):
identifican
las
estructuras;
sentencias,
Se
declaraciones, expresiones, etc. ayudndose con los
tokens.
El analizador sintctico se alterna con el anlisis
semntico. Usualmente se utilizan tcnicas basadas en
gramticas formales.
Aplica una gramtica para construir el rbol sintctico
del programa.
23
Compiladores
24
Compiladores
Generacin de cdigo intermedio:
Debe ser fcil de producir
Debe ser fcil de traducir al programa objeto
Ejemplo: Un formato de cdigo intermedio es el cdigo de tres direcciones.
Forma: A:= B op C, donde A,B,C son operandos y op es un operador binario
Se permiten condicionales simples simples y saltos.
while (a >0) and (b<(a*4-5)) do a:=b*a-10;
L1: if (a>0) goto L2
goto L3
L2: t1:=a*4
t2:=t1-5
if (b < t2) goto L4
goto L3
L4: t1:=b*a
t2:=t1-10
a:=t2
goto L1
L3: .
25
Compiladores
Sntesis:
se construye el programa ejecutable.
genera el cdigo necesario y se optimiza el
programa generado.
Si hay traduccin separada de mdulos, es en
esta etapa cuando se linkedita.
Se realiza el proceso de optimizacin. Optativo
26
Compiladores
Optimizacin (ejemplo):
Posibles optimizaciones locales:
Cuando hay dos saltos seguidos se puede quedar uno solo
P/E El ejemplo anterior quedara as:
L1: if (a<=0) goto L3
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
27
Compiladores
PROGRMA FUENTE
ANALIZADOR LEXICO
ANALIZADOR SINTACTICO
SEMNTICA ESTATICA
CODIGO INTERMEDIO
OPTIMIZACION
CODIGO DE MAQUINA
E
COMPUTADORA
S
CONCEPTOS DE LENGUAJES 2005
28