LINUX.ORG.RU

Чем распарсить конфиг?


0

0

Добрый день, товарищи! Задача такая. Есть ПО, к которому нужно сделать конфиг. Когнфиг приблизительно такой:

#есть продукция

prod prod1{ name SuperProdukcia dev 1 }

prod prod2{ name SuperProdukcia2 dev 3 }

prod prod3{ name SuperProdukcia3 dev 2 }

#есть линии производства line line1{ prod prod1, prod3 }

line line2{ prod prod2 }

Вот как я себе представляю должен выглядеть этот конфиг. Есть ли опенсурсные либы C/C++ при помощи которых уже подобное реализовано. Ну, например, после разбора мне вернут набор вложенных объектов, или какой-нибудь список. Спасибо.

кривовато написал конфиг

prod prod1{

name SuperProdukcia

dev 1 }

prod prod2{

name SuperProdukcia2

dev 3 }

prod prod3{

name SuperProdukcia3

dev 2 }

#есть линии производства

line line1{

prod prod1, prod3

}

line line2{

prod prod2

}

alabalaev
() автор топика

если нет перекрывающих скобок, то это похоже регулярный язык и его можно распознать при помощи регулярных выражений в бусте наверное есть или можно pcre от перла поюзать, что-то типа
"^prod (.*){ name (.*) dev \d{1} }"
как-то так

dimon555 ★★★★★
()
Ответ на: комментарий от alabalaev

можно тогда писать конфиги на lua, python и т.д. потом вызывать eval этого файла и извлекать из основной программы полученные конструкции

dimon555 ★★★★★
()

самое универсальное средство --- разбирать с помощью yacc и lex, как уже сказали. Конкретные утилиты выбирай согласно используемому языку программирования.

gaa ★★
()
Ответ на: комментарий от imp

+ много.

А ещё можно руками написать автомат (хотя бы для лексического анализа). Больше времени уйдёт, зато будешь знать, как это работает.

random_code ★★
()

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

Тебе шашечки(парсер) - или ехать(читать/сохранять данные программы) ?

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

deadman ★★
()

Не понимаю, зачем выдумывать свой формат. Чем тебе XML, JSON, Перловские хэши не устраивают. И библиотек для разбора тьма.

Ian ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.