Как анализируются файлы текстовых данных в современном C ++?

Я (слишком) часто сталкиваюсь с задачей анализа файлов текстовых данных - типа текстового структурированного представления данных, который вы использовали до того, как "все" использовали 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?

11
задан Community 23 May 2017 в 10:29
поделиться