парсер с областями действия и условными выражениями
Я пишу C / C ++ / ... систему сборки (я понимаю, что это безумие;)), и у меня возникают проблемы при разработке моего парсера.
Мои «рецепты» выглядят так:
global
{
SOURCE_DIRS src
HEADER_DIRS include
SOURCES bitwise.c \
framing.c
HEADERS \
ogg/os_types.h \
ogg/ogg.h
}
lib static ogg_static
{
NAME ogg
}
lib shared ogg_shared
{
NAME ogg
}
(Это основано на супер простом дереве исходного кода libogg)
#
комментарии,\
являются "выходами новой строки", что означает, что строка продолжается на следующей строке (см. syntac QMake).{}
являются областями, как в C ++, и глобальными являются настройки, которые применяются к каждой «цели». Это все фон, а нетот релевантно ... Я действительно не знаю, как работать с моими прицелами. Мне нужно будет иметь несколько областей действия, а также форму условной обработки в следующих строках:
win32:DEFINES NO_CRT_SECURE_DEPRECATE
Функция синтаксического анализа должна знать, на каком уровне она находится, и вызывать себя всякий раз, когда она увеличивается. Существует также проблема с расположением брекетов (global {
или жеglobal{
или как в примере).
Как я могу пойти по этому поводу, используя стандартные C ++ и STL? Я понимаю, что это большая работа, и именно поэтому мне нужна хорошая отправная точка. Спасибо!
У меня уже есть целое хранилище ifstream и внутренняя строка / stringstream, так что я могу читать слово за словом.