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).
