Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Traducción Dirigidapor Sintaxis

3,519 views

Published on

Explicación y ejemplo de traducción dirigida por sintáxis.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Traducción Dirigidapor Sintaxis

  1. 1. Traducción Dirigida por la Sintaxis Capítulo 5 Sección 5.1 Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
  2. 2. Traducción dirigida por la sintaxis <ul><li>Asocia información a la construcción del lenguaje </li></ul><ul><ul><li>Atributos en los símbolos de la gramática </li></ul></ul><ul><li>Definiciones dirigidas por la sintaxis </li></ul><ul><li>Esquemas de traducción </li></ul>
  3. 3. Proceso Cadena de entrada Arbol de análisis sintáctico Grafo de dependencias Orden de evaluación de las reglas semánticas
  4. 4. Definiciones dirigidas por la sintaxis - DDpS <ul><li>Ocultan detalles de la implementación </li></ul><ul><li>Generalizan la gramática </li></ul><ul><li>Símbolos tienen atributos </li></ul><ul><ul><li>Atributos representan cualquier cosa </li></ul></ul><ul><ul><li>Valor de atributo por regla semántica </li></ul></ul><ul><ul><li>Atributo sintetizado: a partir de los hijos </li></ul></ul><ul><ul><li>Atributo heredado: a partir de padre y hermanos </li></ul></ul>
  5. 5. Forma de DDpS <ul><li>Para cada producción A => α </li></ul><ul><ul><li>Reglas semánticas b = f(c 1 ,c 2 ,...,c k ) </li></ul></ul><ul><ul><li>b es atributo sintetizado de A </li></ul></ul><ul><ul><ul><li>c 1 ,c 2 ,...,c k son atributos de simbolos en la producción </li></ul></ul></ul><ul><ul><li>b es atributo heredado </li></ul></ul><ul><ul><ul><li>de algún símbolo del lado derecho (α) </li></ul></ul></ul><ul><ul><ul><li>c 1 ,c 2 ,...,c k son atributos de simbolos en la producción </li></ul></ul></ul>
  6. 6. Ejemplo calculadora <ul><li>Producciones </li></ul><ul><li>L => E n </li></ul><ul><li>E => E 1 + T </li></ul><ul><li>E => T </li></ul><ul><li>T => T 1 * F </li></ul><ul><li>T => F </li></ul><ul><li>F => (E) </li></ul><ul><li>F => dígito </li></ul><ul><li>Reglas semánticas </li></ul><ul><li>Print(E.val) </li></ul><ul><li>E.val = E 1 .val + T.val </li></ul><ul><li>E.val = T.val </li></ul><ul><li>T.val = T 1 .val * F.val </li></ul><ul><li>T.val = F.val </li></ul><ul><li>F.val = E.val </li></ul><ul><li>F.val = dígito .valex </li></ul>
  7. 7. Ejemplo declaración de tipos <ul><li>Producciones </li></ul><ul><li>D => T L </li></ul><ul><li>T => int </li></ul><ul><li>T => real </li></ul><ul><li>L => L 1 , id </li></ul><ul><li>L => id </li></ul><ul><li>Reglas semánticas </li></ul><ul><li>L.her = T.tipo </li></ul><ul><li>T.tipo = entero </li></ul><ul><li>T.tipo = real </li></ul><ul><li>L 1 .her = L.her </li></ul><ul><li>AgregarTipo( id .entrada,L.her) </li></ul><ul><li>AgregarTipo( id .entrada,L.her) </li></ul>

×