2010-05-27 17 views
5

Quiero crear un lenguaje de programación experimental muy simple. ¿Qué recursos puedo consultar para obtener una visión general del proceso de creación de un lenguaje interpretado? Utilizaré C++ para compilar y compilar el intérprete.¿Cuál es el proceso de crear un lenguaje interpretado?

+1

Ese es un poco demasiado específico de LISP. –

+1

@Neil: si bien es similar, en realidad no es un duplicado: pregunta sobre un intérprete de Lisp, y las respuestas también son en su mayoría exclusivas de Lisp. Si bien el lenguaje del OP * podría * ser suficiente como Lisp para que se apliquen, no hay certeza de ello. –

+0

Relacionados: http://stackoverflow.com/questions/1669/learning-to-write-a-compiler –

Respuesta

4

Necesita implementar un analizador y un intérprete.

Existe un gran libro de texto gratuito llamado "Lenguajes de programación: aplicación e interpretación" que usa un esquema para crear intérpretes cada vez más complejos. También sirve como una excelente introducción a las características del lenguaje de programación.

Échale un vistazo aquí: http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

Si el esquema no es su taza de té puede ser vale la pena analizar.

+2

heh Scheme y C++ están muy lejos. – Earlz

+0

Vaya, parece un libro realmente bueno. +1 para el enlace. –

+0

I comprenda que C++ y el esquema no se encuentran cerca el uno del otro en el espectro de idiomas, pero el enfoque que toma este libro con Scheme puede resultar en que el investigador asista aprenda más sobre los principios subyacentes del diseño del lenguaje. – Ben

0

Eche un vistazo al analizador LL espíritu "biblioteca de impulso".

2

Unos pasos:

En primer lugar, construir el analizador léxico y analizador. Esto es realmente fácil de hacer con herramientas comunes como lex y yacc, o usando un marco más moderno como Antlr (que es lo que recomiendo). Estas herramientas generarán un código fuente para su idioma de destino que luego puede compilar e incluir en su proyecto.

El lexer y el analizador construirán la representación interna del archivo de origen. Hay algunas maneras diferentes de acercarse a esto:

  1. En el modelo código de bytes, el archivo fuente se compila en un lenguaje interno de bajo nivel, para lo cual se escribe un intérprete código de bytes que ejecuta directamente las operaciones . Esta es la forma en que Perl y los lenguajes .NET funcionan, por ejemplo.
  2. En el árbol de objetos modelo, el archivo fuente se compila en un árbol de objetos donde cada objeto sabe cómo ejecutarlo. Una vez que haya finalizado el análisis, simplemente llame al Exec() en el objeto raíz (que a su vez llama al Exec() en sus hijos, etc.). Este es básicamente el método que uso para mi lenguaje interpretado de dominio específico Phonix.
0

Para crear un lenguaje interpretado, es necesario crear dos cosas:

  • Una definición formal de la gramática de la lengua
  • Un analizador que puede leer e interpretar el lenguaje

Una vez que haya definido el idioma en sí, hay varias herramientas disponibles para ayudar a crear un analizador de lenguaje. Las herramientas clásicas son lex y yacc, y sus versiones de código abierto flex y bison.

Cuestiones relacionadas