Академический Документы
Профессиональный Документы
Культура Документы
Procesamiento de Lenguajes
Ejemplo 1 de traduccin
suma(a,mul(4,b))
E
E E + T
E T
T T * F
T F E a + mul(4,b)
T
F id
F num T a
T 4 * F b
F pari E pard
a
F 4 b
F id
a+4*b a
id 4
num
suma(a,mul(4,b))
G RAMTICA DE ATRIBUTOS
Ejemplo 2 de traduccin
a,b:integer
D
D T id L
T float
T int
L coma id L a
L T
integer
id L
,b
int
coma id b L
int a,b
a,b:integer
G RAMTICA DE ATRIBUTOS
R EGLA ACCIN SEMNTICA
D T id L D.trad := id.lexema||L.trad|| : ||T.trad
T float T.trad := real
T int T.trad := integer
L coma id L L.trad := , ||id.lexema||L1 .trad
L L.trad :=
E 13
E E + T
E T E 4
+ 5 T 12
T T * F
T F T 3
F id T 8 * 9 F 11
F num F 2
F pari E pard F 7 id 10
id 1
num 6
Ejemplo 3 de traduccin
a:integer;b:integer
D
D T id L
T float
T int
L coma id L integer
id a integer
T L
L ;b:integer
int
int a,b coma id b integer
L
a:integer;b:integer
G RAMTICA DE ATRIBUTOS
R EGLA ACCIN SEMNTICA
D T id L L.th := T.trad;
D.trad := id.lexema|| : ||T.trad||L.trad
T float T.trad := real
T int T.trad := integer
L coma id L L1 .th := L.th;
L.trad := ; ||id.lexema|| : ||L.th||L1 .trad
L L.trad :=
Grafo de dependencias
a:integer;b:integer
D
T
integer
id a
L
integer
;b:integer
int
coma id b integer
L
int a;int b
D
D L T
T real
int int
T integer L T
L L coma id int a;int b
L id integer
int coma id b
L
int a
a,b integer
a
int a;int b id
Tabla de smbolos
Ejemplo 5 de traduccin
En este ejemplo, el traductor no genera traduccin, pero debe
almacenar los smbolos en la tabla de smbolos:
N OMBRE T IPO D IRECCIN
a ENTERO 0
int a,b,c b ENTERO 2
c ENTERO 4
G RAMTICA DE ATRIBUTOS
R EGLA ACCIN SEMNTICA
D T id L L.th := T.trad; D.trad := id.lexema|| : ||T.trad||L.trad
T float T.trad := real
T int T.trad := integer
L coma id L L1 .th := L.th; L.trad := ; ||id.lexema|| : ||L.th||L1 .trad
L L.trad :=
Implementacin de ETDS
a+b-c+d sum(res(sum(a,b),c),d)
a+b-c res(sum(a,b),c)
res(sum(a,b),c)
E
-
E E op T E
sum(a,b) op T c
E T
T id id c
a +
T ( E ) E op T b
a
T id b
a+b-c
res(sum(a,b),c) a
id
a a
T E
res(sum(a,b),c)
a
id
E T E
E op T E
E op + b sum(a,b)
T id
T E
res(sum(a,b),c)
T ( E )
b
id
-
a+b-c op T c res(sum(a,b),c)
res(sum(a,b),c) E
res(sum(a,b),c)
c
id
Procesamiento de Lenguajes Tema 5: Traduccin dirigida por la sintaxis 28 / 35
Traduccin de expresiones aritmticas con ETDS (6)
El ETDS quedara:
E T {E.th := T.trad}E {E.trad := E.trad}
E op T {E10 .th := op.trad||(||E 0 .th||, ||T.trad||)}
E {E.trad := E10 .trad}
E {E.trad := E.th}
T id {T.trad := id.lexema}
T ( E ) {T.trad := E.trad}
S P
P procedure id ; L endproc ;
P function id : T ; L endfunc ;
L P L
L codigo
T integer
T real
Ejercicio 3 (1 de 2)
Dada la siguiente gramtica (que permite declarar clases anidadas y
sus mtodos para un determinado lenguaje orientado a objetos):
S C
C class id { B V }
B public : P
B
V private : P
V
P D P
P
D T id ( T id L )
D C
L , T id L
L
T int
T float