Java - necesito obtener una gramatica LL1 lista para ser implementada acerca del siguiente problema

 
Vista:

necesito obtener una gramatica LL1 lista para ser implementada acerca del siguiente problema

Publicado por Luis Alejandro (1 intervención) el 06/06/2011 18:06:10
Traductor para un lenguaje especializado en
estructura repetitiva y condicionales.


Descripción del lenguaje

Sea un lenguaje especializado en estructura repetitiva(for) y en instrucción condicional(if then else). La estructura de un programa desarrollado en este lenguaje es:
void main()
{
/* lista de instrucciones */
}
Las palabras en negrita son palabras reservadas del lenguaje.
Declaración de variables:
Las declaraciones de variables se compone por sentencias de la forma id1, id2, id3,…,idn : Tipo;. Es decir, comienza por identificadores separados por coma, seguido de dos puntos y el tipo de dato, y termina en punto y coma.
El tipo de dato puede ser integer o real.
Instrucciones:
Instrucción de asignación:
Para la instrucción de asignación, el miembro izquierdo debe ser una variable de tipo integer o real, y el miembro derecho una expresión.
Instrucción imprimir:
La instrucción de impresión por pantalla tiene la siguiente sintaxis:
imprimir (<Expresión>);
donde imprimir es una palabra reservada del lenguaje e imprime el resultado de una expresión.
Instrucción for:
for (asignación, expresión condional, incremento)
{
/*Lista de instrucciones*/
}
Instrucción if then else:
if (expresión condional) then
{
/*Lista de instrucciones*/
}
else
{
/*Lista de instrucciones*/
}
Cuando es solo una instrucción no es necesario las llaves dentro del for o ni del if then else.
Operadores:
Para el tipo de dato integer y real:
+ operador de suma.
- operador de resta.
* operador de multiplicación
/ operador de división
> operador mayor que
< operador menor que
Expresión:
En las expresiones se pueden incluir los paréntesis (), para romper con las asociatividad de los operadores y están compuestas por los operadores descritos anteriormente.
Ejemplo de un programa:
void main()
{
integer a;
real b,c,result;
integer i;
for( i = 0; i <10; i++ )
{
b = a + b;
imprimir (b);
}
int h;
h = 100;
if ( b > h ) then
{
h = h/2;
result = (b +h) * a / ( i - 2);
imprimir (result);
}
else
imprimir (b +h) * a / ( i - 2);
}


Orientación

El objetivo es el de diseñar e implementar un intérprete para el lenguaje descrito en la sección inicial. Debe satisfacer los siguientes requerimientos:
• Debe programar un IDE para el lenguaje definido, que incluya:
– Un editor donde codificar el programa.
– Salvar y cargar de fichero el programa.
– Funcionalidades para mostrar los errores de cada una de las fases de compilación.
– Una consola donde mostrar las salidas del programa.
– Funciones para ejecutar el programa.
• Cuando se ejecute el programa, si tiene errores, el sistema debe señalar la línea del programa donde ocurrió el error y clasificar ese error como léxico, sintáctico o semántico.

Premio

El editor podría señalar en negrita u otro estilo las palabras reservadas del lenguaje. Podría agregar otro tipos de instrucciones según estime conveniente al lenguaje para hacerlo más potente. Podría visualizar el AST que representa el lenguaje usando un componente adecuado o uno creado para este fin. Otras facilidades del IDE o del lenguaje que estime pueda tener. Ejemplo: un depurador(debugger).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder