traducción dirigida por la sintaxis

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

Upload: lucita287

Post on 24-Jun-2015

964 views

Category:

Documents


1 download

DESCRIPTION

Traducción dirigida por la sintaxis

TRANSCRIPT

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