Traductor e intérprete del lenguaje CL 1.23
|
La clase CL invoca al traductor e intérprete de CL. More...
Static Public Member Functions | |
static void | main (String[] args) throws Exception, RecognitionException |
Método principal que permite invocar al traductor/intérprete. | |
Static Private Attributes | |
static final int | DEFAULT_LAST_STEP = 8 |
Por defecto el traductor se detiene tras generar el t-code y no invoca al intérprete. |
La clase CL invoca al traductor e intérprete de CL.
Define un método main
que llama a las diferentes etapas del traductor. La entrada (el programa CL) puede ser leída de la entrada estándar (System.in
) o de un fichero. A continuación se resume la operativa de la traducción.
El scanner CLLexer
lee la entrada y genera la secuencia de tokens que, a su vez, va a ser la entrada del analizador sintáctico CLParser
. El parser comprueba que la secuencia de tokens forma un programa estructuralmente correcto y construye el árbol de sintaxis abstracta (AST).
El primer recorrido del AST lo realiza el analizador semántico (TypeCheck
) que detecta los errores semánticos y decora el árbol. Si no se encuentran errores, el generador de código (CodeGen
) realiza un segundo recorrido del AST
y genera el t-code equivalente.
Finalmente, si se desea, el t-code es leído, analizado y ejecutado por el intérprete TCode
.
La variable last_step
define el punto en el que el traductor/intérprete se detiene, suponiendo que todo haya ido bien hasta entonces. Si no ha sido así, para en el punto en el que aparece algún problema. A continuación vemos los 11 posibles puntos en los que se puede decidir parar la traducción (el valor por defecto es 8):
CLLexer
) CLParser
) TypeCheck
durante el primer recorrido del AST TypeCheck
TypeCheck
CodeGen
durante el segundo recorrido del AST [in] | args | lista de strings que se puede usar para dar el nombre del fichero con el programa de entrada, y para seleccionar el paso en el que detener el traductor/intérprete |
static void CL.main | ( | String[] | args | ) | throws Exception, RecognitionException [static] |
final int CL.DEFAULT_LAST_STEP = 8 [static, private] |