2011-07-25 31 views
12

¿Alguien sabe dónde puedo obtener el BNF o el EBNF para el lenguaje de programación LOGO?EBNF o BNF para el lenguaje de programación LOGO

+4

Seguro que votaron para cerrar esto como fuera de tema. El "lenguaje de programación" está incluso en el título ... –

+0

Parece que llegó a Reddit, estoy protegiendo esto por ahora (no estará protegido en unos días). No es un problema, sí, solo una precaución. –

+3

@Tim Post Esto llegó al subreddit de programación de reddit, no veo cómo esto es motivo de alarma. ¿Podría haber sido una buena oportunidad para atraer nuevos usuarios? – ArtB

Respuesta

12

Una gramática BNF podría no ser demasiado útil en ciertas circunstancias ...

Escribir un logotipo que sea compatible con precisión con la aplicación existente/histórica no es una tarea fácil (trabajé en un proyecto de este tipo). El problema es que el analizador no hace el trabajo completo, y el evaluador (intérprete) tiene que trabajar con datos parciales. Considere este ejemplo:

proc1 ab proc2 c

Esto podría significar proc1 (a, b, proc2 (c)) o proc1 (a, b, proc2(), c) de acuerdo con el número de parámetros para proc1 & proc2.

Además, los intérpretes LOGO que conozco, por ejemplo Berkely LOGO, parecen desde una mirada superficial no escribir un analizador tradicional que además tenga acceso a cada procedimiento y su aridad; en su lugar, ejecutan los procedimientos y los procedimientos 'consumen' la cantidad de parámetros que necesitan. Esto hace que el analizador sea un poco ingenuo y el papel principal es el de un intérprete, por lo que el análisis es algo inusual.

+0

Entonces, ¿estás diciendo que no puede haber una gramática para el lenguaje que no sea ambigua? –

+0

Sí, creo que no existe tal gramática (independientemente de la ambigüedad) a menos que sea una gramática ingenua que analiza la cadena de comandos principalmente como está, y simplemente resuelve operadores de infijo y similares –

+0

Correcto, un analizador ingenuo simplemente analizaría de acuerdo con la gramática , pero no comprendería la * aridad * de las funciones incorporadas. Parecería que durante el análisis, uno necesitaría buscar el * arity * de la función antes de decidir cómo analizar los tokens siguientes. También tiene más sentido entonces, como dijiste, "analizar a medida que avanzas". –

2

No hay una implementación estándar de LOGO.

Su mejor llamada es probable que mirar la fuente de una aplicación popular, como UCBLogo

No
Cuestiones relacionadas