2010-03-20 11 views
6

Estoy tratando de construir un lenguaje interpretado simple para propósitos de aprendizaje. He leído innumerables teorías y tutoriales sobre ANTLR y JavaCC, pero no sé cómo hacer que haga algo útil.¿Hay algún lenguaje simple implementado usando ANTLR o similar?

Aprendo mejor "desmontando algo y volviéndolo a armar", entonces, ¿hay ejemplos prácticos de lenguajes sencillos implementados con la ayuda de herramientas como ANTLR o similares?

algo como lo siguiente podría ser bueno:

x = 1 

if x == 1 
    print "true" 

Respuesta

13

[enchufe descarado] Por qué no comprar mi libro Language Implementation Patterns? Tengo todas las piezas que necesita para armar un lenguaje que incluye varios intérpretes, etc. ...

+2

Aunque * Language Implementation Patterns * menciona brevemente cómo funciona ANTLR. Por lo tanto, debería haber recomendado 'etheros' para comprar primero su * ANTLR reference * book, y solo entonces obtener los * Language Implementation Patterns *. :) –

+0

He echado un vistazo al código para el idioma 'Q' de ese enlace, ¡y es exactamente lo que estaba buscando! Gracias por el enlace, y espero comprar el libro. – etheros

2

Nota: se puede utilizar otro enfoque y echa un vistazo XText para generar todo el código para usted.

De la documentación xtext:

En contraste con generadores de analizadores sintácticos comunes (como por ejemplo JavaCC o antlr), xtext deriva mucho más que un analizador sintáctico y analizador léxico (lexer) a partir de una gramática de entrada. El lenguaje de la gramática se utiliza para describir y generar:

  • una, analizador y lexer antlr 3 basada incrementales para leer sus modelos de texto,
  • modelos Ecore (opcional),
  • un serializador para escribir sus modelos de volver al texto,
  • un enlazador, para establecer enlaces cruzados entre los elementos del modelo,
  • una implementación de la interfaz de recursos EMF con soporte completo para cargar y guardar modelos EMF y
  • una integración del idioma en su Eclipse IDE.

Una vez que haya generado todas las piezas, puede analizarlas (y probarlas) como desee.

alt text http://www.eclipse.org/Xtext/documentation/0_7_2/images/getting-started-editor.png

0

¿Por qué no se define una gramática para un lenguaje muy simple que coincide con su ejemplo y tratar de ponerlo en práctica? Use ANTLR para crear el árbol de análisis sintáctico, y luego descubra cómo "evaluar" el árbol. Para empezar, no te preocupes por las declaraciones o los tipos de datos (cada valor es un número entero) y admite 3 tipos de instrucciones: asignación, instrucción if y print.

4

Probablemente pueda encontrar muchos idiomas pequeños en Google Code y Github.

Aquí hay un lenguaje de juguete que hice en antlr como un proyecto de clase hace unos años: http://code.google.com/p/bcis/

+0

No he probado, pero navegado a través de su página de google-: se ve bien, y bien documentado! –

+0

Solo quería agregar que aunque estoy usando ANTLRv3, su idioma ha sido un invaluable asistente de aprendizaje. – etheros

Cuestiones relacionadas