Danke, Jesus. Das wäre eine grosse Hilfe. BTW, wie veränderst du clientseitig die Schriftgrösse? Ich kannte bisher nur das bekannte Strg+Mausrad bei Firefox? Das verändert aber das gesamte Schriftbild.
[quote]Wieso dass denn? Jede Variablendeklaration beginnt mit %, dann muss mind. 1 bis max. 255 alphanum. Zeichen folgen, Abschluss bildet ein %, dann kommt ein darauffolgender Doppelpunkt, dann die Variablenwerte. Ich sehe da kein Problem. Oder meinst du die Referenzen innerhalb der Wertedefinition? Dann hast du natürlich recht. Andererseits ist es ja üblich und auch einfach zu implementieren, dass der Tokenizer Escapezeichenfolgen erkennen kann. Da würde sich eine Zweizeichenvorschau (wie bei %|%) sogar erschwerend bei der Implementierung auswirken... glaube ich.[/url]
Wurde bereits geklärt, siehe ein paar Threads weiter oben.
Zitat
Ausgabezeile und Variablendeklarationen könnten je eine eigene Semantik besitzen. Für Ausgabezeilen hat ja auch deine Syntax absolut zugereicht. Einziges Sonderzeichen ist %, dass entweder einen Variablennamen einleitet, oder eben das Prozentzeichen charakterisiert mit %%. Probleme gibt es ja nur bei den Deklarationen (und da nur in der Variablenwertedefinition), weil wir % für Referenzen auf andere Variablen verwenden, % als eigenständiges Zeichen haben müssen, | trennt die Werte und | muss auch als Zeichen verwendbar sein. Daher meinte ich, dass die erste Zeile nicht unbedingt dieser auszuklügelnden Syntax der VarDecl. entsprechen muss. Andererseits sollte die Sprache in sich vielleicht geschlossen sein? *kopfkratz* Hm... na, du wirst das schon machen. Jedenfalls meinte ich das mit der geteilten Semantik.
...
Äh, die erste Zeile (die einzige Zeile, die ausgegeben wird) hat ja ein eigenes Format... Der komplette Text der Zeile wird (nach Verarbeiten der Variablen) ausgegeben. Den Kram mit den Escapezeichen habe ich ja auf \ umgestellt, das dürfte etwas übersichtlicher sein.
Mhm, also ich finde das Thema *ein bisschen* zu schwierig, und da ich sowie so nicht genügend Zeit finden werde lass ichs für's erste.
[Ich habs soweit das ich unendlich Vars deklamieren könnte, allerdings keine Vars in Vars.
Das ganze dann als Lustige Delphi Konsolen-App mit dem Namen 'Jesus_666-Skript Interpreter' )
[*]Die erste Zeile beinhaltet einen Text, der ausgegeben werden soll. Im Text können sich Variablen im Format %Variablenname% befinden[*]Alle darauffolgenden Zeilen beinhalten Variablendefinitionen im Format %Variablenname%:Wert|Wert|Wert...
...
Dazu hab ich mal eine Frage?
Darf man den Interpreter auch so bauen, dass er in allen Zeilen (nicht nur in der ersten) Text erlaubt und ebenso auch in der ersten Zeile Variablendefinitionen? Es würde für mich nämlich mehr Aufwand bedeuten, das ganze nur mit Text in der erste Zeiel zu machen.
Und ich wäre für den Backslash (\) als Escape-Zeichen, weil ich die Interpretation bei %|% ziemlich schwierig finde. Beispiel:
Manni
Dazu hab ich mal eine Frage?
Darf man den Interpreter auch so bauen, dass er in allen Zeilen (nicht nur in der ersten) Text erlaubt und ebenso auch in der ersten Zeile Variablendefinitionen? Es würde für mich nämlich mehr Aufwand bedeuten, das ganze nur mit Text in der erste Zeiel zu machen.
...
O_o Das kann ich irgendwie nicht nachvollziehen. Inwiefern soll es einfacher sein, für jede Zeile überprüfen zu müssen, ob es sich um Text oder eine Variablendefinition handelt, als die erste Zeile auszusortieren und einfach den Rest als Variablendefinitionen zu betrachten?
Zitat
Und ich wäre für den Backslash (\) als Escape-Zeichen, weil ich die Interpretation bei %|% ziemlich schwierig finde. Beispiel:
Manni
...
Okay, ich ändere es. Hoffentlich bleibt die Definition danach stabil...
Wieso müssen die wichtigsten Threads immer dann aufgemacht werden, wenn ich gerade mal 'ne Woche nicht ins Forum kann?
Ein paar Fragen hab ich noch, das meiste hat sich beim Lesen des Threads geklärt:
1. Wann ist der Contest genau zu Ende? Die Angabe "Ende April" ist etwas ungenau.
2. Was mache ich, wenn mein Output mit einem Leerzeichen beginnen soll? Die werden ja ignoriert. Vielleicht sollte man die Möglichkeit haben, Leerzeichen (und Tabs) am Zeilenanfang zu maskieren.
Dann gibt es meinetwegen auch noch \ . Ehrlich gesagt ist mir die Sprache jetzt schon viel zu aufwendig - vor Allem die Einführung von \ als Escapezeichen hat die Verarbeitung um ein Vielfaches schwerer gemacht... Mein Interpreter wird garantiert nicht alle Auflagen erfüllen - und ich denke ernsthaft darüber nach, alles bis auf das absolute Minimum optional zu machen. Wer den meisten Kram interpretiert wird wohl auch die meisten Stimmen kriegen...
Das Ende für den Contest habe ich nicht festgelegt, weil der Anfang auch nicht festliegt. Bis jetzt ist ja nicht mal die Sprachspezifikation länger als ein paar Stunden am Stück konstant.
[nerv]
Hm, noch ein weiteres Zeichen, das man escapen können sollte: was ist, wenn mein Output mit # beginnen soll? Laut Spezifikation wäre das ein Kommentar, also müsste \# auch noch gehen.
[/nerv]
Vielleicht sollten wir noch \0x**** einfügen, um beliebige Unicode-Zeichen darzustellen. Nur um sicherzugehen.
Ich werde jetzt übrigens wirklich einen guten Teil der Sache optional machen - die Spezifikationen sind mit den ganzen Ausnahmen eher abschreckend. Eine komplette Sprache ist nett, aber ich bevorzuge eine, die man tatsächlich umsetzen kann, ohne dabei wie ein bulimisches Mädchen zum Klo zu rennen.
Dann habe ich hiermit wohl die Ehre, als Erster meinen Code vorzustellen: http://home.arcor.de/getoeteter_ork/rpg-ring/parser.php
Wie der Link schon vermuten lässt, ist mein Interpreter in PHP geschrieben und für die Konsolenanwendung gedacht. Änderungen des Codes bis Montag noch vorbehalten. (Diese Änderungen umfassen keinesfalls das Einfügen von Code anderer)
BTW: Dein Interpreter sieht so klein und schlank aus im Gegensatz zu meinem. o_o
Naja.
Ich habs ja mehr oder minder mit Absicht gemacht. ^^
boah, ich hab seit ich meinen interpreter geschrieben hab voll viel neues gelernt, meinen style geändert und finde den interpreter jetzt total scheiße o.o!
Hm, bis Montag...
War eigentlich auf ca. 'ne Woche mehr vorbereitet, mal sehen, ob ich's schaffe (morgen hab ich auf jeden fall keine Zeit).
Naja, wird schon werden.
Öhm, kleine Regelfrage noch:
Auf der ersten Siete ist die Frage aufgetaucht, was man mitmacht. Damals war die Planung, % als Escapezeichen zu benutzen, aber das wurde ja wieder verworfen. Wie muss der korrekt Output jetzt lauten (oder muss das 'ne Fehlermeldung ausspucken)?
Öhm, kleine Regelfrage noch:
Auf der ersten Siete ist die Frage aufgetaucht, was man mitmacht. Damals war die Planung, % als Escapezeichen zu benutzen, aber das wurde ja wieder verworfen. Wie muss der korrekt Output jetzt lauten (oder muss das 'ne Fehlermeldung ausspucken)?
...
Wird als nicht definierte Variable mit leerem Inhalt verarbeitet, würde ich sagen.
Ja, damit sind %% und \% äquivalent, aber IMO ist es auf diese Weise konsequent. Ihr wolltet ja unbedingt Backslashes...