2010-03-20 10 views
6

Próbuję zbudować prosty język interpretacji do celów edukacyjnych. Czytałem niezliczoną ilość teorii i samouczków na temat ANTLR i JavaCC, ale nie potrafię wymyślić, jak to zrobić, aby zrobić coś pożytecznego.Czy zaimplementowano proste języki za pomocą ANTLR lub podobnego?

Najlepiej uczę się przez "rozczłonkowanie czegoś i ponowne złożenie go w całość", więc czy istnieją przykłady prostych języków zaimplementowanych za pomocą narzędzi takich jak ANTLR lub podobnych?

Coś jak poniżej może być ładne:

x = 1 

if x == 1 
    print "true" 

Odpowiedz

13

[wtyczka bezwstydny] Dlaczego nie kupić mój Language Implementation Patterns książkę? Mam wszystkie elementy potrzebne do złożenia języka, w tym wielu tłumaczy itp. ...

+2

Chociaż * Wzory implementacji języka * bardzo krótko wspomina, jak działa ANTLR. Tak więc, naprawdę powinieneś polecić 'etheros', aby najpierw kupił swoją książkę * ANTLR *, a dopiero potem otrzymasz * Wzory implementacji języka *. :) –

+0

Z tego linku zapoznałem się z kodem języka "Q" i właśnie tego szukałem! Dziękuję za link i czekam na zakup książki. – etheros

2

Uwaga: można użyć innego podejścia i sprawdzeniu XText generowania cały kod dla ciebie.

Z dokumentacji XText:

W przeciwieństwie do zwykłych generatorów parserów (jak np javacc lub antlr) Xtext osiąga znacznie więcej niż tylko parsera i analizatora słownikowego (Lexer) z gramatyki. Językiem gramatyka jest używany do opisania i generowania:

  • przyrostową, parser ANTLR 3 opiera się i lexer czytać swoje modele z tekstem,
  • modele ecore (opcjonalnie),
  • Serializatora napisać twoje modele z powrotem na tekst,
  • łącznika, w celu ustalenia powiązań skrzyżowanie elementów modelu,
  • implementacja interfejsu EMF zasobami z pełnym wsparciem dla ładowanie i zapisywanie modeli EMF i
  • integrację języka z twoim IDE Eclipse.

Po wygenerowaniu wszystkich części można je analizować (i testować) zgodnie z własnymi potrzebami.

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

0

Dlaczego nie można zdefiniować gramatyki za naprawdę prostym językiem, który pasuje do Twojego przykład i starać się je realizować? Użyj ANTLR, aby utworzyć drzewo analizy, a następnie wymyśl, jak "ocenić" drzewo. Na początek nie przejmuj się deklaracjami lub typami danych (każda wartość jest liczbą całkowitą) i typami instrukcji obsługi 3: assignment, if statement i print.

4

Prawdopodobnie można znaleźć wiele małych języków w Google Code i Github.

Oto język zabawka, że ​​zrobiłem w antlr jako projekt Klasa A kilka lat temu http://code.google.com/p/bcis/

+0

nie testowałem, ale przeglądałem pośrednictwem Google strony: ładnie wygląda i dobrze udokumentowane! –

+0

Chciałem tylko dodać, że chociaż używam ANTLRv3, twój język był nieocenionym pomocnikiem do nauki. – etheros

Powiązane problemy