Você está na página 1de 6

JAVACC CONCEPTO: JavaCC es una herramienta que generalmente se utiliza para generar analizadores lxicos y sintcticos (parsers) de una

forma muy cmoda, 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: Nmeros positivos, ejemplo: 234 o 0 o Lgicas: TRUE y FALSE Identificadores: seran una secuencia de letras (a-zA-Z) y nmeros que obligatoriamente deben comenzar con una letra (y no un nmero). Los identificadores que se refieran a cadenas terminarn en "$". Palabras reservadas: En el lenguaje hay palabras reservadas que darn vida al lenguaje, estas sern: "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 Instalacin, Configuracin y Ejecucin del Compilador JAVACC 1. Instalacin. 2. Configuracin. 3. Ejecucin 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 sera 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 habamos 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 tenindolo, 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 PropiedadesMi 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 habamos 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 extensin .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 extensin .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 opcin 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 opcin java y el nombre de la clase principal dentro del ejercicio prueba que en este caso seria Ejercicio y quedara asi: java Ejercicio En este caso la cadena valida es (() (|| _)*) Comienza por letra y puede ir seguido por letras nmeros y guiones bajos.

Cdigo JavaCC (exparser.jj): options { IGNORE_CASE = true; } PARSER_BEGIN(ExampleParser) public class ExampleParser { //Ejecucin del analizador public static void main ( String args [ ] ) { //Inicializacin 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 anlisis."); 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" | <"rem" (~["\n","\r"])* ("\n" | "\r" | "\r\n")> } //TOKENS ESTTICOS TOKEN : { <INTEGER_CONSTANT: (<DIGIT>)+> | <LOGIC_CONSTANT: "true" | "false" | "-1"> | <STRING_CONSTANT: "\"" ( ~["\"","\\","\n","\r"] | "\\" ( ["n","t","b","r","f","\\","\'","\""] | ( ["\n","\r"] | "\r\n" )))* "\""> | <#DIGIT: ["0"-"9"]>

} //PALABRAS RESERVADAS TOKEN : { <NOT: "not"> | <IF: "if"> | <END: "end"> | <SUB: "sub"> | <LET: "let"> | <CALL: "call"> | <THEN: "then"> | <CASE: "case"> | <ELSE: "else"> | <INPUT: "input"> | <PRINT: "print"> | <SELECT: "select"> | <STATIC: "static"> } //TOKEN IDENTIFICADOR TOKEN : { <IDENTIFIER: <LETTER>(<LETTER>|<DIGIT>)*(["$"])?> | <#LETTER: (["a"-"z","A"-"Z"])> } //UNIDAD PRINCIPAL void Start () : {} { ( INTEGER_CONSTANT | STRING_CONSTANT | LOGIC_CONSTANT | NOT | IF | END | SUB | LET | CALL | THEN | CASE | ELSE | INPUT | PRINT | SELECT | STATIC | IDENTIFIER )* <EOF> }