21
Gram´ aticas de Atributos Teor´ ıa de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Gram´ aticas de Atributos

Teor a de Lenguajes - — Departamento de Computación · Teor a de Lenguajes Facultad de Ciencias Exactas y Naturales ... Compiladores: Principios, t ecnicas y herramientas. Addison

  • Upload
    tranbao

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Gramaticas de AtributosTeorıa de Lenguajes

Facultad de Ciencias Exactas y NaturalesUniversidad de Buenos Aires

Gramaticas de Atributos

Etapas de un Compilador

AnalizadorLexico

AnalizadorSintactico(Parser)

...

Lexer:

Genera secuencia de tokens

Reporta errores lexicos

Parser:

Genera arbol de derivacion

Reporta errores sintacticos

Gramaticas de Atributos

Etapas de un Compilador

AnalizadorLexico

AnalizadorSintactico(Parser)

AnalizadorSemantico

Asocia informacion a la cadena de entrada

Reporta errores semanticos

Herramientas

Gramatica de Atributos (hoy)

Traduccion Dirigida por Sintaxis (TDS)

Gramaticas de Atributos

Gramatica de Atributos

Atributo: Propiedad que se asocia a los sımbolos no terminales.

Notacion: simbolo . nombre atributo

Tipados

Gramatica de Atributos

Gramatica Libre de Contexto extendida, con

Atributos en los no terminales.

Reglas semanticas asociadas a las producciones.

Gramaticas de Atributos

Gramatica de Atributos

Reglas Semanticas:

{A.a = f (B.b,C .c , ...)}

Asociadas a una produccion

A,B,C ∈ VN

a, b, c atributos asociados

f funcion. Computa el valor del atributo A.a en base al valorde otros atributos.Gramatica de Atributos: f no debe tener efectos colaterales

Gramaticas de Atributos

Gramatica de Atributos

Funciones:

IF(expr, val1, val2)

Evalua expr, devuelve val1 si es verdadero, y val2 si es falso.

CONDITION(expr)

Rechaza la cadena si expr es falso.

Las gramaticas de atributos son mas expresivas que las GLC.

Gramaticas de Atributos

Tipos de Atributos

Sintetizados: Su valor se calcula en base al valor de losatributos en los nodos hijos.Ejemplo: A→ BC {A.a = f1(B.b,C .c)}

Heredados: Su valor se calcula en base al valor de losatributos en los nodos hermanos, o padre.Ejemplo: A→ BC {B.val = f2(A.a,C .c)}

Gramaticas de Atributos

Tipos de Atributos

Todos los atributos son, o sintetizados, o heredados.

Ejercicios: siempre aclarar que tipo de atributo es.

Ningun atributo puede ser sintetizado en unaproduccion, y heredado en otra.

Gramaticas de Atributos

Grafo de Dependencias

Grafo dirigido, que muestra las dependencias entre losatributos para un determinado arbol de derivacion.

Para que los atributos puedan calcularse el grafo no debetener ciclos.

Implementacion de una Gramatica de Atributos:

1 Parsear la cadena y generar el arbol de derivacion.2 Calcular el grafo de dependencias.3 Elegir un ordenamiento de ese grafo.4 Recorrer el arbol en orden y calcular los valores.

Gramaticas de Atributos

Grafo de Dependencias

Gramaticas de Atributos eficientes:

S-atribuidas: Todos sus atributos son sintetizados.Se implementa con parser LR

L-atribuidas: Atributos sintetizados y heredados, pero si sonheredados, deben depender solamente de:

Los atributos que estan a su izquierda, en la produccion, oLos atributos heredados del padre.

Se implementa con parser recursivo descendente

Gramaticas de Atributos

Ejercicio 1

Sea la siguiente gramatica:

S → aS | bS | λ

Computar atributo que cuente el numero mayor de a-esconsecutivas.

Gramaticas de Atributos

Ejercicio 1 - Solucion

Atributos:

S.cantA int sintetizadoS.mayor int sintetizado

Gramatica:

S → λ {S .cantA = 0, S .mayor = 0}S1 → aS2 {IF (S2.cantA + 1 > S2.mayor ,S1.mayor = S2.cantA + 1,

S1.mayor = S2.mayor),

S1.cantA = S2.cantA + 1}S1 → bS2 {S1.cantA = 0, S1.mayor = S2.mayor}

Gramaticas de Atributos

Ejercicio 2

Sea la siguiente gramatica:

S → E (num)E → E + T | TT → T ∗ F | FF → num | (E ) | x

Sintetizar el valor de la expresion, reemplazando x por el numeroindicado entre parentesis.

Gramaticas de Atributos

Ejercicio 2 - Solucion

Atributos:

T.x int heredadoE.x int heredadoF.x int heredadoT.val int sintetizadoE.val int sintetizadoF.val int sintetizadoS.val int sintetizado

Gramaticas de Atributos

Ejercicio 2 - Solucion

Gramatica:

S → E (num) {E .x = num.val , S .val = E .val}E1 → E2 + T {E2.x = E1.x ,T .x = E1.x ,E1.val = E2.val + T .val}E → T {T .x = E .x ,E .val = T .val}T1 → T2 ∗ F {T2.x = T1.x ,F .x = T1.x ,T1.val = T2 ∗ F}T → F {F .x = T .x ,T .val = F .val}F → num {F .val = num.val}F → (E ) {E .x = F .x ,F .val = E .val}F → x {F .val = F .x}

Gramaticas de Atributos

Ejercicio 3

D → T id [num] = {LV }T → int | float

LV → num | LV , num

Validar:

1 Que la dimension sea de tipo int.

2 Que la dimension sea la declarada.

3 Que todos los elementos sean del tipo declarado.

Gramaticas de Atributos

Ejercicio 3 - Solucion

Atributos:

LV.cant int sintetizadoLV.tipo string heredadoT.tipo string sintetizado

Gramaticas de Atributos

Ejercicio 3 - Solucion

Gramatica:

D → T id [num] = {LV } {CONDITION(num.tipo = ”int”),

CONDITION(num.val = LV .cant),

LV .tipo = T .tipo}T → int {T .tipo = ”int”}T → float {T .tipo = ”float”}LV → num {LV .cant = 1,

CONDITION(LV .tipo = num.tipo)}LV1 → LV2, num {LV1.cant = LV2.cant + 1,

CONDITION(LV1.tipo = num.tipo),

LV2.tipo = LV1.tipo}

Gramaticas de Atributos

Ejercicio 3 - Otra Solucion

Atributos:

LV.cant int sintetizadoLV.tipo string sintetizadoT.tipo string sintetizado

Gramaticas de Atributos

Ejercicio 3 - Otra Solucion

Gramatica:

D → T id [num] = {LV } {CONDITION(num.tipo = ”int”),

CONDITION(num.val = LV .cant),

CONDITION(LV .tipo = T .tipo)}T → int {T .tipo = ”int”}T → float {T .tipo = ”float”}LV → num {LV .cant = 1, LV .tipo = num.tipo}LV1 → LV2, num {LV1.cant = LV2.cant + 1,

CONDITION(LV2.tipo = num.tipo),

LV1.tipo = LV2.tipo}

Gramaticas de Atributos

Bibliografıa

A. Aho, R. Sethi, J. Ullman. Compiladores: Principios, tecnicas yherramientas. Addison Wesley, 1990. (El Libro del Dragon)Capıtulo 5

Gramaticas de Atributos