analisador com escopos e condicionais

Estou escrevendo um sistema de compilação C / C ++ / ... (entendo que isso é loucura;)) e estou tendo problemas para projetar meu analisador.

Minhas "receitas" ficam assim:

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
}

(Isso é baseado na árvore de código-fonte libogg super simples)

# são comentários,\ são "escapes de nova linha", o que significa que a linha continua na próxima linha (consulte QMake syntac).{} são escopos, como em C ++, e globais são configurações que se aplicam a todos os "destinos". Isso tudo é histórico, e nãoeste relevante ... eu realmente não sei trabalhar com meus escopos. Precisarei ter vários escopos e também uma forma de processamento condicional nas linhas de:

win32:DEFINES NO_CRT_SECURE_DEPRECATE

A função de análise precisará saber em que nível de escopo está e se chamar sempre que o escopo for aumentado. Há também o problema com a localização dos aparelhos (global { ouglobal{ ou como no exemplo).

Como eu pude fazer isso usando o Standard C ++ e o STL? Entendo que isso é muito trabalho e é exatamente por isso que preciso de um bom ponto de partida. Obrigado!

O que eu já tenho é todo o ifstream e o armazenamento interno de string / stringstream, para que eu possa ler palavra por palavra.

questionAnswers(4)

yourAnswerToTheQuestion