Как превратить метки типа с метками в дерево разбора? - PullRequest
0 голосов
/ 22 декабря 2009

Итак, я пишу язык программирования на C ++. Я написал почти все это, за исключением одного небольшого кусочка, где мне нужно превратить мои токены в дерево разбора.

Токены уже помечены и готовы к работе, но я не хочу делать свой собственный генератор дерева разбора. Я искал приложения для этого, но всегда сталкивался с очень усложняющими или чрезмерно усердными приложениями, и все, что я хочу - это превратить список типов токенов в дерево разбора, ни больше, ни меньше. Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 22 декабря 2009

Самым простым генератором парсера является yacc (или bison).

Бизон - это просто Гарри Якк (то есть у него больше возможностей).

Одним из них является также создание объекта синтаксического анализатора C ++ (а не функции C).
Просто добавьте в файл yacc следующее:

%skeleton "lalr1.cc"
1 голос
/ 22 декабря 2009

Канонический генератор парсера называется yacc . Есть версия GNU, которая называется bison . Оба эти инструмента основаны на C, поэтому они должны хорошо интегрироваться с вашим кодом C ++. Существует инструмент для Java, который называется ANTLR , о котором я слышал очень хорошие вещи (т.е. он прост в использовании и мощный). Имейте в виду, что с yacc или bison вам придется писать грамматику на их языке. Это, безусловно, выполнимо, но не всегда легко. Важно иметь теоретический опыт разбора LR (k), чтобы вы могли понять, что это означает, когда он говорит вам исправить вашу неоднозначную грамматику.

0 голосов
/ 22 декабря 2009

В зависимости от ваших требований, Boost.Spirit может быть альтернативой. Он модульный, поэтому вы можете использовать только его компоненты.

...