es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible implementar [stmt]+ en yacc?

Tengo una tarea de la escuela que consiste en hacer un compilador en yacc.

Y la pregunta es:

PROGRAMA ::= STMT+
STMT ::= EXP | INSTR-DE-IMPR
…….

Intenté implementar STMT+ de esta manera:

Programa: STMT_PLUS { printf(“¡Programa!\n”); }
;

STMT_PLUS : STMT STMT_PLUS {}
| ;

STMT : STMT {}
| EXP {}
| INSTR_DE_IMPR {}
|
;

La entrada será en varias líneas.

¿Funcionará? Si está mal, ¿cómo debo editar mi código?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Tu implementación de STMT+ utilizando reglas recursivas parece correcta. Sin embargo, hay un pequeño problema con la ortografía de PRINT_STMT en tu código. Debería ser PRINT-STMT como se indica en el enunciado del problema.

    Aparte de eso, tu código debería funcionar bien para aceptar múltiples líneas de entrada en forma de STMT+.

    Es importante tener en cuenta que este fragmento de código solo representa una pequeña parte de una implementación de compilador más grande y no está completo por sí mismo. Asegúrate de escribir el resto de las reglas gramaticales, así como las acciones semánticas para generar la salida del compilador.

Comments are closed.