viernes, 19 de octubre de 2012
CUP es una herramienta utilizada para
la generación de analizadores sintácticos para java y una de las mas usadas y
comunes.
Para conocer a fondo que es cup pueden
ir a CUP.
A continuación voy a explicar la
estructura de un archivo de cup así como su sintaxis, hay una buena cantidad de
manuales en internet acerca de esto pero el objetivo del blog es hacerlo de la
manera mas resumida y entendible posible ya que muchas veces (casi siempre)
estamos escasos de tiempo y no podemos ponernos a leer un manual de 20 o más
paginas.
Archivo de entrada para Cup:
Consta de 5 partes las cuales son:
1- definición de paquetes y librerías
2- Código de usuario
3- Declaración de terminales y no
terminales
4- Declaración de precedencia
5- Definición de símbolo inicial y
reglas de producción
Se podría decir que esa es la
estructura general y lleva ese orden a excepción del código de usuario el cual
puede ser usado entre las producciones.
1-
La definición de paquetes y librerías se
refiere a los "package" e "imports" en java, los cuales serán
útiles cuando se agreguen los archivos generados por cup a nuestro proyecto en
java.
2-
Código de usuario: Lo utilizamos para escribir código java dentro
de el parser, puede ser action code o parser code.
La sintaxis que utiliza es:
parser code {: //código java :} o
action code {://código java:}
3-
Terminales y No terminales: La declaración de
los símbolos terminales de la gramática y de los no terminales.
4-
La declaración de precedencia se realiza si
es necesaria, algunas veces no es necesaria pero otras si.
5-
En la ultima parte se inicia con el símbolo inicial
de la gramática y se escribe toda la gramática con notación bnf.
Al final de cada producción podemos incluir código java
si queremos que se ejecute una acción al llegar a dicha producción, por
ejemplo:
BEGIN ::=
COMPLETO {:System.out.println(“Se llego a la produccion inicial”);:};
Aquí se tiene la producción
BEGIN::= COMPLETO y lo que se hará es imprimir un string cuando se llegue a tal
producción, el código se coloca dentro llaves así ------> {://código aquí:}.
A continuación un
pequeño ejemplo de un archivo de cup el cual contiene la sintaxis comentada y
muestra de forma mas clara como se utiliza.
Nota: la sintaxis
genera un parser para reconocer sentencias if anidadas.
Suscribirse a:
Enviar comentarios (Atom)
Search
Categories
android
(2)
Animacion 3D
(3)
aspx
(4)
bases de datos
(7)
Blender
(3)
C
(1)
C#
(4)
cisco
(1)
Compiladores
(11)
conceptos
(1)
cup
(2)
DB2
(2)
gns3
(5)
Irony
(3)
Java
(3)
kvm
(1)
linux
(5)
manual express latex
(1)
MongoDB
(1)
ocio
(3)
oracle
(3)
poo
(1)
Postgresql
(4)
programacion
(9)
Redes
(7)
resumen
(1)
soluciones
(1)
SQL
(16)
sqlserver
(1)
teoría
(5)
Ubuntu
(9)
Uwintu
(1)
VB
(1)
windows
(2)
Statistics
Con la tecnología de Blogger.
0 comentarios:
Publicar un comentario