2010-08-26 19 views

Respuesta

1

Esta es una pregunta realmente general y probablemente se cerrará, pero bueno, también podría publicar esta respuesta: Lua (http://www.lua.org) es un lenguaje de scripting muy popular escrito en C. Puedes usarlo como inspiración.

4

¿Por qué no mirar el C-Code para un lenguaje de scripting (fácil)? Quizás Lua? (link )

Quizás también deba leer algo sobre parser generators, que es el primer componente básico que su programa puede interpretar en un idioma. El segundo bloque es hacer realmente, lo que se está analizando (a veces se puede integrar eso en el analizador sintáctico, se pueden devolver funciones a cada token/cada estructura analizada). Ejemplos fáciles, como analizar y ejecutar fórmulas matemáticas, podrían ser útiles.

16

¿Quiere decir, cómo escribir un idioma que se interpreta en C?

Si es así, usted querrá comprobar Wikipedia y otras fuentes sobre los siguientes temas:

  • Análisis léxico (conversión de código fuente en tokens, como palabras clave, literales enteros/flotador, literales de cadena, etc.)
  • Analizar (comprobación de las fichas contra una gramática predefinida, por lo general libre de contexto para asegurarse de que el programa es sintácticamente correcta)
  • sintaxis árboles (generalmente construido durante el análisis; crear una representación del árbol intermedio que se puede recorrer con el fin de ejecutar el código)
  • tablas de símbolos (Básicamente, la forma de buscar nombres de variables)
  • mirilla optimizaciones (si desea hacer que su código se ejecute más rápido , a cambio de tomar más tiempo durante la etapa previa a la ejecución)

Es mucho más trabajo de lo que piensas ... ¡Feliz lectura!

+1

La segunda y la tercera parte son las más complejas para entender. –

3

Hay un buen libro, viejo, llamado "Constructing Language Processors for Little Languages" que podría ayudarlo a comenzar. Es muy pragmático y explica las diversas opciones que tiene a medida que sus necesidades se vuelven más complejas.

Más allá de eso, esencialmente va a querer investigar un libro o dos sobre compiladores e intérpretes. Si quiere un camino de menor resistencia y lo hace para comprender conceptos en lugar de algo que necesita para una clase o proyectos de trabajo, mire una alternativa a C, como Lisp o Scheme, que facilitará la construcción. en pequeños experimentos. O aprenda sobre la construcción de DSL en idiomas que lo hagan más fácil (Boo, Groovy).

Cuestiones relacionadas