парсер с областями действия и условными выражениями

Я пишу 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, так что я могу читать слово за словом.

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

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