TAREA EN LENGUAJE C(EL MAESTRO ALUCINA UN POCO)

pouserpark
09 de Mayo del 2006
es una tArea podriaN ayudarme no entiendo casi nada

[email protected]



Grámatica BNF del Lenguaje de Proyecto.

<Programa> ::= <Encabezado> <Def_Datos> <Codigo>

<Encabezado> ::= PROGRAMA <id> ;

<Def_Datos> ::= DATOS { <Lista_Def_Datos> } | &#949;
<Lista_Def_Datos> ::= <Def_Datos> <Lista_Def_Datos’>
<Lista_Def_Datos’> ::= ; <Def_Datos> <Lista_Def_Datos’> | &#949;
<Def_Datos> ::= <Tipo> <Lista_Vars>
<Tipo> ::= ENTERO | REAL
<Lista_Vars> ::= <id> <Lista_Vars’>
<Lista_Vars’> ::= , <id> <Lista_Vars> | &#949;

<Codigo> ::= CODIGO <Inst_Comp>
<Inst_Comp> ::= { <Lista_Inst> }
<Lista_Inst> ::= <Instruccion> <Lista_Inst’>
<Lista_Inst’> ::= ; <Instruccion> <Lista_Inst’> | &#949;
<Instruccion> ::= <Inst_Asigna> |
<Inst_Lee> |
<Inst_Imprime> |
<Inst_Si> |
<Inst_Mientras> |
<Inst_Ciclo> |
<Inst_Comp> | &#949;
<Inst_Asigna> ::= <Var> = <Expr>
<Inst_Lee> ::= LEE <Lista_Vars>
<Inst_Imprime> ::= IMPRIME <Lista_Expr>
<Inst_Si> ::= SI <Cond> ENTONCES <Instruccion>
<Si_Complem>
<Si_Complem> ::= SINO <Instruccion> | &#949;
<Inst_Mientras> ::= MIENTRAS <Cond>
<Instruccion>
<Inst_Ciclo> ::= CICLO <Var> = <Expr> HASTA <Expr>
<Instruccion>

<Expr> ::= <Term> <Expr’>
<Expr’> ::= + <Term> <Expr’> |
- <Term> <Expr’> | &#949;
<Term> ::= <Factor> <Term’>
<Term’> ::= * <Factor> <Term’> |
/ <Factor> <Term’> | &#949;
<Factor> ::= <Var> | <Const> | ( <Expr> )

<Lista_Expr> ::= <Expr> <Lista_Expr’>
<Lista_Expr’> ::= , <Expr> <Lista_Expr’>
<Cond> ::= <Expr> <Oper_Rel> <Expr>
<Oper_Rel> ::= == |!= | < | <= | > | >=



Escribir el compilador para esta gramática. Debe leer un archivo con el programa fuente escrito en ese lenguaje y verificar el léxico, la sintaxis y la semántica para luego generar un archivo con el programa objeto.

Escribir un programa que tome el archivo con el programa objeto y lo ejecute.

NOTA: Deberá usarse el Lenguaje C para el desarrollo del compilador y del programa para ejecución (simulación de la máquina virtual Postfija).