Diferencia entre revisiones de «Usuario:ManuelRomero/compiladores/nav/analisisSemático»
De WikiEducator
(Página creada con '=PROGRAMA= <source lang=bison> programa: tPROGRAMA tIDENTIFICADOR ';' { nivel = 0; DEBUGA("programa:tPROGRAMA tIDENTIFICADOR';'-antes de inicializar_tabla",…') |
(→PROGRAMA) |
||
(2 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | =PROGRAMA= | + | =PRODUCCIONES= |
− | <source lang= | + | ==PROGRAMA== |
+ | *primera producción | ||
+ | *Producción obligatoria | ||
+ | *define de qué consta un programa | ||
+ | programa : tPROGRAMA tIDENTIFICADOR ';' declaracion_variables declaracion_acciones bloque_instrucciones | ||
+ | *Acciones a realizar | ||
+ | #Dar de alta el identificador del programa para no volver a usarlo | ||
+ | #Después de la última instrucción eliminamos items de la tabla de símbolos | ||
+ | #Para crear el XML del programa, cada vez que hay un identificador creo un tag diciendo lo que es y lo cierro al final de su ámbito | ||
+ | |||
+ | <source lang=cpp> | ||
programa: | programa: | ||
tPROGRAMA tIDENTIFICADOR ';' | tPROGRAMA tIDENTIFICADOR ';' | ||
{ | { | ||
nivel = 0; | nivel = 0; | ||
− | + | inicializar_tabla (tabsim); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
/*El identificador del programa | /*El identificador del programa | ||
Es el primer símbolo y por lo tanto seguro | Es el primer símbolo y por lo tanto seguro | ||
que no va a exixtir, por lo que no lo buscamos*/ | que no va a exixtir, por lo que no lo buscamos*/ | ||
− | |||
introducir_programa(tabsim,$2.NId,0); | introducir_programa(tabsim,$2.NId,0); | ||
− | |||
AbreTag(xmlin,$2.NId,nivel-1); | AbreTag(xmlin,$2.NId,nivel-1); | ||
− | |||
− | |||
} | } | ||
+ | |||
declaracion_variables | declaracion_variables | ||
declaracion_acciones | declaracion_acciones | ||
Línea 33: | Línea 34: | ||
} | } | ||
; | ; | ||
+ | </source> | ||
+ | ==declaracion_variables== | ||
+ | *produccion optativa (puede haber o no variables en un programa) | ||
+ | *lista de variables que puede tener un programa | ||
+ | |||
+ | *Acciones a realizar | ||
+ | #ninguna ya que no tenemos ninún terminal solo producciones | ||
+ | <source lang=cpp> | ||
+ | | lista_declaraciones ';' | ||
+ | ; | ||
</source> | </source> | ||
+ | ===lista_declaraciones=== | ||
+ | *Una llista es o un elemento o una lista de elementos (uno o varios) | ||
+ | *Observamos una recursividad por la izquierda | ||
+ | *Acciones a realizar | ||
+ | #ninguna ya que no tenemos ninún terminal solo producciones | ||
+ | |||
+ | <source lang=cpp> | ||
+ | lista_declaraciones ';' declaracion | ||
+ | | declaracion | ||
+ | ; | ||
+ | </source> | ||
+ | ====declaracion==== | ||
+ | *Una declaracion es o una variable simple o una variable compuesta | ||
+ | *La forma de daclarar es decir el tipo de variable y luego una lista (1 o mas) de identificadores | ||
+ | *Acciones a realizar | ||
+ | #ninguna ya que no tenemos ninún terminal solo producciones | ||
+ | |||
+ | <source lang=cpp> | ||
+ | variable_simple identificadores | ||
+ | | variable_compuesta identificadores_variable_compuesta | ||
+ | ; | ||
+ | </source'> | ||
+ | =====variable_simple===== | ||
+ | =====identificadores===== | ||
+ | =====variable_compuesta===== | ||
+ | =====identificadores_variable_compuesta===== | ||
+ | |||
+ | |||
+ | == declaracion_acciones== | ||
+ | == bloque_instrucciones== |
Última revisión de 11:07 3 ago 2012
Contenido
PRODUCCIONES
PROGRAMA
- primera producción
- Producción obligatoria
- define de qué consta un programa
programa : tPROGRAMA tIDENTIFICADOR ';' declaracion_variables declaracion_acciones bloque_instrucciones
- Acciones a realizar
- Dar de alta el identificador del programa para no volver a usarlo
- Después de la última instrucción eliminamos items de la tabla de símbolos
- Para crear el XML del programa, cada vez que hay un identificador creo un tag diciendo lo que es y lo cierro al final de su ámbito
programa: tPROGRAMA tIDENTIFICADOR ';' { nivel = 0; inicializar_tabla (tabsim); /*El identificador del programa Es el primer símbolo y por lo tanto seguro que no va a exixtir, por lo que no lo buscamos*/ introducir_programa(tabsim,$2.NId,0); AbreTag(xmlin,$2.NId,nivel-1); } declaracion_variables declaracion_acciones bloque_instrucciones { eliminar_variables (tabsim, nivel); eliminar_parametros_ocultos(tabsim,nivel+1); eliminar_acciones (tabsim, nivel); eliminar_programa(tabsim); CierraTag(xmlin,$2.NId,nivel-1); } ;
declaracion_variables
- produccion optativa (puede haber o no variables en un programa)
- lista de variables que puede tener un programa
- Acciones a realizar
- ninguna ya que no tenemos ninún terminal solo producciones
| lista_declaraciones ';' ;
lista_declaraciones
- Una llista es o un elemento o una lista de elementos (uno o varios)
- Observamos una recursividad por la izquierda
- Acciones a realizar
- ninguna ya que no tenemos ninún terminal solo producciones
lista_declaraciones ';' declaracion | declaracion ;
declaracion
- Una declaracion es o una variable simple o una variable compuesta
- La forma de daclarar es decir el tipo de variable y luego una lista (1 o mas) de identificadores
- Acciones a realizar
- ninguna ya que no tenemos ninún terminal solo producciones
variable_simple identificadores | variable_compuesta identificadores_variable_compuesta ; </source'> =====variable_simple===== =====identificadores===== =====variable_compuesta===== =====identificadores_variable_compuesta===== == declaracion_acciones== == bloque_instrucciones==