Существуют ли простые языки, реализованные с использованием ANTLR или аналогичных? - PullRequest
6 голосов
/ 20 марта 2010

Я пытаюсь создать простой интерпретируемый язык для целей обучения. Я прочитал бесчисленные теории и учебные пособия по ANTLR и JavaCC, но я не могу понять, как заставить его делать что-то полезное.

Я учусь лучше всего, «разбирая что-то и снова соединяя», так есть ли какие-нибудь рабочие примеры простых языков, реализованных с помощью таких инструментов, как ANTLR, или подобных?

Может быть неплохо что-то вроде следующего:

x = 1

if x == 1  
     print "true"

Ответы [ 5 ]

13 голосов
/ 21 марта 2010

[бесстыдный плагин] Почему бы не купить мою модель реализации языка книгу?У меня есть все, что вам нужно, чтобы собрать язык, включая несколько переводчиков и т.д ...

4 голосов
/ 20 марта 2010

Вероятно, вы можете найти множество небольших языков в Google Code и Github.

Вот игрушечный язык, который я сделал в ANTLR как проект класса несколько лет назад: http://code.google.com/p/bcis/

3 голосов
/ 21 марта 2010

Видеокурс Скотта "JavaDude" Стэнчфилда по ANTLR3 довольно хорош.

И, конечно же, есть StackOverflow, который имеет тонны содержимого ANTLR. Например:

АНТЛР: Есть простой пример?

2 голосов
/ 20 марта 2010

Примечание: вы можете использовать другой подход и проверить XText для генерации всего кода для вас.

Из документации XText:

В отличие от обычных генераторов синтаксического анализатора (таких как, например, JavaCC или ANTLR), Xtext выводит намного больше, чем просто анализатор и лексический анализатор (лексер) из входной грамматики. Язык грамматики используется для описания и генерации:

  • инкрементный синтаксический анализатор и лексер на основе ANTLR 3 для чтения ваших моделей из текста,
  • Модели Ecore (опционально),
  • сериализатор для записи ваших моделей обратно в текст
  • компоновщик, для установления перекрестных связей между элементами модели,
  • реализация интерфейса EMF Resource с полной поддержкой загрузки и сохранения моделей EMF и
  • интеграция языка в вашу Eclipse IDE.

После того, как все части сгенерированы, вы можете анализировать их (и тестировать) по своему усмотрению.

альтернативный текст http://www.eclipse.org/Xtext/documentation/0_7_2/images/getting-started-editor.png

0 голосов
/ 20 марта 2010

Почему бы вам не определить грамматику для действительно простого языка, который соответствует вашему примеру, и попытаться реализовать ее? Используйте ANTLR для создания дерева разбора, а затем выясните, как «оценить» дерево. Для начала не беспокойтесь о объявлениях или типах данных (каждое значение является целым числом) и поддерживайте 3 типа операторов: присваивание, оператор if и print.

...