Там какие-либо простые языки реализованы с помощью ANTLR или подобный?

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

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

Что-то как следующее могло бы быть хорошим:

x = 1

if x == 1  
     print "true"
6
задан vainolo 22 May 2012 в 08:36
поделиться

5 ответов

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

13
ответ дан 8 December 2019 в 05:54
поделиться

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

0
ответ дан 8 December 2019 в 05:54
поделиться

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

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

4
ответ дан 8 December 2019 в 05:54
поделиться

Серия видеоуроков Скотта «JavaDude» Стэнчфилда по ANTLR3 довольно хороша.

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

ANTLR: Есть простой пример?

3
ответ дан 8 December 2019 в 05:54
поделиться

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

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

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

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

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

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

2
ответ дан 8 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: