Я (слишком) часто сталкиваюсь с необходимостью разбирать файлы текстовых данных - вид представления структурированных текстовых данных, который вы использовали до того, как «все» использовали XML - это своего рода отраслевой стандарт.(Их слишком много.)
В любом случае, основная задача всегда состоит в том, чтобы взять текстовый файл и вставить то, что там, в какую-то структуру данных, чтобы наш код C ++ мог что-то сделать с информацией.
Теперь я реализовал несколько простых (и, конечно, глючных) парсеров вручную, и я мало чего презираю больше.: -)
Итак - мне было интересно, каково текущее состояние дел, когда я хочу "разобрать" структурированные текстовые данные в представление в памяти (подумайте: привязка данных XML для произвольного языка).
То, что я нашел до сих пор, было " Какой генератор парсера вы рекомендуете ", но я не уверен, что мне нужен генератор парсера (например, ANTLR ).
Очевидные кандидаты кажутся pegtl и Boost.Spirit , но оба они кажутся довольно сложными (но, по крайней мере, на языке) и в последний разЯ попробовал Spirit, ошибки компилятора сводили меня с ума.(И pegtl нужен C ++ 11-совместимый компилятор, который все еще остается проблемой (VC ++ 2005).)
Так что я упускаю более простое решение для получения чего-то вроде
/begin COMPU_METHOD
DEC " Decimal value"
RAT_FUNC
"%3.0"
"dec"
COEFFS 0 1.000000 0.000000 0 0.000000 1.000000
/end COMPU_METHOD
в структуру данных C ++?(Это просто произвольный пример того, как может выглядеть часть такого файла. Для этого формата я мог бы (и, вероятно, должен) купить библиотеку для ее анализа, поскольку она широко распространенадостаточно - что не для всех форматов, с которыми я сталкиваюсь.)
- или я должен просто пойти на сложность , скажем, Boost.Spirit?