2011-10-18 15 views
9

Quiero leer y aprender del código fuente del intérprete/compilador de un lenguaje de scripting. ¿Qué intérprete/compilador de lenguaje de scripting tiene el código fuente más simple, limpio y fácil de leer? Preferiría que se escribiera en C/C++ (¿en qué otra cosa están escritos los compiladores?) Porque estoy planeando escribir un compilador en C.Código fuente del intérprete de lenguaje de scripts para aprender desde

+0

Prueba la que más te guste. – hari

+0

Parece que algunas personas han malinterpretado la pregunta. Por favor, lea de nuevo: p – slartibartfast

Respuesta

11

Tome un vistazo a lua, se puede ir a través de las primeras versiones del lenguaje de programación y ver cómo ha evolucionado. Está escrito en C y tiene un código limpio y agradable. Puede escribir un compilador en casi todos los lenguajes de programación, pero C ha sido el que eligieron la mayoría de los programadores.

+1

Puede obtener el código fuente de todas las versiones en un solo paquete en http://www.lua.org/ftp/lua-all.tar.gz. Todos compilan bien. – lhf

+0

El código fuente de algunas versiones recientes de Lua se puede navegar con enlaces en http://www.lua.org/source/. Ver también http://lua-users.org/wiki/LuaSource. – lhf

6

El interruptor CPython ha estado disponible por bastante tiempo y lo haría imagina que sería muy útil para ti.

+0

La pregunta de asker no era clara sobre lo que él/ella quería. Ahora que él/ella ha aclarado, he editado mi respuesta. –

0

un idioma famoso, pero no es simple (código fuente de PHP). Puede aprovechar el código fuente.

PHP Source Code

+1

Dado que 'simple' es el criterio _primary_ del OP, si el origen de PHP no es simple, ¿cómo es esta una respuesta? – ildjarn

+0

@ildjarn: código fuente PHP no es simple, pero puede beneficiarse del código fuente, incluso algunos –

2

echar un vistazo en V8 JavaScript. Cada interperador tiene un componente llamado tokenizer. GNU tiene uno cuyo nombre es bisonte. Echale un vistazo también. Puede ser útil. Chromium usa algún tokenizer para interpretar html en el Webkit también, pero V8 es el intérprete de JavaScript.

Claudio M. Souza Júnior

4

AngelScript es una muy buena opción para aprender acerca de los compiladores. Este es un lenguaje con sintaxis familiar C/C++, recolección de basura, está orientado a objetos con herencia y polimorfismo, multiplataforma y compila en código de bytes.

Mi segunda opción sería Lua.

4

recomendaría, como una suave introducción, echar un vistazo a la LLVM Tutorial.

Chris Lattner crea un sencillo lenguaje de juguete Kaleidoscope para mostrar las distintas fases de compilación:

A continuación, se muestra cómo add JIT capabilities (esencial para un intérprete).

El lenguaje juguete es extremadamente simple, y por lo tanto el código resultante es simple también, y demuestra muy bien la arquitectura sin que se ahoga en los detalles de implementación.

No estoy seguro de que el tutorial es totalmente hasta a la fecha y puede ser utilizado como está en contra de una versión reciente LLVM, pero yo aconsejaría al menos leerlo.

(Y, por supuesto, la lectura de la Dragon Book).

Cuestiones relacionadas