Я использую Boost :: Spirit, чтобы написать лексер парсера - PullRequest
0 голосов
/ 17 октября 2011

Я использую boost :: spirit для написания парсера, lexer

, вот что я хочу сделать.я хочу поместить функции и классы в структуры данных с переменными, которые они используют.поэтому я хочу знать, что было бы лучшим способом сделать это.

и какие части boost :: spirit лучше всего использовать для этого?

языки, которые я хочу использовать этона C / C ++ / C # / Objective C / Objective C ++.

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

1 Ответ

1 голос
/ 18 октября 2011

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

Дух отлично справляется с задачами разбора от маленького до среднего уровня. Язык довольно регулярный, со стандартными грамматиками и так далее. Производные от C и C языки, как правило, слишком сложны для Spirit. Это не значит, что вы не можете написать для них код синтаксического анализа. Просто это было бы слишком сложно строить и поддерживать, учитывая общий замысел Духа.

Я бы предложил загрузить Clang , если вам нужен хороший синтаксический анализатор C или C ++ (или его объективных вариантов). Это также компилятор, но он разработан модульным, так что вы можете просто ссылаться на его синтаксический анализ.

...