Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
decl_de_subprograma →
cabecera declaraciones
begin lista_de_sentencias end ; {AÑADIR_INST(‘finproc’)}
argumentos → ( lista_de_param )
|ε
|ε {lista_de_sentencias.cont_lista:= LISTA_VACIA();}
sentencia → variable = expresión_simple ;
| if expresion then M lista_de_sentencias end if M;
{COMPLETA(expresión.true,M 1.ref);
COMPLETA(expresión.false, M2.ref);
S.listaexit:=UNIR(lista_de_sentencias1.listaexit,lista_de_sentencias2.listaexit);}
| continue if expresión M ;
{COMPLETA (expresión.true, lista_de_sentencias.href);
COMPLETA (expresión.false, M.ref) ;}
expresión_simple’ → + termino
{expresión_simple´1.nom=obtener_nuevo_id;
AÑADIR_INST(expresión_simple´1.hnom||”:=”|| expresión_simple´.hnom|| + || termino.nom)}
expresión_simple’ {expresión_simple´.nom=expresión_simple´1.hnom}
| - termino {expresión_simple´1.nom=obtener_nuevo_id;
AÑADIR_INST(expresión_simple´1.hnom||”:=”|| expresión_simple´.hnom|| - || termino.nom)}
expresión_simple’ {expresión_simple´.nom=expresión_simple´1.hnom}
| Ɛ { expresion_simple´.nom= expresión_simple´.hnom}
término’ → * factor
{termino’1.nom=obtener_nuevo_id;
AÑADIR_INST ( termino’1.hnom||”:=”||termino’.hnom||*||factor.nom)}
término’ {termino’.nom=termino´1.hnom}
| / factor
{termino’1.hnom:=obtener_nuevo_id;
AÑADIR_INST(termino’1.hnom||”:=”||termino’.hnom||/||factor.nom)}
término’ {termino’.nom:=termino´1.hnom}
| Ɛ {termino’.nom:=termino´.hnom}
factor → id {factor.nom:=id.nom}
| num_entero {factor.nom:=num_entero.nom}
| num_real {factor.nom:=num_real.nom}
| (expresión_simple) {factor.nom:=expresión_simple.nom}
Lista de atributos:
tipo.tdat: atributo léxico que nos dice el tipo de datos de una variable, puede ser “int” o “float”
op_rel.tiporel: atributo léxico que indica el tipo de una operación relacional, puede ser
“==”,”<”,”>”,”<=,”>=”.
clase_par.tparam: atributo léxico que indica si el parámetro de entrada del programa es “in”, “out” o
“in out”.
lista_de_ident.lista_id: atributo sintetizado que guarda en una lista los identificadores que se leen del
programa.
resto_lista_de_ident.lista_id: atributo sintetizado que guarda en una lista los identificadores que se leen
del programa, lista auxiliar para el resto de la lista (hijos de un nodo del árbol)
lista_de_sentencias.lista_sent: atributo sintetizado que guarda en una lista las sentencias que se leen
del programa.
εε