TAREA EN LENGUAJE C(EL MAESTRO ALUCINA UN POCO)
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> } | ε
<Lista_Def_Datos> ::= <Def_Datos> <Lista_Def_Datos>
<Lista_Def_Datos> ::= ; <Def_Datos> <Lista_Def_Datos> | ε
<Def_Datos> ::= <Tipo> <Lista_Vars>
<Tipo> ::= ENTERO | REAL
<Lista_Vars> ::= <id> <Lista_Vars>
<Lista_Vars> ::= , <id> <Lista_Vars> | ε
<Codigo> ::= CODIGO <Inst_Comp>
<Inst_Comp> ::= { <Lista_Inst> }
<Lista_Inst> ::= <Instruccion> <Lista_Inst>
<Lista_Inst> ::= ; <Instruccion> <Lista_Inst> | ε
<Instruccion> ::= <Inst_Asigna> |
<Inst_Lee> |
<Inst_Imprime> |
<Inst_Si> |
<Inst_Mientras> |
<Inst_Ciclo> |
<Inst_Comp> | ε
<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> | ε
<Inst_Mientras> ::= MIENTRAS <Cond>
<Instruccion>
<Inst_Ciclo> ::= CICLO <Var> = <Expr> HASTA <Expr>
<Instruccion>
<Expr> ::= <Term> <Expr>
<Expr> ::= + <Term> <Expr> |
- <Term> <Expr> | ε
<Term> ::= <Factor> <Term>
<Term> ::= * <Factor> <Term> |
/ <Factor> <Term> | ε
<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).
[email protected]
Grámatica BNF del Lenguaje de Proyecto.
<Programa> ::= <Encabezado> <Def_Datos> <Codigo>
<Encabezado> ::= PROGRAMA <id> ;
<Def_Datos> ::= DATOS { <Lista_Def_Datos> } | ε
<Lista_Def_Datos> ::= <Def_Datos> <Lista_Def_Datos>
<Lista_Def_Datos> ::= ; <Def_Datos> <Lista_Def_Datos> | ε
<Def_Datos> ::= <Tipo> <Lista_Vars>
<Tipo> ::= ENTERO | REAL
<Lista_Vars> ::= <id> <Lista_Vars>
<Lista_Vars> ::= , <id> <Lista_Vars> | ε
<Codigo> ::= CODIGO <Inst_Comp>
<Inst_Comp> ::= { <Lista_Inst> }
<Lista_Inst> ::= <Instruccion> <Lista_Inst>
<Lista_Inst> ::= ; <Instruccion> <Lista_Inst> | ε
<Instruccion> ::= <Inst_Asigna> |
<Inst_Lee> |
<Inst_Imprime> |
<Inst_Si> |
<Inst_Mientras> |
<Inst_Ciclo> |
<Inst_Comp> | ε
<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> | ε
<Inst_Mientras> ::= MIENTRAS <Cond>
<Instruccion>
<Inst_Ciclo> ::= CICLO <Var> = <Expr> HASTA <Expr>
<Instruccion>
<Expr> ::= <Term> <Expr>
<Expr> ::= + <Term> <Expr> |
- <Term> <Expr> | ε
<Term> ::= <Factor> <Term>
<Term> ::= * <Factor> <Term> |
/ <Factor> <Term> | ε
<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).