moin,
Zu MB: Strukturierter Klartext zu Array mit Compiler oder Präprozessor??? will ich einen Tokenizer in einer proprietären Skriptsprache entwickeln ohne Regular Expressions. Beim Entwurf waren mir vorab Probleme bewusst, die ich hier anführen werde. Gegeben ist ein string
was ein multidimensionales hashmap
beschreibt:
Legende
Zur Veranschaulichung:
.
ist ein Leerzeichen--->
ist ein Tabulator<end>
ist ein Zeilenumbruch kein Zeilenende
:ARRAY--->--->--->--->- this is an array<end>
..0:STRING--->--->--->- this is a string<end>
..1:ARRAY>--->--->--->- this is an array<end>
....0:STRING->--->--->- this is a string<end>
....1:CODE--->--->--->- this is a code<end>
Ich will mit non-context-free die Einrückungen und mit context-free die Variablen Argumente mit dem zugehörigen Text arbeiten.
Die liste soll [ STRING, [ STRING, CODE ] ]
ausdrücken.
rauskommen soll dann:
[
[[0],[],['ARRAY'],["this is an array"]],
[[1],[0],['STRING'],["this is a string"]],
[[1],[1],['ARRAY'],["this is an array"]],
[[2],[0],["STRING"],["this is a string"]],
[[2],[1],["CODE"],["this is a code"]]
]
Es ist gleich ob einen chaotische Indentations-Rangfolge entsteht. Es kann auch so aussehen:
....10...:.ABCD--->- text text text<end>
..:FGH->--->--->--->---><end>
--->--->- text text<end>
......3<end>
:<end>
GHIJ<end>
--->- text
rauskommen soll dann:
[
[[2],[10],['ABCD'],["text text text"]],
[[1],[],['FGH'],["text text"]],
[[3],[3]['GHIJ'],["text"]]
]
Der Indikator soll nur sein:
- non-context-free:
[space(s)]
- context-free:
[index][":"][Capital(s)][tab(s)]["- "][string]
Ich hab derweil Makro Funktionen entwickelt die Regular Expressions zum geringen teil ersetzen.
Wäre meine Überlegung ok oder ist es sinnvoller das ich diese verwerfe?
lgmb
Sprachstörung