Manual JCC

JAVACC CONCEPTO: JavaCC es una herramienta que generalmente se utiliza para generar analizadores léxicos y sintácticos (

Views 66 Downloads 0 File size 267KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

JAVACC CONCEPTO: JavaCC es una herramienta que generalmente se utiliza para generar analizadores léxicos y sintácticos (parsers) de una forma muy cómoda, actualmente se encuentra mantenida por Sun Microsystems y es muy robusta, eficiente y fiable. EJEMPLO : Se construira una analizador lexico simple para un determinado lenguaje,que consiste en declarar variables y crear bucles mediante palabras reservadas .Esta aplicacion se desarrollara en consola. Especificaciones:  Tokens: 



 

Constantes: o Cadenas: Caracteres entrecomillados o Enteros: Números positivos, ejemplo: 234 o 0 o Lógicas: TRUE y FALSE Identificadores: seran una secuencia de letras (a-zA-Z) y números que obligatoriamente deben comenzar con una letra (y no un número). Los identificadores que se refieran a cadenas terminarán en "$". Palabras reservadas: En el lenguaje hay palabras reservadas que darán vida al lenguaje, estas serán: "not, if, end, let, call, then, case, else, input, print, select y static". el lenguaje es "case insensitive" osea un identificador llamado "id" apuntará al mismo lugar que "Id", "iD" o "ID".De igual forma será para las palabras reservadas.

Manual JavaCC Instalación, Configuración y Ejecución del Compilador JAVACC 1. Instalación. 2. Configuración. 3. Ejecución del Compilador JavaCC. Paso 1 Copiar la carpeta JavaCC-5.0 en el Disco local c Paso 2 Copiamos la ruta de la carpeta bin que sería C:\javacc-5.0\bin

Propiedades Paso 3 En este paso nos vamos a Mi Pc (click derecho) Y le damos en CONFIGURACION AVANZADA DEL SISTEMA… Paso 4 Nos abre propiedades del sistema y le daremos en VARIABLES DE ENTORNO Buscamos la VARIABLE DEL SISTEMA “Path” y le damos EDITAR Escribimos “ ” y Pegamos la ruta del ; bin que habíamos copiado anteriormente. Y finalizamos en aceptar Paso 5 En este paso abrimos el CMD para verificar si acepto la ruta del JavaCC… y escribimos en el CMD “javacc” Paso 6 Para este paso tenemos que tener instalado el jdk… ya teniéndolo, buscamos donde está instalado (normalmente el jdk se instala en C:\ProgramFiles\Java\jdk1.7.0) y copiamos la ruta de la carpeta bin del jdk… C:\Program Files\Java\jdk1.7.0\bin Paso 7 En los siguientes pasos repetiremos los pasos 3, 4, y 5… PropiedadesMi Pc (click derecho) Y le damos en CONFIGURACION AVANZADA DEL SISTEMA… Paso 8 Nos abre propiedades del sistema y le daremos en VARIABLES DE ENTORNO Buscamos la VARIABLE DEL SISTEMA “Path” y le damos EDITAR

Escribimos “ ” y Pegamos la ruta del ; bin del jdk que habíamos copiado anteriormente. Y finalizamos en aceptar Paso 5 En este paso abrimos el CMD para verificar si acepto la ruta del JavaCC… y escribimos en el CMD “java” Y listo ya está instalado y configurado el JavaCC. Paso 1 Creamos una carpeta donde vayamos a guardar los ejercicios por ejemplo JCC… y dentro creamos nuestro ejercicio con extensión .jj El archivo prueba.jj contiene… PARSER_BEGIN (Ejercicio) public class Ejercicio { public static void main(String args[]) throws ParseException,java.io.FileNotFoundException{ Ejercicio parser = new Ejercicio(System.in); {System.out.println("Por Favor digitar una cadena valida: ");} parser.basic_expr(); } } PARSER_END(Ejercicio) SKIP: { " " | "\t" | "\n" | "\r" } TOKEN: { | } TOKEN: { ))))|(((|)((((("._")|(".-"))*|("_."|"-.")*|(("-")*|("_")*)|(("._")*|(".")*)|(("_")*|("")*))|("."))((|)(|)*))*(((("._"|".-")*|("_."|"-.")*|(("")*|("_")*)|(("._")*|(".")*)|(("_")*|("")*))|("."))(|)(|)*)*)(("."))"@"(((((|)(|))(< letra>|)*)|((|)(|))((|))|(|)(| ))))> } void basic_expr() : {} { ( ) {System.out.println("La evaluacion fue buena");} } String Programa(): {} { (basic_expr()) { return "Es un cadena aceptada"; } } Paso 2 Abrimos el CMD y buscamos la carpeta donde tenemos el ejercicio de prueba de javacc… en la carpeta jcc Paso 3 Para compilar el JavaCC escribimos en el CMD Javacc seguido del nombre con extensión .jj En nuestro caso seria “javacc prueba.jj” Ahora abrimos la carpeta JCC donde tenemos nuestro ejemplo “PRUEBA.JJ” y verificamos si cargaron los archivos .java

Paso 4 En este paso ingresamos la opción javac *.java Ahora abrimos la carpeta JCC donde tenemos nuestro ejemplo “PRUEBA.JJ” y verificamos si cargaron los archivos .class Paso 5 En este paso ingresamos en el CMD la opción java y el nombre de la clase principal dentro del ejercicio “prueba” que en este caso seria “Ejercicio” y quedaría asi: “java Ejercicio” En este caso la cadena valida es (() (|| “_”)*) Comienza por letra y puede ir seguido por letras números y guiones bajos.

Código JavaCC (exparser.jj): options { IGNORE_CASE = true; } PARSER_BEGIN(ExampleParser) public class ExampleParser { //Ejecución del analizador public static void main ( String args [ ] ) { //Inicialización del analizador ExampleParser parser; if(args.length == 0){ System.out.println ("ExampleParser: Leyendo de la entrada estandar ..."); parser = new ExampleParser(System.in); } else if(args.length == 1){ System.out.println ("ExampleParser: Leyendo de fichero " + args[0] + " ..." ); try { parser = new ExampleParser(new java.io.FileInputStream(args[0])); } catch(java.io.FileNotFoundException e) {

System.out.println ("ExampleParser: El fichero " + args[0] + " no ha sido encontrado."); return; } } else { System.out.println ("ExampleParser: Debes utilizarlo de una de las siguientes formas:"); System.out.println (" java ExampleParser < fichero"); System.out.println ("Or"); System.out.println (" java ExampleParser fichero"); return ; } try { compilador.Start(); System.out.println ("ExampleParser: La entrada ha sido leida con éxito."); } catch(ParseException e){ System.out.println ("ExampleParser: Ha ocurrido un error durante el análisis."); System.out.println (e.getMessage()); } catch(TokenMgrError e){ System.out.println ("ExampleParser: Ha ocurrido un error."); System.out.println (e.getMessage()); } } } PARSER_END(ExampleParser) //ESTRUCTURAS Y CARACTERES DE ESCAPE SKIP : { "" | "\t" | "\n" | "\r" | } //TOKENS ESTÁTICOS TOKEN : {

| | |

} //PALABRAS RESERVADAS TOKEN : {

| | | | | | | | | | | | } //TOKEN IDENTIFICADOR TOKEN : {

| } //UNIDAD PRINCIPAL void Start () : {} { ( INTEGER_CONSTANT | STRING_CONSTANT | LOGIC_CONSTANT | NOT | IF | END | SUB | LET | CALL | THEN | CASE | ELSE | INPUT | PRINT | SELECT | STATIC | IDENTIFIER )*

}