UTNianos

Versión completa: [DUDA] Escribir BNF
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Sea un LP en el que la sentencia de iteración está formada por la palabra REPETIR y la condición tiene que estar, obligatoriamente, encerrada entre paréntesis; luego le sigue una o varias sentencias separadas por una "coma". Termina la sentencia de iteración con un ; .
Suponga que la condición y la sentencia son terminales para no tener que desarrollarlas.
Escriba una descripción BNF del lenguaje descripto.

Bueno, yo intenté hacerlo de las tres formas: ALGOL, Pascal y ANSI C, pero creo que le estoy errando en algo...

Pascal:

<sentencia de iteracion> ::= REPETIR while (condicion) do <sentencias>;
<sentencias> ::= {sentencia,} sentencia

ALGOL:

<sentencia de iteracion> ::= REPETIR while (condicion) do <sentencias>;
<sentencias> ::= sentencia | <sentencias>, sentencia

ANSI C:

sentenciaDeIteracion: REPETIR while (condicion) do sentencias;
sentencias: sentenciaop, sentencias | sentencia


Si alguien me lo puede corregir, se lo agradezco un montón!!
no recuerdo mucho la sintaxis de ninguna de las 3, pero en lo que es "la idea" parece estar bien


es una validacion lo que necesitas, o te dijeron que esta mal y no sabes donde ?

aclaro, hice sintaxis en 2010 =P
Es una validación nada más lo que necesito! me tendría que haber puesto antes y haber preguntado en clase, ahora como estoy jugada pregunto acá =D gracias!
una cosa, no se que tan estrictos seran con el tema BNF =P pero si eso deberia generar un codigo "real" en C, Pascal y Algol, las sentencias estan dentro del "do"

asique si son mas de una deberian estar entre {} (en C), entre un begin y end (en pascal) y ni idea en ALGOL =P

algo asi

Pascal

sentencia de iteracion> ::= REPETIR while (condicion) do begin <sentencias> end;
<sentencias> ::= {sentencia,} sentencia

Ansi C

sentenciaDeIteracion: REPETIR while (condicion) do \{ sentencias \};
sentencias: sentenciaop, sentencias | sentencia


(con \ era que se escapaban los simbolos especiales?)


por otro lado, no se si esto es necesario, asique no quiero marearte mas (?)


para mi lo que hiciste esta bien.
Igual acordate que en Ansi C los O se escriben en punto y aparte, pero mas allá de eso a mi entender está bien resuelto.
URLs de referencia