Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PL1/PL2.
Historial de cambios:
Entorno de java JDK: 8 o superior, ya que no hace llamadas específicas a las APIs de alguna
versión concreta.
1
Pasos para la creación y configuración del proyecto con la arquitectura de PL1/PL2
2
Paso 3: configuración del proyecto:
Click Finish.
Paso 4: dentro del proyecto creado, hay que copiar las carpetas de la arquitectura:
3
Las carpetas de la arquitectura: classes, doc, lib, src
4
El proyecto queda así:
Las librerías aunque existan dentro de la carpeta /lib, no significa que el proyecto vaya a
funcionar; por tanto, hay que referenciarlas.
5
Paso 7: Referenciar las librerías de la arquitectura:
6
Navegamos hasta las librerías del proyecto, y las seleccionamos todas, luego OK:
7
Las librerías quedan referenciadas en el proyecto (llevan una marca parecida al acceso
directo).
8
Paso 9: Abrimos el fichero doc/config/build.xml y seleccionamos la entrada cupTest:
9
Y aparece la consola de eclipse con el resultado de la ejecución.
Estos dos ficheros se generan siempre que se lanza una ejecución, son el resultado de la
traducción del código CUP a código java.
[javac]
D:\workspace_uned\Practica_PDL2\ src\compiler\syntax\parser.java :21: error:
package compiler.semantic does not exist
Este mensaje nos indica donde se ha producido el error, aunque sea un fichero auto-generado,
no nos da muchas pistas, pero el mensaje a continuación puede que sí.
Eclipse cachea las carpetas, pero hay que refrescarlas en la vista; esto se hace con Refresh ( o
pulsar F5) sobre el proyecto.
10
[javac]
D:\workspace_uned\Practica_PDL2\src\compiler\syntax\parser.java:21: error:
package compiler.semantic does not exist
[javac] import compiler.semantic.*;
[javac] ^
[javac] 1 error
Este error se debe que hay un import duplicado de más alto nivel, que realmente no tiene
fichero a importar; poner un asterisco a continuación de un paquete es lo mismo que importar
todas las clases que se encuentran dentro de ese mismo paquete.
import compiler.semantic.*;
import compiler.semantic.symbol.*;
import compiler.semantic.type.*;
Lo que viene a decir es que se importe todo, pero luego hay importaciones específicas de las
subcarpetas symbol.* y type.* , es decir son redundantes En este caso, quitamos la
importación import compiler.semantic.* y dejamos sólo las dos más específicas
para symbol.* y para type.*
11
12
Pero la importación no se quita del parser.java, sino del fichero fuente que lo genera, esto es
parser.cup.
Si sale algún mensaje de error en eclipse de tipo NullPointerException, simplemente hay que
ignorarlo y volver a lanzar el comando.
*****
13