Diferencia entre revisiones de «Usuario:ManuelRomero/compiladores/nav/analisisSemático»
De WikiEducator
(→PROGRAMA) |
|||
Línea 1: | Línea 1: | ||
=PROGRAMA= | =PROGRAMA= | ||
+ | #primera producción | ||
+ | #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> | <source lang=cpp> | ||
programa: | programa: | ||
Línea 5: | Línea 13: | ||
{ | { | ||
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 |
Revisión de 10:57 3 ago 2012
PROGRAMA
- primera producción
- 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); } ;