You are on page 1of 41

Semntica

Repaso clase anterior

Sintaxis, definicin

Elementos de la sintaxis

Maneras de definirla

BNF

EBNF

Diagramas de flujo

Gramtica para expresiones usando BNF


G=(N, , S, !"
N=#$ex%&, '
=#(,),*,+,,,-,.,/,0,1,a,2,c,33 '
S=#$ex%&'
!=#$ex%&44=


'
5e%aso 6lase 7nterior
$term&8$term& 9 $ex%&8$term& : $ex%&
$term&44=$elem&8$elem& ; $term&8$elem&<$term&
$elem&44=$iden&8$n=m&
$iden&44=$letra&8$letra& $sec&
$sec&44=$letra&8$digito&8$digito&$sec&8$letra&$sec&
$letra&44= a828c83>>
$digito&44= (8)8*83>>
$n=m&44= $digito&8$digito&$n=m&
$term&,$elem&,$iden&,$letra&3>
|(<exp>)

Gramtica para expresiones usando EBNF


G=(N, , S, !"
N=#$ex%&, '
=#(,),*,+,,,-,.,/,0,1,a,2,c,33 '
S=#$ex%&'
!=#$ex%&44=


'
5e%aso 6lase 7nterior
$term&8$term& 9 $ex%&8$term& : $ex%&
$term&44=$elem&8$elem& ;$term&8$elem&< $term&
$elem&44=$iden&8$n=m&
$iden&44=$letra&8$letra&$sec&
$sec&44=$letra&8$digito&8$digito&$sec&8$letra&$sec&
$letra&44= a828c83>>
$digito&44= (8)8*83>>
$n=m&44= $digito&8$digito&$n=m&
$term&,$elem&,$iden&,$letra&3>
$term&#(98:"$term&';
$term&44=$elem&#(;8<"$elem&';
$n=m&44=$digito&#$d?gito&';
$iden&44=$letra&#($letra&8$digito&"';
$elem&44=($iden&8$n=m&"
$letra&44=(a828c>>"
$d?gito&44=((8)8*>>"

Diagramas de fluo
5e%aso 6lase 7nterior
ex%
term
term ex%
term ex%
9
:
term
elem
elem term
elem term
;
<
Etc3>
identificador
letra
d?gito
letra
d?gito
secuencia
letra
letra secuencia
secuencia
Semntica
!a semntica descri"e el significado de
los s#m"olos$ pala"ras % frases de un
lenguae %a sea lenguae natural o
lenguae informtico

Ejem%los4

int @ector A)(BC

if (a$2" max=aC else max=2C

&ipos de semntica'

Semntica esttica

Semntica dinmica
Semntica

(emntica esttica

No est relacionado con el significado del


%rograma, est relacionado con las formas
@alidas>

Se las llama as? %orDue el anlisis %ara el


cEeDueo %uede Eacerse en com%ilacin>

!ara descri2ir la sintaxis F la semntica esttica


formalmente sir@en las denominadas gramticas
de atri2utos, in@entadas %or GnutE en )1.0>

Generalmente las gramticas sensi2les al


contexto resuel@en los as%ectos de la semntica
esttica>
Semntica

(emntica esttica : Gramtica de atri2utos

7 las construcciones del lenguaje se le asocia


informacin a tra@Hs de los llamados Iatri"utosJ
asociados a los s?m2olos de la gramtica
corres%ondiente

Kos @alores de los atri2utos se calculan mediante


las llamadas Iecuaciones o reglas semnticasJ
asociadas a las %roducciones gramaticales>

Ka e@aluacin de las reglas semnticas %uede4

Generar 6digo>

Lnsertar informacin en la a2la de S?m2olos>

5ealiMar el 6EeDueo Semntico>

Dar mensajes de error, etc>


Semntica

Kos atri2utos estn directamente relacionados


con los s?m2olos gramaticales (terminales F no
terminales"

Ka forma, general de ex%resar las gramticas con


atri2utos se escri2en en forma ta2ular> Ej4
5egla gramatical 5eglas semnticas
5egla ) Ecuaciones de atri2uto asociadas
> >
> >
5egla n Ecuaciones de atri2uto asociadas
Semntica

(emntica esttica : Gramtica de atri2utos

Ej> Gramtica sim%le %ara una declaracin de


@aria2le en 6> 7tri2uto at
5egla gramatical 5eglas semnticas
decl tipo lista)*ar lista)*ar+at , tipo+at
tipo int tipo+at , int
tipo float tipo+at , float
lista)*ar
-
id$ lista)*ar
.
/0adetipo(id+entrada$ lista)*ar
-
+at)
lista)*ar
.
+at , lista)*ar+at
lista)*ar id /0adetipo(id+entrada$ lista)*ar+at)
Semntica

(emntica dinmica>

Es la Due descri2e el efecto de ejecutar las


diferentes construcciones en el lenguaje de
%rogramacin>

Su efecto se descri2e durante la ejecucin del


%rograma>

Kos %rogramas solo se %ueden ejecutar si son


correctos %ara la sintxis F %ara la semntica
esttica>
Semntica

123mo se descri"e la semntica4

No es fcil

No existen Eerramientas estndar como en el


caso de la sintxis (diagramas sintcticos F
BNF"

NaF diferentes soluciones formales4

Semntica axiomtica

Semntica denotacional

Semntica o%eracional
Semntica

(emntica axiomtica

6onsidera al %rograma como Iuna m5uina


de estadosJ>

Ka notacin em%leada es el Iclculo de


predicadosJ>

Se desarroll %ara %ro2ar la correccin de los


%rogramas>

Kos constructores de un lenguajes de


%rogramacin se formaliMan descri2iendo
como su ejecucin %ro@oca un cam2io de
estado>
Semntica

(emntica axiomtica

On estado se descri2e con un %redicado Due descri2e


los @alores de las @aria2les en ese estado

Existe un estado anterior F un estado posterior a la


ejecucin del constructor>

6ada sentencia se %recede F se contin=a con una


ex%resin lgica Due descri2e las restricciones F
relaciones entre los datos>

!recondicin

!oscondicin
Ejem%lo4 a 2
r c
!recondicin4 #2 distinto de cero'
Sentencia funcin Due di@ide a %or 2
!ostcondicin4 #a=2;c9r F r$2'
Semntica

(emntica denotacional

Se 2asa en la teor?a de funciones recursi@as

Se diferencia de la axiomtica %or la forma Due


descri2e los estados, la axiomtica lo descri2e a
tra@Hs de los %redicados, la denotacional a
tra@Hs de funciones>

Se define una corres%ondencia entre los


constructores sintcticos F sus significados
!roduccin4 $N2in&44=(8)8$N2in& ( 8 $N2in& )
FN2in(("=( FN2in($N2in& ("= * ; FN2in($N2in&"
FN2in()"=) FN2in($N2in& )"= * ; FN2in($N2in&" 9 )
--6
FN2in($N2in&("
*; FN2in($N2in&)"
*;A*;FN2in()"9)B
*;A*;)9)B
*;A+B
7
Semntica

(emntica 8peracional

El significado de un %rograma se descri2e


mediante otro lenguaje de 2ajo ni@el
im%lementado so2re una mDuina a2stracta

Kos cam2ios Due se %roducen en el estado de la


mDuina cuando se ejecuta una sentencia del
lenguaje de %rogramacin definen su
significado

Es un mHtodo informal

Es el ms utiliMado en los li2ros de texto

!K<) fue el %rimero Due la utiliM


Semntica

(emntica 8peracional
Ejem%lo4
!enguaes 95uina a"stracta
for i 4= %ri to ul do i 4= %ri
2egin laMo if i & ul goto sal
>>>>>>>> >>>>>>>>>>>>
end i 4= i 9)
goto laMo
sal >>>>>>>>>>
!rocesamiento de un lenguaje
Lnter%retacin F traduccin

Kas com%utadoras ejecutan lenguajes


de 2ajo ni@el llamado Ilenguaje de
mDuinaJ>

On %oco de Eistoria3

!rogramar en cdigo de mDuina

Oso de cdigo mnemotHcnico (a2re@iatura con


el %ro%sito de la instruccin"> IKenguaje
Ensam2ladorJ F I!rograma Ensam2ladorJ

7%aricin de los IKenguajes de alto ni@elJ


SOM P)(, P)), P)+
SOM P)+, P)*, P)+
DLQ P)+, +, P)+
FLN
%rocesadores
0(x0. de Lntel
>data
msg4
>string RNello, SorldTUnR
len4
>long > : msg
>text
>glo2l Vstart
Vstart4
%usE Wlen
%usE Wmsg
%usE W)
mo@l W(x,, Xeax
call VsFscall
addl W)*, Xes%
%usE W(
mo@l W(x), Xeax
call VsFscall
VsFscall4
int W(x0(
ret
!rocesadores de
la familia
Motorola .0(((
start4
mo@e>l Pmsg,:(a/"
mo@e>Y P1,:(a/"
tra% P)
addD>l P.,a/
mo@e>Y P),:(a/"
tra% P)
addD>l P*,a/
clr :(a/"
tra% P)
msg4 dc>2 RNello,
SorldTR,)(,)+,(
!rocesamiento de un lenguaje
Lnter%retacin F traduccin

Z6mo los %rogramas escritos en


lenguajes de alto ni@el %ueden ser
ejecutados so2re una com%utadora
cuFo lenguaje es muF diferente F de
muF 2ajo ni@el[>

7lternati@as de traduccin4

:nterpretaci3n

2ompilaci3n
Lnter%retacin

:nt;rprete'

Kee,

7naliMa

Decodifica F

Ejecuta una a una las sentencias de un %rograma


escrito en un lenguaje de %rogramacin>

Ej4 Kis%, Smalltal\, Basic, !FtEon, etc>"

!or cada %osi2le accin EaF un su2%rograma


Due ejecuta esa accin>

Ka inter%retacin se realiMa llamando a estos


su2%rogramas en la secuencia adecuada>
Lnter%retacin

On intHr%rete ejecuta re%etidamente la


siguiente secuencia de acciones4

]2tiene la %rxima sentencia

Determina la accin a ejecutar

Ejecuta la accin
INTRPRET
E
E s
!rograma 5esultados
raduccin

Kos %rogramas escritos en un lenguaje


de alto ni@el se traducen a una @ersin
en lenguaje de mDuina antes de ser
ejecutados>
Kenguaje
fuente
Kenguaje
o2jeto
6]M!LK76L^N
raduccin

Ka traduccin lle@a @arios %asos>


Ej4 !asos Due se realiMan %ara traducir un
%rograma escrito en Fortran4

6om%ilado a assem2ler

Ensam2lado a cdigo
reu2ica2le

Kin\editado

6argado en la memoria
2ompilador
/ssem"ler
!in<)editor
!oader
raduccin

&ipos de traductores'

2ompilador

!enguae fuente' Kenguaje de alto ni@el

!enguae o"eto' 6ualDuier lenguaje de mDuina


de una mDuina real, o lenguaje assem2ler, o
alg=n lenguaje cercano a ellos

/ssem"ler

!enguae fuente' Kenguaje assem2ler

!enguae o"eto' 7lguna @ariedad de lenguaje


de mDuina
raduccin

!in<)editor

!enguae fuente' Mdulos en lenguaje de


mDuina en forma reu2ica2le

!enguae o"eto' Ona sim%le unidad en forma


reu2ica2le con todos los mdulos lin\editados
juntos>

!oader

!enguae fuente4 !rograma en forma reu2ica2le


con la ta2la de datos

!enguae o"eto' Kenguaje de mDuina (cdigo


ejecuta2le"
raduccin

En ciertos lenguajes como 6, se ejecuta


antes del com%ilador otro traductor
llamada =9acro)>rocesador o >re
>rocesador?

9acro' fragmento de texto fuente Due lle@a


un nom2re

En el %rograma se utiliMa el nom2re de la macro

El nom2re de la macro ser reem%laMada %or su


cdigo cuando se %rocesen las macros
raduccin

Eemplo lenguae 2'

6ontiene directi@as Due de2en resol@erse antes


de %asar a la com%ilacin

@include' Lnclusin de arcEi@os de texto, Ej4


Pinclude $stdio>E&

@define' 5em%laMa s?m2olos %or texto, Ej4


Pdefine !L +>),).

9acros' Funciones en:l?nea,


Ej4 P define max(x,F" ((x"&(F"[(x"4(F""

@ifdef' 6om%ilacin condicional>


raduccin

El preprocesador de 2 frente a una


macro'
Si se tiene la definicin siguiente
Pdefine max(x,F" x&F[x4F
` en el cdigo a%arece4
3
r = max(s,-"C
3>
El %re%rocesador Ear?a4
3>
r = s&-[s4-C
>reprocesador o macro)procesador'
!enguae fuente' Forma extendida de alg=n lenguaje de
alto ni@el (6 con macros"
!enguae o"eto' Forma estndar del mismo lenguaje>
raduccin

2omparaci3n entre &raductor e


:nt;rprete'

Forma en c3mo eecuta'

:nt;rprete'

Ejecuta el %rograma de entrada directamente

2ompilador'

!roduce un %rograma eDui@alente en lenguaje o2jeto

Forma en 5u; orden eecuta'

:nt;rprete'

Sigue el orden lgico de ejecucin

2ompilador'

Sigue el orden f?sico de las sentencias


raduccin

&iempo de eecuci3n'

:nt;rprete'

!or cada sentencia se realiMa el %roceso de


decodificacin %ara determinar las o%eraciones a
ejecutar F sus o%erandos>

Si la sentencia est en un %roceso iterati@o, se realiMar


la tarea tantas @eces como sea reDuerido

Ka @elocidad de %roceso se %uede @er afectada

2ompilador'

No re%etir laMos, se decodifica una sola @eM

Eficiencia'

:nt;rprete'

Ms lento en ejecucin

2ompilador'

Ms r%ido desde el %unto de @ista del Eard


raduccin

Espacio ocupado'

:nt;rprete'

]cu%a menos es%acio, cada sentencia se deja en la forma


original

2ompilador'

Ona sentencia %uede ocu%ar cientos de sentencias de


mDuina

Detecci3n de errores'

:nt;rprete'

Kas sentencias del cdigo fuente %ueden ser relacionadas


directamente con la Due se esta ejecutando>

2ompilador'

6ualDuier referencia al cdigo fuente se %ierde en el cdigo


o2jeto
raduccin

2om"inaci3n de am"as t;cnicas'

!os compiladores % los interpretes se


diferencian en la forma 5ue ellos reportan
los errores de eecuci3n+

7lgunos am2ientes de %rogramacin contienen


las dos @ersiones interpretaci3n %
compilaci3n>

OtiliMan el int;rprete en la eta%a de desarrollo,


facilitando el diagnstico de errores>

Kuego Due el %rograma Ea sido @alidado se


compila %ara generar cdigo mas eficiente>
raduccin

2om"inaci3n de am"as t;cnicas

8tro forma de com"inarlos'


traducci3n a un c3digo intermedio
5ue luego se interpretar+

Sir@e %ara generar c3digo porta"le, es decir,


cdigo fcil de transferir a diferentes
mDuinas>

Eemplos' aa@a, genera un cdigo intermedio


llamado I2FtecodesJ, Due luego es inter%retado
%or la mDuina cliente>
raduccin

2om"inaci3n de am"as t;cnicas'


raduccin
Lnter%retacin
FOENE
LNE5MEDL]
EaE6O7BKE
6om%iladores

7l com%ilar los %rogramas la ejecucin de los


mismos es ms r%ida> Ej> de %rogramas Due se
com%ilan4 6, 7da, !ascal, etc>

Kos com%iladores %ueden ejecutare en un solo


%aso o en dos %asos>

En am2os casos cum%len con @arias eta%as, las


%rinci%ales son

/nlisis

/nlisis l;xico ((canner)

/nlisis sintctico ( >arser)

/nlisis semntico ((emntica esttica)

(#ntesis

8ptimiAaci3n del c3digo

Generaci3n del c3digo


Generaci3n de
c3digo intermedio
6om%iladores

/nlisis del programa fuente

/nlisis l;xico ((canner)'

Es el Due lle@a mas tiem%o

Nace el anlisis a ni@el de %ala2ra

Di@ide el %rograma es sus elementos constituti@os4 identificadores,


delimitadores, s?m2olos es%eciales, n=meros, %ala2ras cla@e,
delimitadores, comentarios, etc>

7naliMa el ti%o de cada to\en

Filtra comentarios F se%aradores como4 es%acios en 2lanco,


ta2ulaciones, etc>

Genera errores si la entrada no coincide con ninguna categor?a


lHxica

6on@ierte a re%resentacin interna los n=meros en %unto fijo o


%unto flotante

!oner los identificadores en la ta2la de s?m2olos

5eem%laMa cada s?m2olo %or su entrada en la ta2la

El resultado de este %aso ser el descu2rimiento de los items


lHxicos o to\ens>
6om%iladores

/nlisis sintctico (>arser)'

El anlisis se realiMa a ni@el de sentencia>

Se identifican las estructurasC sentencias,


declaraciones, ex%resiones, etc> aFudndose con los
to\ens>

El analiMador sintctico se alterna con el anlisis


semntico> Osualmente se utiliMan tHcnicas 2asadas en
gramticas formales>

7%lica una gramtica %ara construir el r2ol sintctico


del %rograma>
6om%iladores

/nlisis semntica (semntica esttica)'

Es la fase medular

Es la mas im%ortante

Kas estructuras sintcticas reconocidas %or el analiMador


sintctico son %rocesadas F la estructura del cdigo
ejecuta2le toma forma>

Se realiMa la com%ro2acin de ti%os

Se agrega la informacin im%l?cita (@aria2les no


declaradas"

Se agrega a la ta2la de s?m2olos los descri%tores de


ti%os, etc> a la @eM Due se Eacen consultas %ara realiMar
com%ro2aciones>

Se Eacen las com%ro2aciones de nom2res> Ej4 toda


@aria2le de2e estar declarada>

Es el nexo entre el anlisis F la s?ntesis


6om%iladores

Generaci3n de c3digo intermedio'

6aracter?sticas de esta re%resentacin

De2e ser fcil de %roducir

De2e ser fcil de traducir al %rograma o2jeto


Ejem%lo4 On formato de cdigo intermedio es el c3digo de tres
direcciones>
Forma4 74= B o% 6, donde 7,B,6 son o%erandos F o% es un o%erador 2inario
Se %ermiten condicionales sim%les sim%les F saltos>
BCile (a >6) and ("<(aDE)F)) do a',"Da)-6G
K)4 if (a&(" goto K* K,4 t)4=2;a
goto K+ t*4=t):)(
K*4 t)4=a;, a4=t*
t*4=t):- goto K)
if (2 $ t*" goto K, K+4 33>
goto K+
6om%iladores

(#ntesis'

En esta eta%a se construFe el %rograma


ejecuta2le>

Se genera el cdigo necesario F se o%timiMa el


%rograma generado>

Si EaF traduccin se%arada de mdulos, es en


esta eta%a cuando se lin\edita>

Se realiMa el %roceso de o%timiMacin> ]%tati@o


6om%iladores

8ptimiAaci3n (eemplo)'
!osi2les o%timiMaciones locales4
b 6uando EaF dos saltos seguidos se %uede Duedar uno solo
!<E El ejem%lo anterior Duedar?a as?4
K)4 if (a$=(" goto K+ t)4=2;a
t)4=a;, t*4=t):)(
t*4=t):- a4=t*
if (2 &= t*" goto K+ goto K)
K+4 33>
b Eliminar ex%resiones comunes en fa@or de una sola ex%resin
a4=29c9d cuedar?a t)4=29c 24=t)9e
24=29c9e a4=t)9d
K)4 if (a&(" goto K*
goto K+
K*4 t)4=a;,
t*4=t):-
if (2 $ t*" goto K,
goto K+
K,4 t)4=2;a
t*4=t):)(
a4=t*
goto K)
K+4 33>
6om%iladores
>R8GR9/ FHEN&E
/N/!:I/D8R !EJ:28
289>H&/D8R/
8>&:9:I/2:8N
/N/!:I/D8R (:N&/2&:28
28D:G8 :N&ER9ED:8
28D:G8 DE 9/KH:N/
E
(
(E9LN&:2/ E(&/&:2/

You might also like