Я хочу написать небольшой язык, и я решил использовать Повысить дух. Это выглядит хорошо для меня. Я знаю, что могу использовать дух, чтобы написать лексер, и парсер, чтобы создать синтаксическое дерево. Возможно ли в Spirit отсканировать синтаксическое дерево и получить результаты. (или это только для разбора?) Есть ли доступные функции для генерации результатов, или мне нужно использовать другой инструмент? Извините за этот простой вопрос, но я действительно не смог найти информацию при кратком рассмотрении документации Spirit.
В дополнение к этому, могу ли я использовать свой собственный лексер с парсером, написанным с использованием Spirit.
Заранее спасибо.
Действительно, это действительно будет кандидатом на «не реальный вопрос». Если бы вы не ссылались на страницу с документами, я бы отклонил ее только по этой ссылке.
Возможно, вы пропустили образцы:
http://www.boost.org/doc/libs/1_51_0/libs/spirit/example/qi/compiler_tutorial/
много версий простого калькулятора выражений (возможно, посмотрите на них в последовательном порядке)
заклинатель
Этот компилятор способен компилировать и запускать простой язык. образцы Вот:
/* The factorial (in conjure) */
int factorial(n)
{
if (n <= 0)
return 1;
else
return n * factorial(n-1);
}
int main(n)
{
return factorial(n);
}
mini C
пример компилятораQ. В дополнение к этому, могу ли я использовать свой собственный лексер с парсером, написанным с использованием Spirit?
A. Да. Просто предоставьте интерфейс итератора токена и используйте его в качестве входных итераторов для API разбора. Смотрите примеры с Spirit Lex для получения дополнительной информации.
Других решений пока нет …