Intaroduccion a java

Páginas: 39 (9694 palabras) Publicado: 29 de enero de 2012
Compiladores e Intérpretes

Una introducción al generador JavaCC

José Gabriel Pérez Díez Departamento L.P.S.I. Escuela Universitaria de Informática Universidad Politécnica de Madrid

Octubre 2008

1

Contenido

Principios básicos del generador JavaCC
Descripción inicial Obtención de un analizador léxico-sintáctico Ejemplo de presentación Analizadores generados

2 2 2 2 4 5 5 6 710 14 15 15 17 20 23 24 25 26 29 33 34

Forma de una especificación JavaCC
Sección de opciones Sección de ejecución Sección de sintaxis Sección de lexicografía

Tareas asociadas a la estructura sintáctica
Bloque para un símbolo Acciones sintácticas Valor comunicado por un método

Comunicación entre los analizadores léxico y sintáctico Tareas asociadas a las piezas sintácticas
Acciónligada a una pieza sintáctica Bloque de declaraciones lexicográficas Declaraciones lexicográficas predefinidas Acción lexicográfica común

A modo de recapitulación Precisiones sobre el analizador sintáctico generado

2



Principios básicos del generador JavaCC

Descripción inicial El generador JavaCC (Java Compiler Compiler) es una herramienta para generar programas escritos en lenguajeJava; acepta como entrada una especificación de un determinado lenguaje y produce como salida un analizador para ese lenguaje. En la manera más simple de funcionamiento, la especificación proporcionada define las características sintácticas y lexicográficas de un lenguaje y se genera un analizador léxicosintáctico del lenguaje especificado; pero también es posible completar una especificaciónléxico-sintáctica con la inclusión adecuada de código para que el programa generado llegue a ser un analizador completo del lenguaje.


Obtención de un analizador léxico-sintáctico



Pasos para la generación del analizador
1.- Edición de la especificación (editor de texto plano) vi | edit |· · · NombreFichero.jj (el nombre del fichero puede tener cualquier extensión; suele usarse .jj) 2.-Ejecución del generador javacc NombreFichero.jj Si el nombre elegido para la especificación es NombreDeLaEspecif (más adelante se indica la manera de dar un nombre a la especificación), como resultado de la generación se obtiene (además de otros ficheros auxiliares) el fichero NombreDeLaEspecif.java 3.- Compilación del analizador generado javac NombreDeLaEspecif.java Como resultado de la compilaciónse obtiene (además de otras clases auxiliares) el fichero NombreDeLaEspecif.class



Ejecución del analizador generado

Si el nombre del fichero donde se encuentra el texto fuente (escrito en el lenguaje para el que se ha generado el analizador) que se pretende analizar es Programa.len java NombreDeLaEspecif < Programa.len Si se desea que los resultados del análisis, en vez de presentarsepor pantalla, queden grabados en un fichero de nombre Salida.dat java NombreDeLaEspecif < Programa.len > Salida.dat


Ejemplo de presentación



Descripción del lenguaje

El lenguaje L está formado por las expresiones en las que pueden aparecer: - variables - constantes - operadores + y * Las variables son nombres formados por una única letra (minúscula o mayúscula); las constantes sonnúmeros enteros de una o más cifras. El espacio y el tabulador pueden estar presentes, pero no tienen ningún

3 significado; los finales de línea tampoco son significativos (una expresión puede codificarse ocupando una o más líneas). La sintaxis de las expresiones se especifica mediante la siguiente gramática: ::= ::=

{

+

}

{

*

}

::= variable | constante | ( )
•Especificación léxico-sintáctica codificada con la notación JavaCC

Una manera de escribir la especificación (para la que se ha elegido el nombre ExprMin) de forma que sea aceptada por el generador es: options { Ignore_Case = true; }

PARSER_BEGIN (ExprMin) public class ExprMin { public static void main (String[] argum) throws ParseException { ExprMin anLexSint = new ExprMin (System.in);...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Java
  • Java
  • Java
  • java
  • JAVA
  • java
  • java
  • javiera

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS