SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
PROCESADORES DE LENGUAJES                                                                Cup y el análisis semántico – Diap. 1




                                Cup y el análisis semántico




Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                            Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                                                Cup y el análisis semántico – Diap. 2




                                                       Hasta ahora...



                                                             Analizador               Analizador
                                                               léxico                 sintáctico

            .txt                                              .flex                       .cup


       Fichero fuente                                  Lee lexemas, asocia a    Comprueba validez de la
          (tablas y                                   patrones, genera tokens      cadena de tokens
         consultas)




Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                            Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                                                 1
PROCESADORES DE LENGUAJES                                                                  Cup y el análisis semántico – Diap. 3




                                                      Desde ahora...


                                                                                       Analizador
                                                             Analizador                 sintáctico
                                                               léxico                       +
                                                                                       semántico
            .txt                                              .flex                         .cup


       Fichero fuente                                  Lee lexemas, asocia a     Comprueba validez de la
          (tablas y                                   patrones, genera tokens       cadena de tokens
         consultas)
                                                                                    Comprueba tipos y
                                                                                existencias, se ayuda de la
                                                                                     tabla de símbolos




Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                              Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                                                  Cup y el análisis semántico – Diap. 4




                                             Especificación Cup
       import ...;

       action code {: ... :}
       parser code {: ... :}
       init with {: ... :}
       scan with {: ... :}

       terminal ...;
       non terminal ...;

       precedence ...;

       gramática


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                              Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                                                   2
PROCESADORES DE LENGUAJES                                                         Cup y el análisis semántico – Diap. 5




                                             Especificación Cup
       import ...;                                           Importación de paquetes
                                                             necesarios para poder desarrollar
       action code {: ... :}                                 el código Java
       parser code {: ... :}
       init with {: ... :}
       scan with {: ... :}

       terminal ...;
       non terminal ...;

       precedence ...;

       gramática


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                     Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                                         Cup y el análisis semántico – Diap. 6




                                             Especificación Cup
       import ...;                                           Son áreas opcionales.
                                                             Action code: código que contiene
       action code {: ... :}                                 métodos auxiliares y variables
       parser code {: ... :}                                 empleados por el código
       init with {: ... :}                                   incrustado en la gramática, este
       scan with {: ... :}                                   código se incrusta en una clase
                                                             embebida del parser.
       terminal ...;                                         Parser code: código que flexibiliza
       non terminal ...;                                     el uso del parser, este código se
                                                             incrusta directamente en la clase
       precedence ...;                                       parser.

       gramática


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                     Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                                          3
PROCESADORES DE LENGUAJES                                                          Cup y el análisis semántico – Diap. 7




                                             Especificación Cup
       import ...;                                           Son áreas opcionales.
                                                             Init with: El parser ejecutará el
       action code {: ... :}                                 código aquí introducido antes de
       parser code {: ... :}                                 pedir el primer token.
       init with {: ... :}                                   Inicializaciones, instanciaciones...
       scan with {: ... :}                                   Scan with: código que devolverá
                                                             símbolos.
       terminal ...;
       non terminal ...;

       precedence ...;

       gramática


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                      Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                                          Cup y el análisis semántico – Diap. 8




                                             Especificación Cup
       import ...;                                           Área donde definir todos los
                                                             símbolos que aparecerán en la
       action code {: ... :}                                 gramática.
       parser code {: ... :}                                 Se les puede asignar un tipo
       init with {: ... :}                                   (clase) para ajustarlos a las
       scan with {: ... :}                                   necesidades del analizador.
                                                             Para evitar ambigüedades, se
       terminal ...;                                         deben definir precedencias.
       non terminal ...;

       precedence ...;

       gramática


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                      Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                                           4
PROCESADORES DE LENGUAJES                                                                  Cup y el análisis semántico – Diap. 9




                                             Especificación Cup
       import ...;                                                  Se define la especificación sintáctica
                                                                    y se incluyen los atributos y las
       action code {: ... :}                                        acciones semánticas que permiten
       parser code {: ... :}                                        manejar los símbolos leídos y realizar
                                                                    las acciones oportunas
       init with {: ... :}
                                                                    (comprobaciones, inserciones...)
       scan with {: ... :}                                          sobre la tabla de símbolos

       terminal ...;
       non terminal ...;                                            G.I.C. con atributos + A.Semánticas
                                                                    = Traductor dirigido por la sintaxis
       precedence ...;

       gramática


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                              Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                                                 Cup y el análisis semántico – Diap. 10




                                             Especificación Cup
       expr::= expr PLUS expr
               {: acción semántica :}

                                                                    -Uso de identificadores (¿declarados?)
                                   expr
                                                                    -Variables asignadas antes de usar
                                                                    -Índices de array dentro de rango válido
                                                                    -Operandos adecuados en expresiones
                                                                    -Invocación correcta de métodos
                                                                    -Tipo de valor de retorno adecuado en
                                                                    método
       expr                        PLUS                      expr   -...



Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                              Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                                                   5
PROCESADORES DE LENGUAJES                                      Cup y el análisis semántico – Diap. 11




                          Especificación Cup: gramática
       ...
       terminal      int, float, id, semicolon, comma;
       non terminal DECL, T, LID;
                                                int v1, x, indice;
       ...
       // Gramática
       ...
       DECL ::= T LID semicolon;
       T ::= int {: T.tipo = int :}
              | float {: T.tipo = float :} ;
       LID ::= id comma LID
              | id ;




Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.   Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                      Cup y el análisis semántico – Diap. 12




                          Especificación Cup: gramática
       ...
       terminal      int, float, id, semicolon, comma;
       non terminal DECL, LID;
       non terminal Simbolo T;                  int v1, x, indice;
       ...
       // Gramática
       ...
       DECL ::= T LID semicolon;
       T ::= int {: Simbolo miSimbolo=new Simbolo();
                     miSimbolo.setTipo(Simbolo.T_INT);
                     RESULT= miSimbolo; :}
              | float {:    Simbolo miSimbolo =new Simbolo();
                            miSimbolo.setTipo(Simbolo.T_FLOAT);
                            RESULT= miSimbolo; :} ;
       LID ::= id comma LID
              | id ;

Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.   Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                        6
PROCESADORES DE LENGUAJES                                      Cup y el análisis semántico – Diap. 13




                          Especificación Cup: gramática
       ...
       terminal      int, float, id, semicolon, comma;
       non terminal DECL, LID;
                                                int v1, x, indice;
       non terminal Simbolo T;
       ...
       // Gramática
       ...
       DECL ::= T LID semicolon;
       T ::= int {: ... :}
              | float {: ... :} ;
       LID ::= id comma LID {: LID.lista = LID.lista.add(id) :}
              | id {: LID.lista = nuevaLista(id) :} ;




Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.   Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                      Cup y el análisis semántico – Diap. 14




                          Especificación Cup: gramática
       ...
       terminal      int, float, semicolon, comma;
       terminal String id;
       non terminal DECL; non terminal ArrayList<String> LID;
       non terminal Simbolo T;
       ...                                      int v1, x, indice;
       // Gramática
       ...
       DECL ::= T LID semicolon;
       T ::= int {: ... :}
              | float {: ... :} ;
       LID ::= id:ident comma LID:l {: l.add(ident);RESULT = l;:}
          | id:ident {: ArrayList<String> lista=new
                                         ArrayList<String>();
                             lista.add(ident);
                             RESULT = lista; :} ;

Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.   Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                        7
PROCESADORES DE LENGUAJES                                          Cup y el análisis semántico – Diap. 15




                          Especificación Cup: gramática
       ...
       terminal      int, float, semicolon, comma;
       terminal String id;
       non terminal DECL; non terminal ArrayList LID;
       non terminal Simbolo T;            EJERCICIO
                                                     int v1, x, indice;
       ...                                Implementar la acción semántica:
       // Gramática                       - Comprobando que no hay repeticiones
       ...                                - Realizando inserción en tabla de símbolos

       DECL ::= T LID semicolon {: // Introducir en tabla de
                                   // símbolos realizando las
                                  // comprobaciones necesarias :};
       T ::= int {: ... :} | float {: ... :} ;
       LID ::= id:ident comma LID:l {: ... :}
              | id:ident {: ... :} ;


Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.       Antonio Pérez Carrasco. Curso 2008-2009




PROCESADORES DE LENGUAJES                                          Cup y el análisis semántico – Diap. 16




                          Especificación Cup: gramática
       ...
       terminal PLUS, MINUS, TIMES, DIV, AND, OR, CONCAT;
       non terminal      Simbolo     expr;
       ...
       // Gramática
       ...
       expr::= expr:e1 PLUS expr:e2
               {:
                 //...

                              :} | expr1:e1 AND expr:e2
                              {:
                                //...

                              :};

Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.       Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                            8
PROCESADORES DE LENGUAJES                                                   Cup y el análisis semántico – Diap. 17

       public class Simbolo
       {
         final int T_INT = 1;                                Clase “Simbolo.java”
         final int T_FLOAT = 2;
         ...
         int tipo;      // Entero, Float...
         int clase;     // Var. local, método, clase...

           public Simbolo()
           {
                  //...
           }

           public void setTipo(int valorTipo)
           {
             this.tipo=valorTipo;
           }

           public int getTipo()
           {
             return this.tipo;
           }
           ...
       }

Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas.                Antonio Pérez Carrasco. Curso 2008-2009




                                                                                                                     9

Más contenido relacionado

La actualidad más candente

modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software Brihany Rossell
 
Modelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datosModelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datosFernando Baculima
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
4.2 espacios de estados determinísticos y espacios no determinísticos.
4.2 espacios de estados determinísticos y espacios no determinísticos.4.2 espacios de estados determinísticos y espacios no determinísticos.
4.2 espacios de estados determinísticos y espacios no determinísticos.Jose Maldonado Cortes
 
Linea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo WatchLinea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo WatchEdisson Acosta
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareGustavo Cuen
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2Humano Terricola
 
Modelado del sistema
Modelado del sistemaModelado del sistema
Modelado del sistemaIsrael Rey
 
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTOUnidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTOGuillermo Hernandez Miranda
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosJosé Antonio Sandoval Acosta
 
Gestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyectoGestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyectoJair Valenz
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivasstarduslex
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazXavi Flores
 

La actualidad más candente (20)

modelos del proceso del software
 modelos del proceso del software  modelos del proceso del software
modelos del proceso del software
 
Modelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datosModelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datos
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
4.2 espacios de estados determinísticos y espacios no determinísticos.
4.2 espacios de estados determinísticos y espacios no determinísticos.4.2 espacios de estados determinísticos y espacios no determinísticos.
4.2 espacios de estados determinísticos y espacios no determinísticos.
 
Linea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo WatchLinea de Produccion de Software y Metodo Watch
Linea de Produccion de Software y Metodo Watch
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Analisis Semantico
Analisis Semantico Analisis Semantico
Analisis Semantico
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
Modelado del sistema
Modelado del sistemaModelado del sistema
Modelado del sistema
 
Analizador lexico
Analizador lexicoAnalizador lexico
Analizador lexico
 
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTOUnidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
Unidad 3 TÉCNICAS PARA EL ANALISIS DE REQUERIMIENTO
 
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negociosFundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
 
Gestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyectoGestión de proyectos de software - Tema 3: Planificación del proyecto
Gestión de proyectos de software - Tema 3: Planificación del proyecto
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 

Similar a Análisis Semántico con Cup

ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS Infomania pro
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semanticoInfomania pro
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfDavidErnestoT
 
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxActividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxYahirSnchezDjMix
 
diaposichap.pptx
diaposichap.pptxdiaposichap.pptx
diaposichap.pptxLuisSimn12
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoGermania Rodriguez
 
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ácticoangiepao1717
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoRaul Gomez
 
Analisissemantico 110519213337-phpapp01
Analisissemantico 110519213337-phpapp01Analisissemantico 110519213337-phpapp01
Analisissemantico 110519213337-phpapp01stephani salazar
 

Similar a Análisis Semántico con Cup (20)

investigacion.pdf
investigacion.pdfinvestigacion.pdf
investigacion.pdf
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semantico
 
lexico.pptx
lexico.pptxlexico.pptx
lexico.pptx
 
Manual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdfManual de Compiladores Léxico y Sintáctico.pdf
Manual de Compiladores Léxico y Sintáctico.pdf
 
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxActividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Lexicos.docx
Lexicos.docxLexicos.docx
Lexicos.docx
 
diaposichap.pptx
diaposichap.pptxdiaposichap.pptx
diaposichap.pptx
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintactico
 
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
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador Sintáctico
 
investigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdfinvestigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdf
 
Analisissemantico 110519213337-phpapp01
Analisissemantico 110519213337-phpapp01Analisissemantico 110519213337-phpapp01
Analisissemantico 110519213337-phpapp01
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
Análisis lexicográfico
Análisis lexicográficoAnálisis lexicográfico
Análisis lexicográfico
 

Más de LAUNASA NOVENO B

Más de LAUNASA NOVENO B (11)

Jlex Cup
Jlex CupJlex Cup
Jlex Cup
 
encriptacion
encriptacionencriptacion
encriptacion
 
encriptacion
encriptacionencriptacion
encriptacion
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
METODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓNMETODOS DE ENCRIPTACIÓN
METODOS DE ENCRIPTACIÓN
 
Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2Guía práctica de ANTLR 2.7.2
Guía práctica de ANTLR 2.7.2
 

Análisis Semántico con Cup

  • 1. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 1 Cup y el análisis semántico Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 2 Hasta ahora... Analizador Analizador léxico sintáctico .txt .flex .cup Fichero fuente Lee lexemas, asocia a Comprueba validez de la (tablas y patrones, genera tokens cadena de tokens consultas) Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 1
  • 2. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 3 Desde ahora... Analizador Analizador sintáctico léxico + semántico .txt .flex .cup Fichero fuente Lee lexemas, asocia a Comprueba validez de la (tablas y patrones, genera tokens cadena de tokens consultas) Comprueba tipos y existencias, se ayuda de la tabla de símbolos Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 4 Especificación Cup import ...; action code {: ... :} parser code {: ... :} init with {: ... :} scan with {: ... :} terminal ...; non terminal ...; precedence ...; gramática Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 2
  • 3. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 5 Especificación Cup import ...; Importación de paquetes necesarios para poder desarrollar action code {: ... :} el código Java parser code {: ... :} init with {: ... :} scan with {: ... :} terminal ...; non terminal ...; precedence ...; gramática Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 6 Especificación Cup import ...; Son áreas opcionales. Action code: código que contiene action code {: ... :} métodos auxiliares y variables parser code {: ... :} empleados por el código init with {: ... :} incrustado en la gramática, este scan with {: ... :} código se incrusta en una clase embebida del parser. terminal ...; Parser code: código que flexibiliza non terminal ...; el uso del parser, este código se incrusta directamente en la clase precedence ...; parser. gramática Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 3
  • 4. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 7 Especificación Cup import ...; Son áreas opcionales. Init with: El parser ejecutará el action code {: ... :} código aquí introducido antes de parser code {: ... :} pedir el primer token. init with {: ... :} Inicializaciones, instanciaciones... scan with {: ... :} Scan with: código que devolverá símbolos. terminal ...; non terminal ...; precedence ...; gramática Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 8 Especificación Cup import ...; Área donde definir todos los símbolos que aparecerán en la action code {: ... :} gramática. parser code {: ... :} Se les puede asignar un tipo init with {: ... :} (clase) para ajustarlos a las scan with {: ... :} necesidades del analizador. Para evitar ambigüedades, se terminal ...; deben definir precedencias. non terminal ...; precedence ...; gramática Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 4
  • 5. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 9 Especificación Cup import ...; Se define la especificación sintáctica y se incluyen los atributos y las action code {: ... :} acciones semánticas que permiten parser code {: ... :} manejar los símbolos leídos y realizar las acciones oportunas init with {: ... :} (comprobaciones, inserciones...) scan with {: ... :} sobre la tabla de símbolos terminal ...; non terminal ...; G.I.C. con atributos + A.Semánticas = Traductor dirigido por la sintaxis precedence ...; gramática Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 10 Especificación Cup expr::= expr PLUS expr {: acción semántica :} -Uso de identificadores (¿declarados?) expr -Variables asignadas antes de usar -Índices de array dentro de rango válido -Operandos adecuados en expresiones -Invocación correcta de métodos -Tipo de valor de retorno adecuado en método expr PLUS expr -... Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 5
  • 6. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 11 Especificación Cup: gramática ... terminal int, float, id, semicolon, comma; non terminal DECL, T, LID; int v1, x, indice; ... // Gramática ... DECL ::= T LID semicolon; T ::= int {: T.tipo = int :} | float {: T.tipo = float :} ; LID ::= id comma LID | id ; Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 12 Especificación Cup: gramática ... terminal int, float, id, semicolon, comma; non terminal DECL, LID; non terminal Simbolo T; int v1, x, indice; ... // Gramática ... DECL ::= T LID semicolon; T ::= int {: Simbolo miSimbolo=new Simbolo(); miSimbolo.setTipo(Simbolo.T_INT); RESULT= miSimbolo; :} | float {: Simbolo miSimbolo =new Simbolo(); miSimbolo.setTipo(Simbolo.T_FLOAT); RESULT= miSimbolo; :} ; LID ::= id comma LID | id ; Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 6
  • 7. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 13 Especificación Cup: gramática ... terminal int, float, id, semicolon, comma; non terminal DECL, LID; int v1, x, indice; non terminal Simbolo T; ... // Gramática ... DECL ::= T LID semicolon; T ::= int {: ... :} | float {: ... :} ; LID ::= id comma LID {: LID.lista = LID.lista.add(id) :} | id {: LID.lista = nuevaLista(id) :} ; Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 14 Especificación Cup: gramática ... terminal int, float, semicolon, comma; terminal String id; non terminal DECL; non terminal ArrayList<String> LID; non terminal Simbolo T; ... int v1, x, indice; // Gramática ... DECL ::= T LID semicolon; T ::= int {: ... :} | float {: ... :} ; LID ::= id:ident comma LID:l {: l.add(ident);RESULT = l;:} | id:ident {: ArrayList<String> lista=new ArrayList<String>(); lista.add(ident); RESULT = lista; :} ; Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 7
  • 8. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 15 Especificación Cup: gramática ... terminal int, float, semicolon, comma; terminal String id; non terminal DECL; non terminal ArrayList LID; non terminal Simbolo T; EJERCICIO int v1, x, indice; ... Implementar la acción semántica: // Gramática - Comprobando que no hay repeticiones ... - Realizando inserción en tabla de símbolos DECL ::= T LID semicolon {: // Introducir en tabla de // símbolos realizando las // comprobaciones necesarias :}; T ::= int {: ... :} | float {: ... :} ; LID ::= id:ident comma LID:l {: ... :} | id:ident {: ... :} ; Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 16 Especificación Cup: gramática ... terminal PLUS, MINUS, TIMES, DIV, AND, OR, CONCAT; non terminal Simbolo expr; ... // Gramática ... expr::= expr:e1 PLUS expr:e2 {: //... :} | expr1:e1 AND expr:e2 {: //... :}; Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 8
  • 9. PROCESADORES DE LENGUAJES Cup y el análisis semántico – Diap. 17 public class Simbolo { final int T_INT = 1; Clase “Simbolo.java” final int T_FLOAT = 2; ... int tipo; // Entero, Float... int clase; // Var. local, método, clase... public Simbolo() { //... } public void setTipo(int valorTipo) { this.tipo=valorTipo; } public int getTipo() { return this.tipo; } ... } Universidad Rey Juan Carlos, Área de Lenguajes y Sistemas. Antonio Pérez Carrasco. Curso 2008-2009 9