Absender: Uwe Berger
Datum: Di, 29.03.2011 23:12:15
In-reply-to:
<CEAAFE4A-1B5A-4163-ABAF-053B7261EC0A@xxxxxxxxxxxxxxx>
References:
<1ac236efdb2ae353dba0652e0009d0d7.squirrel@xxxxxxxxxxxxxxxxxxx> <BDD47587-412D-4D50-AC42-4B488A95575E@xxxxxxxxxxxxxxx> <4CF809BA.3070600@xxxxxxx> <B796DEF3-49CB-4F9A-B0AA-D42C7000926D@xxxxxxxxxxxxxxx> <20110309225657.432787bb.bergeruw@xxxxxxx> <4D19D5D5-4972-4D76-95F1-AFA65B36A076@xxxxxxxxxxxxxxx> <4D80E3E5.8050702@xxxxxxx> <C2269E6E-EBB2-40E9-B1EB-06984CD3ECDF@xxxxxxxxxxxxxxx> <9DDF1CF6-342A-4681-8296-77899A820AA8@xxxxxxxxxxxxxxx> <20110320213615.6522f43a.bergeruw@xxxxxxx> <6FB8CA6E-9D8F-4556-936C-0B0CC95B789A@xxxxxxxxxxxxxxx> <1a7fbb756d29789435f7638aa199bea6.squirrel@xxxxxxxxxxxxxxxxxxx> <77714C4A-E5BA-4D31-AFE5-4D20122ACC7C@xxxxxxxxxxxxxxx> <4D921683.5060902@xxxxxxx> <CEAAFE4A-1B5A-4163-ABAF-053B7261EC0A@xxxxxxxxxxxxxxx>
MoinMoin, > Spontan habe ich da noch ein paar kleinere Fragen, allerdings nur auf der EBNF-Grammatik der > Dokumentation basierend, ich habe den Code noch nicht ausprobiert: > ich hätte jetzt nicht gedacht, dass jemand so intensiv die EBNF in der Doku liest :-). Für die letzte Änderung habe ich sie wahrscheinlich nur halbherzig angepasst, mal sehen ob es trotzdem passt: > - Das Sprungziel muss immer mit einer Zahl gekennzeichnet werden, Text-Labels sind also nicht > möglich? > korrekt, es sind nur Zahlen zugelassen. Das ist der Kompromiss um auch die alte Zeilennummerierung zuzulassen. Text-Label hätten einen größeren Eingriff im Code erfordert. > - Der Doppelpunkt hinter dem Label ist optional? > ja. Ich habe den Doppelpunkt nur deshalb optional zugelassen, weil Label in vielen BASIC-Dialekten mit selbigen Zeichen gekennzeichnet werden. > - Auf das Label muss immer auch noch eine Anweisung in derselben Zeile folgen? > goto 10 > 10: von B > print "hier ist korrekt..." > wäre also kein gültiges Programm? > hmm, in der Hinsicht ist die Darstellung im EBNF (ungewollt) richtig. Es muss ein Statement kommen, ansonsten wird ein Syntax-Fehler geschmissen. (habe ich gerade ausprobiert) Absicht ist es aber nicht und werde ich mir nochmal anschauen. Eigentlich hatte ich in der aktuellen Version reichlich Gehirnschmalz in solcher Sachen wie Leerzeilen und Einschübe verwendet, um die Formatierung von BASIC-Quelltext zu ermöglichen (Frank hatte sich da beschwert, dass es bisher nicht möglich war...:-)). Ungetestet dachte ich damit auch Label ohne Statement zugelassen zu haben. Aber wenn man nicht testet, kann man nie sicher sein...;-) > - Laut EBNF wäre auch folgendes Programm gültig: > GOTO CALL ("foo", 42) > das dürfte aber wohl kein korrektes Programm sein. > doch, für den Fall dass call() eine Funktion, also mit Rückgabewert (natürlich vom Typ Integer) ist! Das ist eine ganz bewußte Geschichte, die ich vor einigen Versionen eingeführt habe: die Sprungziele von GOTO und GOSUB können auch Ergebnisse von Ausdrücken sein. Das ermöglich ein paar interessante Programmkonstrukte: statt: a=[eine Berechnung] if a=10 goto 10 if a=20 goto 20 ... geht auch das: goto [eine Berechnung] Um so wichtige war, dass einer der letzten Bugfixes den Endlos-Loop bei Nichtvorhandensein eines Sprungzieles behob.... Grüße Uwe PS.: und natürlich vielen Dank für das Feedback! Falls jemand Fehler im Interpreter findet, wäre es super, wenn diese gemeldet werden.