Определите парсеры, параметризованные с помощью субпарсеров в Boost Spirit

Я хотел бы преобразовать некоторый старый рукописный код синтаксического анализа в Boost Spirit и изучить (больше) духа в процессе. Старый код использует потоки и шаблоны для анализа определений для некоторых типов данных и некоторых контейнеров.

Некоторые типичные форматы:

VECTOR[number_of_items,(item_1, item_2 .... item_n)]
PAIR(p1, p2)
RECT[(left,top)-(right,bottom)]
Point( x, y )
Size( x, y )

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

 template<class T> std::istream& operator>>(std::Stream& in, std::vector<T>& v);

 template<class T1, class T2> std::istream& operator>>(std::istream& in, std::pair<T1, T2>& p);

 template<class T1, class T2> std::istream& operator>>(std::istream& in, RectType<T>& r);
 etc.

Анализатор (извлечение потока) для векторов вызывает синтаксический анализатор для типа шаблонов.

Используя их, можно анализировать определения целочисленных прямоугольников, двойных прямоугольников и векторов пар строк и целых чисел.

Возможно ли с помощью Spirit написать шаблонные парсеры, которые вызывают подпарсеры для типа шаблона?

Ответы на вопрос(2)

Ваш ответ на вопрос