Tokenizer Entwurf und Ansätze in Proprietärer Skript-Sprache ok?
bearbeitet von MBmoin,
Zu [MB: Strukturierter Klartext zu Array mit Compiler oder Präprozessor???](https://forum.selfhtml.org/self/2021/feb/10/strukturierter-klartext-zu-array-mit-compiler-oder-praprozessor/1784506#m1784506) 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:
1. non-context-free: `[space(s)]`
2. 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