Traducción dirigida por la sintaxis

10
Traducción dirigida por la sintaxis Laboratorio de Compiladores 1, Universidad de San Carlos de Guatemala

description

Traducción dirigida por la sintaxis

Transcript of Traducción dirigida por la sintaxis

Page 1: Traducción dirigida por la sintaxis

Traducción dirigida por la sintaxis

Laboratorio de Compiladores 1, Universidad de San Carlos de

Guatemala

Page 2: Traducción 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: Traducción 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: Traducción 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: Traducción 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ánticas

S -> 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: Traducción dirigida por la sintaxis

Atributos

• Propiedades de los símbolos del lenguaje que almacenan contenidos relacionados con el significado de los símbolos a los que pertenecen.

• Se utiliza la notación símbolo.atributo• id.lexema– Var.valor– Var.direccion– Exp.codigo

Page 7: Traducción dirigida por la sintaxis

Tipos de AtributosAtributos 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: Traducción dirigida por la sintaxis

Tipos AtributosAtributos Heredados:Calculados con atributos en nodos padre y hermanos.Información descendente o de tránsito horizontalSe utilizan para transferir información entre reglas

Page 9: Traducción 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: Traducción 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