Académique Documents
Professionnel Documents
Culture Documents
ISSN 0122-1701
116
ORLANDO ARBOLEDA
Ingeniero de Sistemas, M. Sc.
Profesor Auxiliar
Universidad Autnoma de
Occidente
oarboleda@uao.edu.co
117
2. JAVACC
<EPLOAM>
::=
<declaraciones>
<declaracion>
::=
::=
<declara
variable>
<tipo>
::=
<cuerpo>
::=
<asignacion>
::=
<operador
autoincremento>
<operador
asignacin>
<lectura>
::=
::=
= | += | -= | *= | /=
::=
<impresion>
<decision>
<decision
simple>
::=
::=
::=
<decision
mltiple>
::=
<repeticin>
::=
<ciclo Para>
::=
<inicializacin
Para>
<asignacin
Para>
::=
<ciclo
Mientras>
<ciclo
Haga
Mientras>
::=
<variable> =
leer ( <expresinCadena> ) ;
imprimir ( <expresinCadena> ) ;
<decision simple> | <decision mltiple>
si ( <expresinBooleana> )
{ <cuerpo> }
( sino { <cuerpo> } )?
segun ( <variable> )
{
( caso <valor> : <cuerpo>
(termina ;)?
)+
otroCaso : <cuerpo>
}
<ciclo Para> | <ciclo Mientras> |
<ciclo Haga Mientras>
para ( <inicializacin Para> ;
<expresinBooleana> ; <asignacin Para>
)
{ <cuerpo> }
entero <variable>=<expresinEntera> |
real <variable>=<expresinReal>
<variable>
(<operador autoincremento>|
<operador asignacin> <expresin>)
mientras (<expresinBooleana> ) {
<cuerpo> }
haga { <cuerpo> }
mientras ( <expresinBooleana> ) ;
3. EL LENGUAJE
EPLOAM
DE
PROGRAMACIN
::=
::=
(<comentario>)?
algoritmo <nombre Algoritmo> {
principal ( )
{ <declaraciones> <cuerpo> }
}
(<declaracion>)*
<tipo> <declara variable>
(, <declara variable> )* ;
<variable> (= < expresin > )?
::=
<expr bsica>
::=
<funciones>
<nombre
funcin>
<operador>
::=
::=
::=
<expr bsica> |
<expr bsica>(<operador> <expr bsica>)*
( (-)?
( <variable> | <constante entero> |
<constante real> | <funciones> ) )
| <constante cadena> | <constante caracter>
| <constante booleano >
<nombre funcin> ( <expresin> )
raiz | seno | absoluto | potencia
<operador aritmtico>
| <operador relacional>
| <operador igualdad> | <operador lgico>
118
| <ID: <LETRA>(_|<LETRA>|<DIGITO>)*>
| <ENTERO: (<DIGITO>)+>
| <REAL: <ENTERO>.<ENTERO>>
| <CADENA: \(~[\])*\>
| <#LETRA: [A-Z,a-z]>
| <#DIGITO: [0-9]>
.
}
Figura 4. Fragmento de la seccin de tokens escrita en JavaCC.
void cuerpo():{}{
( LOOKAHEAD(3)
asignacion()
| lectura()
| impresion()
| decision()
| repeticion()
)+
}
+ < <=
> >=
== !=
&&
||
Descripcin
unario y alteracin de
prioridad
multiplicacin, divisin y
residuo
suma y resta
menor, menor-o-igual,
mayor y mayor-o-igual
Igualdad y diferencia
and lgico
or logico
Tipo
operadores
Prioridad
mayor
aritmticos
relacionales
de igualdad
lgicos
menor
119
Tipo de los
operandos
entero y entero
entero y real
real y real
entero y entero
entero y real
real y real
cadena y cadena
entero y entero
entero y real
real y real
tipo1 y tipo2 igual
entero y real
Operador
Tipo resultante
* / %
entero
real
entero
real
cadena
entero
real
== !=
booleano
<
<=
>
>=
booleano y booleano
&& ||
booleano
Tabla 4. Tipos resultantes al evaluar las expresiones.
120
121
6. CONCLUSIONES Y RECOMENDACIONES
Se ha present un lenguaje de programacin denominado
EPLOAM que tiene las instrucciones tpicas de
pseudocdigo usado en la Universidad Autnoma de
Occidente las cuales son similares a las existentes en los
lenguajes de programacin de alto nivel imperativos ms
utilizados actualmente.
Se diseo e implement un compilador del lenguaje
definido ms una herramienta adicional para automatizar
los pasos requeridos para la ejecucin de los algoritmos
construidos.
El compilador implementado es dirigido a los
programadores novatos, pero es completamente funcional
para ser utilizado por programadores ms avanzados que
deseen construir programas en Java o verlos en
ejecucin.
Las instrucciones proporcionadas por EPLOAM permiten
que los alumnos se familiaricen con la sintaxis y
semntica que encontraran al tomar un curso de