1unitedpower: Magic Strings für Token Replacement

Beitrag lesen

Frage
Es geht mir um Zeichen-Kombinationen im jeweiligen Kontext einer MarkUp-> > Sprache die nicht von jeweligen Parser interpretiert werden.

Du hast es hier mit zwei formalen Sprachen zu tun, und zwar mit HTML und deiner Template-Sprache. HTML ist vorgegeben, die Template-Sprache entwickelst du selber. Es gibt verschiedene Arten die beiden Sprachen übereinander zu legen, es gibt grob vereinfacht drei populäre Vorgehensweisen:

  1. Du könntest deine Template-Sprache zu einer Supermenge von HTML machen. Dann würde deine Grammatik alle Regeln der HTML-Grammatik besitzen und zusätzliche Regeln für Template-spezifischen Features.

  2. Du könntest deine Sprache in HTML einbetten. Dann müsstest du dafür sorgen, dass die Sonderzeichen von HTML in den Template-Fragmenten mit HTML-Entities maskiert werden.

  3. Du könntest HTML in deine Template-Sprache einbetten. Dann müsstest du dafür sorgen, dass die Sonderzeichen der Template-Sprache in den HTML-Fragmenten maskiert werden.

Die erste Methode ist recht aufwändig, weil du einen kompletten HTML-Parser in deine Template-Engine integrieren müsstest. Deswegen gehe ich da mal nicht weiter drauf ein.

Für die Methoden zwei und drei ist es eine gute Idee, die Sonderzeichen deiner Template-Sprache so zu wählen, dass sie sich möglichst nicht mit den Sonderzeichen von HTML überschneiden. Auf diesen Gedanken bist du ja rein instinktiv auch schon gestoßen. Je nach gewünschten Features wirst du aber nicht ganz um Maskierungen herum kommen. Ob du nun den zweiten oder dritten Weg wählst, hängt maßgeblich davon ab, ob deine Template-Engine server- oder clientseitig laufen soll. Falls serverseitig, dann ist Option drei eine gängige Wahl.