SlideShare una empresa de Scribd logo
1 de 10
Traducción dirigida por la sintaxis

     Laboratorio de Compiladores 1,
      Universidad de San Carlos de
               Guatemala
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.
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
Principio de Traducción dirigida por la
                      sintaxis S
Se realizan en paralelo                                          puntocoma
                                              L
• Análisis semántico                              L.tipo= L.tipo
                                                  L.Val =concat(id)
• Traducción                                        coma          id
                            L
                                L.tipo= L.tipo
                                L.Val =concat(id)               S -> L puntocoma
                                                    id          L -> L coma id
                  L               coma
                                                                | TIPO id
                   Lo.tipo= tipo.val                            TIPO -> integer
                   Lo.Val =id
              Tipo             id
                                                                | string
                                                                | char
            Cadena:                                             | float
            Integer id1, id2, id3, id4;                         | double
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”; }
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
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); :}
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
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
S -> L{                                     Entrada:
Write(Lo.ultimo,Lo.cadena,L.primero);       Uno, dos, tres, cuatro, cinco
}
                                            Salida:
                                            Cinco, dos , tres, cuatro, uno
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=””;
 };

Más contenido relacionado

La actualidad más candente

Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
josecuartas
 
Metodos De acceso
Metodos De accesoMetodos De acceso
Metodos De acceso
jjhlhdez
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
Darwin Durand
 
Modelo e r
Modelo e rModelo e r
Modelo e r
garci17
 
Clase 3 Modelo Entidad Relacion
Clase 3   Modelo Entidad   RelacionClase 3   Modelo Entidad   Relacion
Clase 3 Modelo Entidad Relacion
oswchavez
 

La actualidad más candente (20)

Tutorial de MySQL
Tutorial de MySQLTutorial de MySQL
Tutorial de MySQL
 
Llave primaria y llave foránea
Llave primaria y llave foráneaLlave primaria y llave foránea
Llave primaria y llave foránea
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
Ejemplo dfd
Ejemplo dfdEjemplo dfd
Ejemplo dfd
 
Tipos de usuario en una Base de Datos
Tipos de usuario en una Base de DatosTipos de usuario en una Base de Datos
Tipos de usuario en una Base de Datos
 
Indices en oracle
Indices en oracleIndices en oracle
Indices en oracle
 
TIPO DE DATOS EN ORACLE
TIPO DE DATOS EN ORACLETIPO DE DATOS EN ORACLE
TIPO DE DATOS EN ORACLE
 
Metodos De acceso
Metodos De accesoMetodos De acceso
Metodos De acceso
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Modelo e r
Modelo e rModelo e r
Modelo e r
 
Indices 1
Indices 1Indices 1
Indices 1
 
Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptx
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Ieee 830
Ieee 830Ieee 830
Ieee 830
 
Clase 3 Modelo Entidad Relacion
Clase 3   Modelo Entidad   RelacionClase 3   Modelo Entidad   Relacion
Clase 3 Modelo Entidad Relacion
 
Analisis y diseño diagrama de contexto
Analisis y diseño diagrama de contextoAnalisis y diseño diagrama de contexto
Analisis y diseño diagrama de contexto
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Técnicas de administración del planificador
Técnicas de administración del planificadorTécnicas de administración del planificador
Técnicas de administración del planificador
 
Rational rose
Rational roseRational rose
Rational rose
 

Destacado (12)

Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Compiladores unidad1
Compiladores unidad1Compiladores unidad1
Compiladores unidad1
 
Compiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo masCompiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo mas
 
Generador de codigo lenguajes de programacion
Generador de codigo lenguajes de programacionGenerador de codigo lenguajes de programacion
Generador de codigo lenguajes de programacion
 
Administrador de Tabla de Símbolos
Administrador de Tabla de SímbolosAdministrador de Tabla de Símbolos
Administrador de Tabla de Símbolos
 
TABLA DE SIMBOLOS
TABLA DE SIMBOLOSTABLA DE SIMBOLOS
TABLA DE SIMBOLOS
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintactico
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
 
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Diagrama de Flujo de Datos
Diagrama de Flujo de DatosDiagrama de Flujo de Datos
Diagrama de Flujo de Datos
 

Similar a traduccion-dirigida-por-la-sintaxis (11)

Analisis Semantico
Analisis Semantico Analisis Semantico
Analisis Semantico
 
Unidad i antecedentes
Unidad i antecedentesUnidad i antecedentes
Unidad i antecedentes
 
Unidad i antecedentes1
Unidad i antecedentes1Unidad i antecedentes1
Unidad i antecedentes1
 
Ejercicio De Analisis Semantico
Ejercicio De Analisis SemanticoEjercicio De Analisis Semantico
Ejercicio De Analisis Semantico
 
Expresiones logicas
Expresiones logicasExpresiones logicas
Expresiones logicas
 
Dp2
Dp2Dp2
Dp2
 
Download.php
Download.phpDownload.php
Download.php
 
Estructura sintactica de los lenguajes de programacion
Estructura sintactica de los lenguajes de programacionEstructura sintactica de los lenguajes de programacion
Estructura sintactica de los lenguajes de programacion
 
Modulo2a
Modulo2aModulo2a
Modulo2a
 
Algoritmica
AlgoritmicaAlgoritmica
Algoritmica
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 

traduccion-dirigida-por-la-sintaxis

  • 1. Traducción dirigida por la sintaxis Laboratorio de Compiladores 1, Universidad de San Carlos de Guatemala
  • 2. 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.
  • 3. 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
  • 4. Principio de Traducción dirigida por la sintaxis S Se realizan en paralelo puntocoma L • Análisis semántico L.tipo= L.tipo L.Val =concat(id) • Traducción coma id L L.tipo= L.tipo L.Val =concat(id) S -> L puntocoma id L -> L coma id L coma | TIPO id Lo.tipo= tipo.val TIPO -> integer Lo.Val =id Tipo id | string | char Cadena: | float Integer id1, id2, id3, id4; | double
  • 5. 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”; }
  • 6. 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
  • 7. 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); :}
  • 8. 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
  • 9. 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
  • 10. S -> L{ Entrada: Write(Lo.ultimo,Lo.cadena,L.primero); Uno, dos, tres, cuatro, cinco } Salida: Cinco, dos , tres, cuatro, uno 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=””; };