ANTLR, порядок шагов - PullRequest
0 голосов
/ 14 июля 2010

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

Вот как я это вижу:

  • Сначала я определю токены Lexer
  • Затем грамматические правила (с правилами перезаписи для построения AST) с действиями, которые собирают информацию о классах и объявлениях методов (чтобы я мог разрешить вызовы методов на следующем шаге)
  • Наконец, я создаю «древовидную грамматику», которая пересекает дерево AST и вызывает правила, которые генерируют коды операций (виртуального) машинного языка.

Это правильно? Является ли роль второго шага чтением объявлений методов и созданием AST?

Как разрешить объявления перегруженных методов без сборки AST? (Backpatching?)

1 Ответ

2 голосов
/ 15 июля 2010

Взгляните на Шаблоны реализации языков , в которых объясняется, как создавать свои собственные языки (как интерпретируемые, так и байт-коды / VM-подобные). На данный момент ваши вопросы слишком широки, и я не думаю, что кто-либо сможет опубликовать ответ на форуме, который объясняет все детали того, как создать свой собственный язык от начала до конца.

Конечно, не стесняйтесь задавать более конкретные вопросы, когда они у вас есть.

Удачи!

...