2012-01-14 35 views
16

He visto muchos tutoriales para hacer un lenguaje de programación, pero muy pocos para escribir uno en Python. Me gustaría saber cómo (relativamente fácil) crear un lenguaje de programación usando Python.Cómo crear un lenguaje de programación en Python

+3

Lo mismo que en cualquier otro idioma. En serio, si sabe cómo implementar un compilador (o intérprete) en cualquier idioma y sabe cómo programar Python, sabrá cómo implementar un compilador en Python. – sepp2k

+2

Comience escribiendo un analizador. –

+0

Existen buenas herramientas para C/C++ para analizar su idioma: [bison] (http://www.gnu.org/software/bison/) y [flex] (http://flex.sourceforge.net/) pueden ayuda mucho No tengo idea si existen tales herramientas para python también. – amit

Respuesta

8
  1. Imagínese su idioma. ¿Cómo quieres que se vea? ¿Qué características debería tener?
  2. Piense en un idioma existente que sea lo más similar posible al idioma que desee. Está bien si las palabras clave son todas diferentes, pero si decides hacer Python no comenzarías con Lisp porque las estructuras son fundamentalmente muy diferentes.
  3. Busque una gramática existente para el idioma que eligió en el paso 2. Miraría aquí: http://www.antlr3.org/grammar/list.html. Si no puede encontrar uno, haga el paso 2 nuevamente.
  4. Usando ANTLR (o cualquier generador de analizadores que comprenda la gramática que encontraste en el paso 3), construye un módulo de Python que entienda el idioma que eliges en el paso 2. ANTLR tiene cierto nivel de soporte para un "objetivo" de Python (lo que significa el código del analizador estará en Python, en lugar de hacer un analizador que entienda el lenguaje Python). Si te quedas atascado con el código del analizador en C (que puedes), escribe enlaces de Python para él (probablemente sea más fácil usar Boost Python, pero podrías usar la API de Python C directamente si estás muy familiarizado con C y Python).
  5. de inicio hacer modificaciones (en pequeños pasos al principio) a la gramática de la etapa 3 para que sea más como el lenguaje que ha diseñado en el paso 1.

hacer estas cosas cuidadosa y deliberadamente, y después de unos días de trabajo, es posible que tenga un analizador decente a medias para su idioma. Entonces necesitarás consumir la salida del analizador (si usas ANTLR, considera usar los Árboles de sintaxis abstracta, o ASTs, que puede generar para ti). A continuación, deberá convertir la sintaxis analizada en un idioma de destino, como el ensamblaje x86 o algún bytecode intermedio como el utilizado por Java, Lua, Microsoft .NET o lo que sea.

Buena suerte, y prevenido: este proceso tomará mucho tiempo para hacer lo correcto.

16

No estoy seguro de lo que quiere decir con "crear un lenguaje de programación". Pero creo que le gustaría leer el excelente artículo de Peter Norvig (How to Write a (Lisp) Interpreter (in Python)). ¡Esto muestra cómo puedes construir un intérprete de Lisp en solo 90 lines of Python!

Una vez que haya entendido eso, intente (An ((Even Better) Lisp) Interpreter (in Python)).

+1

El programa genera un error. – elijaheac

+0

Funciona bien en mi PC. ¿Qué versión de Python estás usando (supone Python 2.7, creo)? –

+0

AttributeError: el objeto 'NoneType' no tiene el atributo 'find'. Estoy usando Python 2.7 en Windows. – elijaheac

Cuestiones relacionadas