Hallo Danny,
<!--( BLOCK 1 -->
<!--( INCLUDE header.html test )-->
<h1>Foo</h1>
<p>Das ist ein Dummy-Text.</p>
<!--( BLOCK 1.1 -->
<p>Fusszeile</p>
<!--)-->
<!--)-->
Um solche verschachtelten Strukturen zu parsen musst Du mit einem Stack arbeiten. (Ein Stack ist eine Liste, bei der Du nur ein Element hinten anhängen oder entfernen kannst)
Wenn Du auf ein Startelement triffst legst Du es oben auf den Stack, wenn Du auf ein Endelement triffst, muss das entsprechende Startelement auf dem Stack liegen, so dass Du die Struktur überprüfen kannst.
Da Du immer das Startelement auf dem Stack liegen hast, wenn Du auf die entsprechenden Unterelemente stößt, kannst Du so auch recht einfach einen Syntaxbaum erzeugen. (wobei Du beim Verarbeiten von Templates natürlich direkt die Ersetzungen vornehmen solltest, da Du dann nicht die ganze Datei im Speicher halten musst)
Es gibt auch Parsergeneratoren, die aus einer formalen Beschreibung der Grammatik einen Parser erzeugen.
Wenn Du die Programmiersprache nennst, die Du verwenden willst, kann Dir vielleicht jemand einen nennen, der Parser in dieser Sprache erzeugt.
Das muss bei dieser Sprache aber nicht einfacher sein, zumindest, wenn man noch nie einen Parsergenerator benutzt hat.
Grüße
Daniel