traduccion-dirigida-por-la-sintaxis

10

Click here to load reader

Transcript of traduccion-dirigida-por-la-sintaxis

Page 1: traduccion-dirigida-por-la-sintaxis

Traducción dirigida por la sintaxis

Laboratorio de Compiladores 1, Universidad de San Carlos de

Guatemala

Page 2: traduccion-dirigida-por-la-sintaxis

Definición dirigida por la sintaxis

En una definición dirigida por la sintáxis una gramática se aumenta con nuevas características:

A cada símbolo non terminal de la gramática se le asocian cero o mas atributos.

Un atributo queda caracterizado por un identificador o nombre y un tipo o clase.

A este nivel son atributos formales, en el sentido de que su realización se produce cuando el nodo del árbol es creado.

Page 3: traduccion-dirigida-por-la-sintaxis

Definición dirigida por la sintaxis

• A cada regla de producción A -> X1 X2 .. Xn se le asocian un conjunto de reglas de evaluación de los atributos o reglas semánticas que indican que el atributo en la parte izquierda de la regla semántica depende de los atributos que aparecen en la parte derecha de la regla.

• El atributo que aparece en la parte izquierda de la regla semántica puede estar asociado con un símbolo en la parte derecha de la regla de producción

Page 4: traduccion-dirigida-por-la-sintaxis

Principio de Traducción dirigida por la sintaxis

Se realizan en paralelo

• Análisis semántico

• Traducción

S -> L puntocomaL -> L coma id| TIPO id TIPO -> integer| string| char| float| double

L

Tipo id

L

idcoma

L

idcoma

S

puntocoma

Lo.tipo= tipo.valLo.Val =id

L.tipo= L.tipoL.Val =concat(id)

L.tipo= L.tipoL.Val =concat(id)

Cadena:Integer id1, id2, id3, id4;

Page 5: traduccion-dirigida-por-la-sintaxis

Gramáticas con Atributos• Gramática con atributos

– Cada símbolo de la gramática tiene atributos.

– Cada regla de producción tiene reglas semánticasS -> L puntocoma{Write(“Las variables declaradas son”, Lo.val, “del tipo”,Lo.tipo);}L -> L coma id{ Lo.tipo= L.tipo; Lo.val=concat(L.val,“,”,val(id));Write( Lo.tipo,” variable ”, val(id));}| TIPO id {Lo.tipo= TIPO.val; Lo.val=Val(id);Write( Lo.tipo,” variable ”,id);}TIPO -> integer { TIPO.val=“Integer”;}| string {TIPO.val=“String”; }| char {TIPO.val=“char”; }| float {TIPO.val=“float”; }| double {TIPO.val=“double”; }

Page 6: traduccion-dirigida-por-la-sintaxis

Atributos

• Propiedades de los símbolos del lenguaje quealmacenan contenidos relacionados con elsignificado de los símbolos a los quepertenecen.

• Se utiliza la notación símbolo.atributo

• id.lexema

– Var.valor

– Var.direccion

– Exp.codigo

Page 7: traduccion-dirigida-por-la-sintaxis

Tipos de Atributos

Atributos sintetizados

Se calculan a partir de atributos de nodos hijos.

– Se refieren a atributos del antecedente de la regla.

– La información asciende por el árbol.

Los atributos sintetizados lo son durante toda la gramática.

Los atributos de terminales son sintetizados

S -> L { write(“Cadena encontrada”, L.val);}L -> L , id {: Lo=concat(L.val,”,”, val(id); :}| id {: Lo.val=val(id); :}

Page 8: traduccion-dirigida-por-la-sintaxis

Tipos Atributos

Atributos Heredados:

Calculados con atributos en nodos padre y hermanos.

Información descendente o de tránsito horizontal

Se utilizan para transferir información entre reglas

Page 9: traduccion-dirigida-por-la-sintaxis

Hoja trabajo (Parejas)

1) Que es ambigüedad, recursividad y Que se debe hacer para quitar la ambigüedad y

recursividad?2) Utilizando atributos como cambiar el primero por el

ultimo?

Entrada:Uno, dos, tres, cuatro, cinco

Salida:Cinco, dos , tres, cuatro, uno

Page 10: traduccion-dirigida-por-la-sintaxis

S -> L{Write(Lo.ultimo,Lo.cadena,L.primero);}

L -> L coma id {Lo.primero=L.primero;Lo.cadena=concat(L.cadena,L.ultimo, “,”);Lo.ultimo= val(id);}| id { Lo.primero=val(id);Lo.ultimo=””;Lo.cadena=””;};

Entrada:Uno, dos, tres, cuatro, cinco

Salida:Cinco, dos , tres, cuatro, uno