moin,
Ich möchte es besser, kompetenter machen und hab dazu den Begriffen Tokenizer Lexer und Parser überflogen eben was so ein Compiler eben tut.
Da warst du schon in der richtigen Ecke unterwegs.
perfekt 😀
Einen richtigen Lexer brauchst du nicht […] du brauchst lediglich einen Parser.
ok?
[…]. Deine Sprache benutzt die Einrückungstiefe einer Zeile. […] In der Theorie sagt man, dass deine Sprache kontextsensitiv ist.
euer wissen möchte ich gerne haben 😕.
[…] Das macht das Parsen deutlich schwieriger.
Das was ich als beispiel geschrieben habe habe ich schon geparset, aber unschön und nicht gegliedert.
Grundsätzlich ist es meistens eine gute Idee das Problem, vor dem man steht, erstmal extrem zu vereinfachen und dafür eine Lösung zu finden. […]
Dann hatte ich wohl nix falsches im sinn gehabt 😉. Genauso habe ich es gemacht, aber mich nur mit der zweiten einrücktungstiefe beschränkt. Hilfsvariablen benötige ich keine, da ich das alles über eine rekursive funktion gelöst hab, die nichts zurück gibt und einen string extern behandelt. So kann man bis ins n-te hinein verschachteln. Ich weis aber nicht ob's gut ist 😕.
[…]. Ich würde an deiner Stelle damit beginnen, das Handling für Leerzeilen hinzuzufügen.
Ich müsste zunächst alle anderen non-printable characters ansehen
<end>
--->Title:<end>
--->--->-.listpoint<end>
<end>
--->--->Definition:--->{--->*}Description<end>
<end>
--->--->collum.1--->{--->*}-.collum.2<end>
<end>
Legende
.
steht für Leerzeichen<end>
steht für Zeilenumbruch--->
steht für Tabulator[character*]
steht für Zeichen n mal
Ich habe mir hier nur den kontextsenstiven Teil deines Problems rausgepickt, habe aber an andere Stelle im Forum auch schon über kontextfreie Parser geschrieben.
schaue ich mir sehr gern an - aber heute, nicht gestern 😉.
lgmb
Sprachstörung