Пример использования библиотеки boost::spirit

Аннотация

Задачи лексического, синтаксического и семантического анализа часто встречаются в повседневной практике разработчика программного обеспечения. Чаще всего в качестве входного потока выступает обычный символьный поток. Типичный пример подобного рода задачи - разбор файла настроек для какого-либо программного модуля. Такие задачи обычно решаются с помощью инструментария подобного flex и yacc. Однако для C++ существует более изящное решение. Библиотека boost::spirit позволяет существенно облегчить упомянутые этапы анализа, предлагая при этом компактную и ясную запись, легкую для внесения последующих изменений.

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




Код транслятора и виртуальной машины тестировался с gcc 3.4.2 и boost 1.33.0 для Linux. Скорее всего будет работать без изменений и на других платформах, поддерживаемых boost.

  • Статья.

  • Исходный код транслятора, виртуальной машины и сгенерированная doxygen документация.
    TransAndVmFull.tar.bz2 (44281 байт) или TransAndVmFull.tar.gz (50254 байт).
  • Исходный код транслятора и виртуальной машины без doxygen документации.
    TransAndVm.tar.bz2 (15946 байт) или TransAndVm.tar.gz (17526 байт).
  • Doxygen документация транслятора и виртуальной машины, разработанные в статье.

Last Updated: November 24, 2005