Anda di halaman 1dari 28

Semntica

La semntica describe el significado de


los smbolos, palabras y frases de un
lenguaje ya sea lenguaje natural o
lenguaje informtico
Tipos de semntica:
Semntica esttica
Semntica dinmica

CONCEPTOS DE LENGUAJES 2005

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.

CONCEPTOS DE LENGUAJES 2005

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

CONCEPTOS DE LENGUAJES 2005

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

CONCEPTOS DE LENGUAJES 2005

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

CONCEPTOS DE LENGUAJES 2005

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 ..........

CONCEPTOS DE LENGUAJES 2005

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

Un intrprete ejecuta repetidamente la


siguiente secuencia de acciones:
Obtiene la prxima sentencia
Determina la accin a ejecutar
Ejecuta la accin
CONCEPTOS DE LENGUAJES 2005

12

Traduccin

Los programas escritos en un lenguaje de alto


nivel se traducen a una versin en lenguaje de
mquina antes de ser ejecutados.

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

CONCEPTOS DE LENGUAJES 2005

15

Traduccin

Preprocesador o macro-procesador:

A veces antes del compilador se ejecuta


otro traductor llamada MacroProcesador o Procesador

Macro: fragmento de texto fuente que lleva


un nombre

CONCEPTOS DE LENGUAJES 2005

16

Traduccin
Comparacin entre Traductor e
Intrprete:
Forma de ejecucin
Orden ejecucin
Tiempo de ejecucin
Eficiencia
Espacio ocupado
Deteccin de errores

CONCEPTOS DE LENGUAJES 2005

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

Combinacin de ambas tcnicas


un programa puede traducirse en un cdigo
intermedio que luego se interpretar.
Diferentes soluciones:
Ms cerca de la interpretacin
Ms cerca de la traduccin

CONCEPTOS DE LENGUAJES 2005

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

CONCEPTOS DE LENGUAJES 2005

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.

CONCEPTOS DE LENGUAJES 2005

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.

CONCEPTOS DE LENGUAJES 2005

23

Compiladores

Anlisis semntica (semntica esttica):


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
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. Es el nexo
entre el anlisis y la sntesis

CONCEPTOS DE LENGUAJES 2005

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: .

CONCEPTOS DE LENGUAJES 2005

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

CONCEPTOS DE LENGUAJES 2005

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

if (b >= t2) goto L3

goto L1
L3: .

Eliminar expresiones comunes en favor de una sola expresin


a:=b+c+d
b:=b+c+e

Quedara t1:=b+c
a:=t1+d

CONCEPTOS DE LENGUAJES 2005

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

Anda mungkin juga menyukai