Traductor e intérprete del lenguaje CL 1.23
CL Class Reference

La clase CL invoca al traductor e intérprete de CL. More...

List of all members.

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.

Detailed Description

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):

  1. Hace el análisis léxico-sintáctico y muestra los errores léxicos detectados (excepciones lanzadas por el scanner CLLexer)
  2. Hace el análisis léxico-sintáctico y muestra los errores sintácticos detectados (excepciones lanzadas por el parser CLParser)
  3. Hace el análisis léxico-sintáctico y muestra el AST creado por el parser
  4. Hace el análisis léxico-sintáctico y el semántico, y muestra las excepciones lanzadas por el TypeCheck durante el primer recorrido del AST
  5. Hace el análisis léxico-sintáctico y el semántico, y muestra el AST tras ser decorado por el TypeCheck
  6. Hace el análisis léxico-sintáctico y el semántico, y muestra los errores semánticos detectados en el TypeCheck
  7. Hace el análisis léxico-sintáctico, el análisis semántico y la generación de código, y muestra las excepciones lanzadas por CodeGen durante el segundo recorrido del AST
  8. Hace el análisis léxico-sintáctico, el análisis semántico y la generación de código, y muestra el t-code generado por esta última etapa
  9. Realiza todas las etapas de análisis y la generación de código, y comprueba que el t-code generado tiene una estructura correcta (no se lanzan excepciones al analizarlo)
  10. Realiza todas las etapas de análisis y la generación de código, comprueba que el t-code generado es sintácticamente correcto, y que no contiene errores semánticos.
  11. Realizan todas las etapas de análisis y la generación de código, y ejecuta/interpreta el t-code generado
Parameters:
[in]argslista 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
See also:
CL_AST, TypeTree, SymTab, TypeCheck, CodeGen, TCode
Author:
José Miguel Rivero Almeida

Definition at line 268 of file CL.java.


Member Function Documentation

static void CL.main ( String[]  args) throws Exception, RecognitionException [static]

Método principal que permite invocar al traductor/intérprete.

Definition at line 278 of file CL.java.

Here is the call graph for this function:


Member Data Documentation

final int CL.DEFAULT_LAST_STEP = 8 [static, private]

Por defecto el traductor se detiene tras generar el t-code y no invoca al intérprete.

Definition at line 273 of file CL.java.


The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Enumerations