|
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] |