Está en la página 1de 9

Facultad de Ingeniería de Sistemas e Informática

ESCUELA : Software

ASIGNATURA : Lenguaje y Compiladores

TEMA : JavaCC

DOCENTE : Jaime Rubén Pariona Quispe

ALUMNOS : Pizarro Sanchez, Frank Sebastian 17200120

Rodríguez Callata, Elton John 17200298

Rupay Huamani Jorge Luis 17200302

Año

2020
APLICANDO JAVACC PARA EL RECONOCIMIENTO DE
SENTENCIAS DE CONTROL
*Usaremos el generador de parsers llamado JavaCC para
reconocer sentencias de control en el lenguaje C con las
siguientes operaciones:

- Declaración de una o más variables con asignaciones.


- Salida por consola de las variables mediante “cout”.
- Operaciones entre variables (+,-,*,/,*).
- Condicional simple(if).
- Condicional multiple(if else – if else - …..- if else).
- El buble WHILE.
- Dentro de las sentencias de los CONDICIONALES o dentro
de las sentencias del bucle WHILE pueden ir MAS
CONDICIONALES O BUCLES WHILE.

OBSERVACION: CADA CADENA CANDIDATA DEBE


COMENZAR CON: main(){ <Declaraciones> }

*EJEMPLO DE CADENAS QUE PUEDEN SER RECONOCIDAS:


*Primero haremos nuestra gramática común y luego la
convertiremos a una gramática equivalente tal que JavaCC lo
pueda ejecutar

GRAMATICA COMUN PARTE 1:


GRAMATICA COMUN PARTE 2:

AHORA CONVERTIREMOS LA GRAMATICA COMUN A UNA


GRAMATICA EQUIVALENTE QUE EL GENERADOR DE PARSERS
“JAVACC” LO PUEDA EJECUTAR:

Primero utilizaremos los siguientes TOKENS:


GRAMATICA DEL LENGUAJE PARA JAVACC :
AHORA QUE TENEMOS LA GRAMATICA EN JAVACC LA
EJECUTAREMOS Y NOS GENERARA EL PARSER CON LOS
SIGUIENTES ARCHIVOS JAVA:

PARA ELLO UTILIZAREMOS EL IDE “APACHE NETBEANS” PARA


VER EL FUNCIONAMIENTO DEL PARSER Y CREAREMOS UNA
INTERFAZ GRAFICA EN LA QUE INGRESAREMOS LA CADENA
CANDIDATA:

ESCRIBIMOS LA CADENA CANDIDATA Y LUEGO LE DAMOS EN EL


BOTON EJECUTAR, LUEGO EN RESULTADO NOS ARROJARA SI LA
CADENA ES INCORRECTA O CORRECTA, SI ES CORRECTA NOS
MOSTRARA LA LISTA DE TOKENS DE LA CADENA CANDIDATA Y
SI ES INCORRECTA NOS MOSTRARA LA LINEA EN LA QUE
SURGIO EL ERROR.
EJEMPLOS:

RESULTADO SI LA CADENA CANDIDATA ES CORRECTA:

RESULTADO SI LA CADENA CANDIDATA ES INCORRECTA:

También podría gustarte