Área de Autómatas y Lenguajes
Traducción Dirigida por
la Sintáxis
Diseño y Construcción de Compiladores
2008

El significado de una sentencia de entrada está
relacionado con su estructura sintáctica.

Encierran aquellos formalismos utilizados para
especificar las traducciones para las construcciones de
los lenguajes de programación guiadas por una GLC.
◦ Se Asocian Atributos a los símbolos de la gramática.
◦ Se computan los valores de atributos por reglas semánticas
asociadas a las producciones de la gramática.
Traducción Dirigida por la Sintáxis
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
2

La evaluación de las reglas semánticas puede:
◦
◦
◦
◦
◦
Generar Código.
Insertar información en la Tabla de Símbolos.
Relizar el Chequeo Semántico.
Dar mensajes de error
Etc.
Traducción Dirigida por la Sintáxis
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
3

Existen dos notaciones para asociar información a
las reglas semánticas:

Definiciones Dirigidas por la Sintáxis: es una
especificación de alto nivel que oculta detalles de
implementación.

Esquemas de traducción: están más orientados a
la implementación porque indican el orden en el
cual se evalúan las reglas semánticas.
Traducción Dirigida por la Sintáxis
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
4

Gramáticas de Atributos

Definiciones Dirigidas por la Sintáxis.
◦ Definiciones S-Atribuidas
◦ Definiciones L-Atribuidas
◦ Implementación de las Definiciones Dirigidas por la Sintáxis:
 Grafo de Dependencias
 Definiciones S-Atribuidas
 Definiciones L-Atribuidas

Esquemas de Traduccion
Índice
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
5
Gramáticas de Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
6

Una Gramática de Atributos define la sintaxis y la
semántica de un lenguaje.

También define la información que se necesita
almacenar en el Árbol de Sintaxis Abstracta para
llevar a cabo el Análisis Semántico y la Generación
de Código.

Dicha información se almacena como atributos de
los nodos del Árbol de Sintáxis Abstracta.
Gramáticas de Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
7
Sea G=<N,T,P,S> una Gramática Libre de Contexto.
G es una Gramática de Atributos (GA) si:

Cada X  N  T está asociado con dos conjuntos disjuntos, H(X), el
conjunto de los atributos hereddos y S(X) el conjunto de los atributos
sintetizados. X  N  T.

El conjunto de atributos de G es Atr= H  S. Donde H= X  N H(X), S= X
 N  T S(X).

X0 X1X2….Xm  P y aj  Atr(Xi), 0  i  m, entonces Xi.aj es el atributo aj
de Xi y Dxi,aj es el dominio de valores de Xi.aj.

Una regla semántica asociada con X0 X1X2….Xm  P es de la forma
Xi.aj=f(b1j1,…..,bkjk), 0  jl  m, 0  i  m, donde cada bljl  Atr(Xjl).
Gramáticas de Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
8
Atributo Sintetizado: Un atributo a es sintetizado
si, dada una regla de una gramática AX1X2….Xn
la ecuación asociada con a es de la forma:
A.a=f(X1.a1,….X1.ak,….,Xn.a1,…Xn.ak).
En otras palabras a es un atributo sintetizado si su
valor depende de los valores de atributos de sus
hijos.
X0
X1
Xi
Xn
Atributos Sintetizados
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
9

Atributo Heredado: Un atributo que no es
sintetizado es un atributo heredado. En otras
palabras un atributo heredado es aquel cuyo
valor de atributo está definido en términos de los
valores de atributos del padre o de sus
hermanos.
X0
X1
Xi
Xn
Atributos Heredados
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
10
Dada la siguiente gramática G1:
a. NRO DIG | NRO DIG
b. DIG 0|1|2|3|4|5|6|7|8|9
Calcular el valor de los números generados por G
usando un atributo sintetizado val.
Ejemplos de Gramáticas de
Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
11
La siguiente gramática expresa declaraciones en
una sintaxis similar a la usada por el lenguaje C:
G2:
a. DECL  TYPE VAR-LIST
b. TYPE  INT | FLOAT
c. VAR-LIST  ID, VAR-LIST | ID
Usando un atributo heredado determine el tipo de
los identificadores
Ejemplos de Gramáticas de
Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
12
Ejercicio: La siguiente gramática permite expresar
números en decimal y octal:
G3:
a.
b.
c.
d.
BNRONRO B
B O|D
NRO NRO DIG | DIG
DIG  0|1|2|3|4|5|6|7|8|9
Defina los atributos y reglas semánticas
necesarias para calcular el valor del número.
Ejemplos de Gramáticas de
Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
13
Definiciones Dirigidas por la
Sintáxis
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
14
DDS: Son Gramáticas de Atributos en las cuales
no se especifica el orden de evaluación de las
reglas semánticas.
Las gramáticas de atributos G1 y G2 son
ejemplos de definiciones dirigidas por la sintaxis.
DDS
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
15

Cada producción A está asociada con un
conjunto de reglas semánticas de la foma:
b=f(c1,c2,...,ck)
donde f es una función y

b es un atributo Sintetizado de A y c1,c2,...,ck son
atributos de los símbolos en A, o

b es un atributo Heredado de un símbolo de la
gramática en , y c1,c2,...,ck son atributos de los
símbolos de la gramática en  o atributos de A.
DDS-Formato
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
16

Se asume que los símbolos terminales tienen
atributos sintetizados proporcionados por el
Analizador Lexicográfico.

Las llamadas a procedimientos definen valores
de atributos sintetizados ficticios (Dummy) del
no terminal del lado izquierdo de la producción.
DDS
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
17

Si en una DDS el orden de evaluación de los
atributos no esta especificado entonces como
se realiza la evaluación de los atributos?

Respuesta:
◦ Utilizando un grafo de dependencias.
DDS-Evaluación de Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
18

La implementación de una DDS consiste
en encontrar un orden de evaluación de
los atributos.
◦ Cada atributo tiene que estar
cuando la computación se realiza.
disponible
DDS-Evaluación de Atributos
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
19

Un Grafo de Dependencia muestra las interdependencias
entre los atributos de varios nodos en un Árbol de Parse.
◦ Hay un nodo para cada atributo.
◦ Si un atributo b depende de un atributo c hay un arco desde el nodo
c al nodo b.

Regla de Dependencia: Si un atributo b, en el nodo n, en un
árbol de derivación depende del atributo c luego la regla
semántica que define a b se debe evaluar después de la
regla semántica que define a c.

La interdependencia entre atributos heredados y sintetizados
se puede dibujar como un grafo dirigido. Este grafo se
conoce con el nombre de Grafo de Dependencias.
DDS-Grafo de Dependencias
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
20
Para cada nodo n el el árbol Hacer
Para cada atributo a del simbolo de G hacer
Construir un nodo en el grafo de dependencia
Fin Para
Fin Para
Para cada nodo n el el árbol Hacer
Para cada regla semántica b=f(c1,…,ck) asociada con la
producción usada en el nodo n Hacer
Para i=1 hasta k Hacer
Construir un arco desde ci hacia el nodo b
Fin Para
Fin Para
Fin Para
DDS-Grafo de Dependencias
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
21
Gramática G3
N
Prod.
R. Sem.
1
NRO1 NRO2 DIG
{NRO1.val=NRO2.val+DIG.val}
2
NRO DIG
{NRO.val=DIG.val}
3
DIG 0
{DIG.val=0}
4
…….
……
Grafo de Dependencias para la Producción 1
NRO1.val
DIG.val
NRO2.val
Grafo de Dependendia - Ejemplo
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
22
Grafo de Dependencias para la Cadena 345
NRO.val
NRO.val
NRO.val
DIG.val
DIG.val
DIG.val
Grafo de Dependencias
Árbol de Parse
Grafo de Dependendia - Ejemplo
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
23

Construir el árbol de parsing para la entrada x.

Construir el Grafo de Dependencias.

Construir el Ordenamiento Topológico.

Evaluar las reglas semánticas en el orden
indicado por el Ordenamiento Topológico.
DDS: Grafo de DependenciasOrden de Evaluación
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
24
Ejercicio: Construir Grafos de Dependencias
para las Gramáticas G1 y G2 para diferentes
cadenas aceptadas por las mismas.
Grafo de Dependendia - Ejemplo
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
25


Se utiliza un Ordenamiento Topológico
Algoritmo Destructivo (Sólo para propósito pedagógico).
Algoritmo: Ordenamiento Topológico(G,T)
Entrada:
G grafo de dependencias.
Salida:
T el ordenamiento topológico de G.
Open el conjunto de nodos a tratar.
Open←minimales(G);
Mientras Open Hacer
Sea x  Open
Eliminar x de G
Insertar x en T
Open ← Open – {x}
Open ← minimales(G)
Fin Mientras
Retornar T
Grafo de Dependendia – Orden de Evaluación
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
26
b
a
b
g
c
g
g
c
c
f
d
e
a
c
f
d
a
g
f
e
d
b
a
e
f
e
a
d
Completar el ejemplo!
Grafo de Dependendia – Orden
de Evaluación
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
27
De el orden de evaluación del siguiente grafo de dependencias
NRO.val
NRO.val
NRO.val
DIG.val
DIG.val
DIG.val
Grafo de Dependendia – Orden
de Evaluación
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
28
Ejercicio: Elaborar un algoritmo que permita
extraer un Ordenamiento Topológico sin destruir
el grafo subyacente.
Ejercicio: Elaborar un algoritmo no destructivo
que permita extraer un Ordenamiento Topológico
Inverso.
Ejercicios
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
29

Problemas con el método:
◦ Falla si el grafo de dependencias tiene un ciclo.
◦ Consume tiempo debido a la construcción del grafo
de dependencias.

Solución:
◦ Diseñar la DDS de tal forma que los atributos se
puedan evaluar en un orden fijo evitando la
construcción del grafo de dependencias (este método
es el utilizado por muchos compiladores).
Grafo de Dependencias-Orden
de Evaluación
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
30

En las DDS no circulares se puede establecer
un orden de evaluación fijo en tiempo de
construcción del compilador.

Hay dos clases importantes de definiciones no
circulares:
◦ S-Atribuidas
◦ L-Atribuidas
DDS
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
31
DDS S-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
32

DDS S-Atribuida: Es una DDS que sólo utiliza
atributos sintetizados.

Esta clase de DDS es interesante porque los
valores de atributo pueden ser obtenidos a
través de un barrido Post Orden del Árbol de
Parse.
DDS S-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
33
Ejercicio: Determine Cuáles de las GA
presentadas previamente son DDS S-Atribuidas?
DDS S-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
34

Los atributos sintetizados se pueden evaluar usando un
parser bottom-up cuando se analiza la cadena de
entrada evitando la construcción del grafo de
dependencias.

El parser mantiene los valores de los atributos
sintetizados en su pila.

Cuando se realiza una reducción A, el atributo para A
se calcula a partir de los atributos de  que se
encuentran en la pila.

De esta manera una DDS S-Atribuida se puede
implementar extendiendo la pila de un parser LR.
DDS S-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
35
• Se incorporan campos extras a la pila para mantener los valores
de los atributos sintetizados.
• Por ejemplo si se está trabajando con un solo atributo
sintetizado la pila tiene la siguiente forma
Estado Valor
Z
Z.x
Y
Y.x
X
X.x
……
……
• El tope de la pila se mantiene con un puntero top.
• Antes de que la reducción AXYZ se realize, se calcula el
atributo sintetizado de A:
A.a=f(val[top],val[top-1],val[top-2])
DDS S-Atribuida Evaluación
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
36
Ejercicio: Utilice la gramática G3 para evaluar
la cadena 345 usando la aproximación
propuesta para las gramáticas S-Atribuidas.
Muestre el contenido de la pila.
DDS S-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
37
DDS L-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
38

Son útiles para expresar la dependencia de una
construcción en el contexto en el cual aparece.

A diferencia de los atributos sintetizados el
orden en el cual aparecen los atributos
heredados es importante.

Es siempre posible reescribir la DDS con sólo
atributos sintetizados. No obstante es más
natural usar atributos heredados y sintetizados.
DDS L-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
39
Definición: Una DDS es L-Atribuida si cada
atributo heredado de Xj, 1  j  n, en el lado
derecho de una producción del tipo X0X1…Xj1Xj….Xn depende solo de:

Los atributos sintetizados de X1…Xj-1, a la
izquierda de Xj.

Los atributos heredados de X0.
DDS L-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
40

Importante:
◦ Toda definición S-Atribuida es L-Atribuida.
◦ Teorema: Los atributos heredados en DDS LAtribuidas se pueden computar por un recorrido PreOrden del árbol de parse.
◦ Las definiciones L-Atribuidas cubren todas las
traducciones que se pueden realizar sin construir
explicitamente el árbol de parse.
DDS L-Atribuida
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
41

Las DDS L-Atribuidas son una clase de DDS
cuyos atributos siempre se pueden evaluar por
un recorrido del árbol de parse.

El procedimiento mezcla los recorridos Post
Orden (sintetizado) y Pre-Orden (heredado).
Evaluación de DDS L-Atribuidas
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
42
Algoritmo: L-Eval (n)
Entrada N: un nodo del árbol de parse anotado.
Salida: La evaluación de atributos
Comenzar
Para cada hijo m de n, desde izquierda a
derecha Hacer
Evaluar los atributos heredados de m;
L-Eval(m)
Fin Para
Evaluar los atributos sintetizados de n
Fin
Evaluación de DDS L-Atribuidas
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
43
Esquemas de Traducción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
44
Los esquemas de traducción están más orientados a
la implementación que las DDS porque indican el
orden de evaluación de las reglas semánticas.
Definición: Un ET es una gramática libre del
contexto que cumple con las siguientes condiciones:
• Los atributos están asociados con los símbolos de la
gramática.
• Las acciones semánticas están encerradas entre { y } y
están embebidas dentro del lado derecho de las
producciones.
Esquemas de Traducción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
45

Los ET pueden tener atributos sintetizados y
heredados.

Las acciones semánticas son tratadas como
símbolos terminales

Los esquemas de traducción son útiles para
evaluar definiciones L-Atribuidas en tiempo de
parsing.
Esquemas de Traducción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
46
N. G. L-Attr
N.
ET para G
1
DT L
1
DT{L.in=T.type} L
2
Tint
2
Tint {T.tipo=integer}
3
Treal
3
Treal {T.tipo=real}
4
L1L2,id
4
L1 {L1.in=L.in} L2,id{addtype(id.entry,L.in}
5
Lid
5
L id{addtype(id.entry, L.in}
Esquemas de Traducción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
47
Ejercicio: Construir el Árbol de Parse para la
siguiente declaración:
Real id1, id2, id3.
Ejercicio: Evaluar el ET.
Esquemas de Traducción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
48

1er Caso: Atributos Sintetizados: se puede construir un
ET creando una acción semántica que es una
asignación y se ubica esta acción al final de la parte
derecha de la producción.
Producción
Regla Semántica
1) TE + T1
T.val= E.val + T1.val
2) NRO1 NRO2 DIG
NRO1=NRO2.val * 10 + DIG.val
3) DIG0
DIG.val=0
ET Diseño
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
49

2do Caso: Atributos heredados y sintetizados.
◦ Un Atributo heredado por un símbolo de la parte derecha de una
producción se debe calcular en una acción que se realice antes
de dicho símbolo.
Producción
Producción con Acciones
X0X1…Xj-1Xj…Xn
X0X1…Xj-1 {Xj.h}Xj…Xn

X0X1…Xj-1Xj…Xn
X0X1…Xj-1Xj{Xj.h}…..Xn

DT LID
D T{LID.t=T.tipo} LID

ET Diseño
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
50

2do Caso: Atributos heredados y sintetizados.
◦ Una acción no debe referenciar a un atributo sintetizado de un
símbolo de la gramática que esté a la derecha de dicho símbolo.
Producción
Producción con Acciones
X0X1…Xj-1{Acción}Xj…Xn
Acción: no hace ref. a un atributo calculado a la derecha de Xj
ET Diseño
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
51

2do Caso: Atributos heredados y sintetizados.
◦ Acciones que calculen atributos sintetizados para el símbolo no
terminal de la parte izquierda de una producción deben ser
ubicados al final de la parte derecha de la producción.
Producción
Regla Semántica
1) TE + T1
T.val= E.val + T1.val
2) NRO1 NRO2 DIG
NRO1=NRO2.val * 10 + DIG.val
3) DIG0
DIG.val=0
ET Diseño
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
52

Entrada: Un esquema de traducción dirigido por la sintaxis con la
gramática subyacente LL(k) fuerte.

Salida: Código para un traductor dirigido por la sintaxis.

Método: La técnica propuesta es una modificación al método de
construcción de parsers descentes recursivos vistos anteriormente.

 A  N, construir una función asociada pero teniendo un
parámetro formal para cada atributo heredado por A y que retorne
los valores de los atributos sintetizados de A. El cuerpo de la
función deberá contener una variable local para cada atributo de
cada símbolo de la gramática que aparezca en las producciones de
A.
ET Técnica de Construcción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
53

Como sucede con el método clásico el código para el no terminal A decide
que producción usar basado en el lookahead.

El código asociado con cada producción hace lo siguiente, considerando
los tokens, los no teminales y acciones en la parte derecha de una
producción de izquierda a derecha:

Para el token x con atributo sintetizado x.val se salva su valor en la
variable local declarada para x.val. Luego, se llama al match del símbolo
y se obtiene el próximo token.

Para el no terminal B, se genera una asignación c:=B(b1,b2,...,bn)
donde b1,b2,...,bn son las variables para los atributos heredados de B y
c es la variable para el atributo sintetizado de B.

Para una acción, copiar el código en el parser, reemplazando cada
referencia a un atributo por la variable local para tal atributo.
ET Técnica de Construcción
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
54
Aplicaciones
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
55

Una aplicación científica o industrial se puede estudiar a
partir de las componentes estáticas que utilizan, por
ejemplo: Tipos de datos, Registros, Variables,
Constantes, Funciones, etc.

Los temás vistos en esta clase se pueden utilizar para
extraer esta información y dejarla disponible para que el
usuario tenga rápido acceso a ella en el código fuente
del programa.

En otras palabras se pueden usar las DDS o ET para
extraer la información antes mencionada desde el
código fuente.
Análisis Estático
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
56

Un visualizador de los elementos estáticos
de un sistema.
Análisis Estático
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
57

La información estática es importante. No obstante
conocer el comportamiento del programa puede ayudar
a la tarea de simplificar la inspección del código.

El Análisis Dinámico se interesa por conocer cuales
son las componentes del sistema bajo estudio utilizadas
para llevar a cabo una funcionalidad específica.

Una de las formas de llevar a cabo esta tarea consiste
en “Instrumentar el Código Fuente”. Esto significa:
“Insertar sentencias dentro del código fuente del
sistema que posibiliten la identificación de las
componentes utilizadas”.
Análisis Dinámico
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
58
int f(int x, int y)
{
int r;
r=2*x + 3*y
return r;
}
Int main()
{
int f(int x, int y)
{
int r;
printf(“Entra: f”);
r=2*r+3*y;
printf(“Sale:f”);
}
int main()
{
printf(“ENTRA main”);
f(2,3);
printf(“SALE main”);
f(2,3);
}
}
La ejecución del sistema de la derecha informará que función ejecutó el sistema.
Luego Ud. Puede almacenar esas trazas de ejecución para obtener conclusiones acerca del
funcionamiento del sistema.
Se anima Ud. a construir un DDS o un ET que logre este efecto para la gramática proporcionada por la
materia?
Análisis Dinámico
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
59

Vista de componentes recuperadas con Análisis
Dinámico.
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
60

Una de las formas de estudiar sistemas es representar
gráficamente algunas de sus características.

Para alcanzar este objetivo se necesita extraer
información del código fuente y luego diseñar una vista
de esa información.

Por ejemplo, una vista clásica es el grafo de funciones.
Dicho grafo se define de la siguiente manera:
◦ G=(P;E)
 P{x/ x es una función del sistema}
 E={(x,y) / xP  y P  x llama a y}
Visualización de Software
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
61
El grafo de funciones se puede extraer usando un ET.
 Un ejemplo de una visualización innovadora de esta
estructura es la siguiente

Visualización de Software
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
62

Otra forma de presentar la relación llamador-llamado entre las
funciones del sistema.
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
63

Las DDS o ET de traducción se pueden utilizar
para desarrollar software de aplicación.

Un ejemplo de esto será propocionado para su
lectura.
Sistemas
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
64
A
B
C
X2
3
1
1
2
X1
E
0
4
Y
Software Industrial
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
65

Compilers Principles, Techniques and Tools. Aho, Setti y Ullman.

Compiler Desing. Reinhard Wilhelm y Dieter Maurer.

Compiler Construction: Principles and Practice. Kenneth C. Louden.

Compiler Construction. Niklaus Wirth.

LISS, A linguagem eo ambiente de programação. Trabajo de fin de
carrera en la UM.

Implementação do WebApp Viewer: Uma Ferramenta para
compreender aplicações Web. Trabajo de fin de carrera en la UM.
Bibliografía
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
66
Muchas Gracias por su atención!
Diseño y Construcción de Compiladores
2008
Compiladores 2008 - Traducción
Dirigida por la Sintáxis
67
Descargar

Traducción Dirigida por la Sintáxis