Académique Documents
Professionnel Documents
Culture Documents
UNIVERSIDAD
NACIONAL
DE LOJA
Area
de la Energa las Industrias y los Recursos Naturales No Renovables
REGLAS SINTACTICAS
CUP
MODULO IX B
Autores:
SORAYA ISAMAR LARA TAPIA
Docente:
ING. HENRY PAZ
Fecha:
20 ENERO 2015
Loja-Ecuador
Septiembre 2014 - Julio 2015
Indice
1. Definici
on del smbolo inicial de la gram
atica y las reglas de producci
on.
2. Ejemplo: Calculadora
4. BIBLIOGRAFIA
1.
Definici
on del smbolo inicial de la gram
atica y las
reglas de producci
on.
Para definir el smbolo inicial de la gramatica se utiliza la construccion start with...:
startwithP rog;
Para ver como definir las reglas de produccion de la gramatica veamos un ejemplo:
P rog ::= P ROGIDEN T : i1In : i2Out : o Local : lBody : b{: RESU LT = new
P rogv1(i1, i2, o, l, b); :}
|P ROGIDEN T : i1In : i2Out : o Body : b{: RESU LT = new
P rogv2(i1, i2, o, b); :};
Para definir todas las reglas de produccion que tengan a un mismo smbolo no terminal como antecedente, se escribe el smbolo no terminal en cuestion (en el ejemplo, Prog),
seguido de ::= y a continuacion las reglas de produccion que le tengan como antecedente,
separadas por el smbolo (en el ejemplo hay 2 reglas de produccion). Despues de la
u
ltima regla de produccion se termina con punto y coma.
Si nos fijamos, por ejemplo, en el consecuente de la primera regla de produccion, vemos que esta formado por una secuencia de smbolos terminales y no terminales h PROG
IDENT:i1 In:i2 Out:o Local:l Body:b i, algunos de los cuales llevan adyacente un smbolo
de dos puntos seguido de un identificador. Recordemos que cuando se presento la declaracion de smbolos terminales y no terminales, se dijo que estos podan tener asociado un
objeto Java. Los identificadores que vienen despues de un smbolo terminal o no terminal
representan variables Java en las que se guarda el objeto asociado a ese smbolo terminal
o no terminal. Estas variables Java pueden ser utilizadas en la parte {: ... :} que viene a
continuacion.
Entre {: ... :}se incluye el codigo Java que se ejecutara cuando se reduzca la regla de
produccion en la que se encuentre dicha clausula {: ... :}.
Si el no terminal antecedente tiene asociada una cierta clase Java, obligatoriamente
dentro de la clausula{: ... :} habra una sentencia RESULT=...;. El objeto Java guardado
en la variable RESULT sera el objeto Java que se asocie al no terminal antecedente cuando
se reduzca la regla de produccion en la que se encuentre esa clausula{: ... :}.
A una regla de produccion tambien se le puede asociar directamente una precedencia.
Por ejemplo: [2]
expr ::= M EN OSexpr : e
{: ... :}
%precU M IN U S
La directiva % prec permite asociar una precedencia a una regla de produccion equivalente a la precedencia definida en la seccion de declaraciones de precedencia al terminal
que viene a continuacion de % prec (en el ejemplo UMINUS).
Se inicia con una declaracion opcional de la forma:
start with no-terminal
La gramatica se especifica con producciones del tipo:
La secuencia de terminales y/o noterminales es una lista de terminales o no terminales separados por espacios en blanco.
[1]
2.
Ejemplo: Calculadora
Gramatica
[1]
3.
4.
BIBLIOGRAFIA
Referencias
[1] Salvador Sanchez, Daniel Rodrguez, Departamento de Ciencias de la Computacion,
Universidad de Alcala, Procesadores de LenguajeDisponible en: http://www.cc.
uah.es/ie/docencia/ProcesadoresDeLenguaje/CUP.pdf
[2] esidad Carlos III de Madrid, Departamento de ingenieria telematoca, Fundamentos
de Ordenadores I: Breve Introduccion a CUPDisponible en: http://www.it.uc3m.
es/luis/fo1/p/CUP.html