MB: Tokenizer Entwurf und Ansätze in Proprietärer Skript-Sprache ok?

Beitrag lesen

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:

  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