parser mit Gültigkeitsbereichen und Bedingungen

Ich schreibe ein C / C ++ / ... Build-System (ich verstehe, das ist Wahnsinn;)) und habe Probleme beim Entwerfen meines Parsers.

Meine "Rezepte" sehen so aus:

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
}

(Dies basiert auf dem supereinfachen libogg-Quelltextbaum)

# sind Kommentare,\ sind "newline escapes", dh die Zeile wird in der nächsten Zeile fortgesetzt (siehe QMake-Syntac).{} sind Bereiche wie in C ++ und global sind Einstellungen, die für jedes "Ziel" gelten. Das ist alles Hintergrund, und nichtDa relevant ... Ich weiß wirklich nicht, wie ich mit meinen Oszilloskopen arbeiten soll. Ich muss in der Lage sein, mehrere Bereiche und auch eine Form der bedingten Verarbeitung in den Zeilen von zu haben:

win32:DEFINES NO_CRT_SECURE_DEPRECATE

Die Parsing-Funktion muss wissen, auf welcher Ebene des Gültigkeitsbereichs sie sich befindet, und sich selbst aufrufen, wenn der Gültigkeitsbereich erhöht wird. Es gibt auch das Problem mit der Position der Klammern global { oderglobal{ oder wie im Beispiel).

Wie kann ich mit Standard C ++ und STL vorgehen? Ich verstehe, dass dies eine Menge Arbeit ist, und genau deshalb brauche ich einen guten Ausgangspunkt. Vielen Dank

Was ich bereits habe, ist der gesamte ifstream- und interne String / Stringstream-Speicher, sodass ich Wort für Wort lesen kann.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage