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.