Архив 09.2008

Создание парсеров на C++ с помощью Boost::Spirit

Иногда в проектах на C++, (у кого-то чаще, у кого-то реже) возникает задача разбора какого-либо структурированного текста. То есть по сути, создание парсера того или иного языка. Обычно, к этой задаче подходят одним из следующих способов:


  • Написание парсера вручную, анализируя строку средствами C++, возможно, используя регулярные выражения.

  • Генерация парсера с использованием соответствующих утилит, например, Antlr, lex/yacc и т.п.

Несколько иной подход предоставляется библиотекой Spirit в составе Boost. О нем я расскажу ниже.

Boost::Spirit – библиотека, предназначенная для описания текста грамматики вместе с семантическими действиями прямо в C++ коде. Грамматика буквально конструируется из примитивных парсеров путем использования соответствующим образом перегруженных операторов C++. Таким образом, описание грамматики выглядит достаточно близко к классическому описанию, как например БНФ.

Читать дальше »

Создание плазмоидов: One-Line Calculator

Недавно я написал свой первый апплет для KDE4, в связи с чем хочу поделиться опытом разработки.

Итак, мой апплет: Plasma One-Line Calculator. Крайне простая и вместе с тем необходимая мне вещь. Работает он следующим образом: на рабочем столе отображается текстовое поле, в которое можно ввести выражение. При нажатии Enter это выражение вычисляется и в поле отображается результат вычисления. Вот и все.

Для того, чтобы реализовать вычисление, я использовал возможности скриптового движка в KDE4.

Исходный код

Исходный код плагина состоит из трех файлов:

Читать дальше »