Diferencia entre revisiones de «Usuario:ManuelRomero/preferencias/compiladores/analisisSemático»
De WikiEducator
(→declaracion_variables) |
(→declaracion_variables) |
||
Línea 37: | Línea 37: | ||
==declaracion_variables== | ==declaracion_variables== | ||
*produccion optativa (puede haber o no variables en un programa) | *produccion optativa (puede haber o no variables en un programa) | ||
− | *lista de variables que puede tener un programa | + | *''lista de variables'' que puede tener un programa |
− | + | ||
*Acciones a realizar | *Acciones a realizar | ||
#ninguna ya que no tenemos ninún terminal solo producciones | #ninguna ya que no tenemos ninún terminal solo producciones | ||
*Produccion para yacc | *Produccion para yacc | ||
− | [[Archivo:declaracionVariables.png]] | + | [[Archivo:declaracionVariables.png]] |
− | ;Código en yaac | + | Vemos que puede estar vacía (épsidon) o que puede contener'''lista de declaraciones''' seguido del tohken '''pto y coma''' |
+ | ;Código en yaac | ||
+ | declaracion_variables: | ||
+ | | lista_declaraciones ';' | ||
+ | ; | ||
+ | ===lista_declaraciones=== | ||
+ | {{Definicion|'''Una lista''' de elementos lo vamos a considerar uno o varios elementos}} | ||
− | + | *En yacc siempre usaremos una recursividad por la izquierda (ver producción) | |
− | + | ||
− | + | ||
− | * | + | |
− | + | ||
*Acciones a realizar | *Acciones a realizar | ||
#ninguna ya que no tenemos ninún terminal solo producciones | #ninguna ya que no tenemos ninún terminal solo producciones |
Revisión de 11:57 17 ago 2012
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
- Produccion para yacc
Vemos que puede estar vacía (épsidon) o que puede contenerlista de declaraciones seguido del tohken pto y coma
- Código en yaac
declaracion_variables: | lista_declaraciones ';' ;
lista_declaraciones
- En yacc siempre usaremos una recursividad por la izquierda (ver producción)
- 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==