2009-08-05 13 views

Respuesta

10

El Evaluador Metacircular en SICP es un ejercicio para escribir un intérprete de Scheme en Scheme. Es un proyecto común de CS de primer año.

+2

Para aquellos que no saben, SICP es un libro (gratuito en línea) llamado Estructura e Interpretación de Programas de Computadora. –

5

de Pascal El Wirth original es un buen candidato, y se utiliza a menudo como un demo en generadores de analizadores sintácticos. Su gramática es LL (1) y, por lo demás, bastante estricta, por lo que es fácil de analizar. En cuanto a las características, es bastante limitado también.

Es posible que desee jugar un poco un poco, por ejemplo -. es posible que desee ignorar los punteros, pero admitir cadenas de primera clase.

3

Esquema o cualquier variante de ceceo.

+4

Esto es un poco engañoso; aunque la sintaxis no es difícil de analizar, la funcionalidad de Scheme y otras variantes de LISP puede ser bastante difícil de implementar en un intérprete. Lambdas y la recursividad de la cola en particular tienen muchas trampas. – Imagist

0

Creo que un lenguaje de sintaxis de marcado, Liran. La estructura de sintaxis facilita el análisis ya que los bloques de código están claramente delineados entre las etiquetas de inicio y fin. En teoría, podría construir fácilmente un intérprete de nivel 1 que analiza y ejecuta el código directamente.

Dicho esto, no hay ningún lenguaje de marcado que haga cosas significativas en el contexto que parece que pretendes (es posible que quieras escribir el tuyo). La siguiente mejor opción probablemente sean los lenguajes con funcionalidad mínima y preferiblemente que no respalden la programación de procedimientos. Un lenguaje como BASIC debería ser fácil de construir para un intérprete de nivel 1.

Lo mejor es, quizás, los primeros lenguajes de guiones que no ofrecían muchos elementos sintácticos y que eran bastante cortos en complejidad. Sin embargo, no puedo pensar en ninguno.

Pero quizás la mejor opción es que diseñe su propio idioma. El intérprete se vuelve más fácil de compilar porque tiene un conocimiento profundo de la sintaxis del lenguaje y puede gobernar su propia estructura de lenguaje y semántica en el intérprete.

...

La insistencia en el nivel 1 intérprete se debe a que sí mencionó que desea que sea fácil.

+0

¿Qué significa el nivel 1? –

1

En mi clase de sistemas operativos de la universidad, escribimos un intérprete para Db (D-flat). Fue muy simple y bien definido.

+0

¿Podría proporcionar un enlace a algo relacionado con este idioma? Parece que no lo puedo encontrar ... –

+0

Tiene razón. No pude encontrarlo en ninguna parte en línea tampoco, excepto en el sitio web de la clase. Quizás es un lenguaje inventado para nuestra clase. De cualquier manera, aquí hay un enlace a la definición del lenguaje formal: http://users.csc.calpoly.edu/~akeen/courses/csc430/handouts/assignments/hw3.pdf – bkritzer

+0

Quizás esté basado en el sistema descrito en Dr. Dobbs Journal (¿hay alguien alrededor que sepa sobre DDJ?). En este artículo (http://www.drdobbs.com/184410754) Al Stevens anunció la idea de D-Flat y en artículos posteriores describió su desarrollo. – Kwebble

4

Forth. De acuerdo, ahora solo estoy escribiendo esto porque necesito al menos 15 caracteres en la respuesta, pero las implementaciones más pequeñas de Forth son un par de KB. Es difícil pensar en cualquier otro idioma que pueda tener un núcleo tan pequeño. Tal vez el original McCarthy 1958 Lisp, donde las funciones fueron compiladas a mano.

5

Es muy fácil escribir un intérprete para la programación idioma Forth (una vez que sepa cómo - pero está bien documentado ). Forth ha estado en uso para problemas del mundo real durante más de 40 años.

Quizás es demasiado fácil, pero aprenderá mucho en el proceso.

Una introducción alegre (en línea) está en chapter 9 de Leo Brodie's "Starting FORTH".

+1

Gracias por el enlace. –

Cuestiones relacionadas