*** Protokolldatei gestartet *** Datum: Mi. Nov 7 19:57:23 2012 [Mittwoch, 7. November 2012] [19:57:23] Betreten Sie haben den Kanal #forth-ev betreten (-bernd@p5DCD62F5.dip0.t-ipconnect.de). [Mittwoch, 7. November 2012] [19:57:28] Modus Kanalmodi: [Mittwoch, 7. November 2012] [20:05:25] Betreten MatthiasT hat den Kanal betreten (~mt@dslb-094-220-165-035.pools.arcor-ip.net). [Mittwoch, 7. November 2012] [20:05:54] Hallo Bernd [Mittwoch, 7. November 2012] [20:06:00] Hallo! [Mittwoch, 7. November 2012] [20:06:12] Kommt ja doch wer ;-) [Mittwoch, 7. November 2012] [20:06:21] So ein Wechsel des Chatprogramms ist nervenaufreibend [Mittwoch, 7. November 2012] [20:06:37] Nix klappt mehr und alle Gewohnheiten sind perdu [Mittwoch, 7. November 2012] [20:13:03] Muss ich mal mein net2o chatfähig machen, damit du wieder verwirrt wirst ;-) [Mittwoch, 7. November 2012] [20:13:11] https://groups.google.com/d/msg/comp.lang.forth/IAyf4wHMTig/TIsnJ65sFI4J ist nett ;) [Mittwoch, 7. November 2012] [20:15:02] Betreten Mandalargon hat den Kanal betreten (~Mandalarg@5.28.110.149). [Mittwoch, 7. November 2012] [20:15:36] Wie sollte mich net2o verwirren? Das ist doch sicher kompatibel auf layer7? Oder? [Mittwoch, 7. November 2012] [20:16:21] Weil es einfach wieder ein neues Chat-Programm ist ;-) [Mittwoch, 7. November 2012] [20:16:39] Ne, lass man. Ich warte dann auf die Portierung vom pidgin ;) [Mittwoch, 7. November 2012] [20:17:15] Und bis dahin nehme ich verschlüsselte Emails an ... [Mittwoch, 7. November 2012] [20:17:49] Betreten martin_53 hat den Kanal betreten (-quassel@pD953BBB4.dip.t-dialin.net). [Mittwoch, 7. November 2012] [20:17:56] Hallo Martin! [Mittwoch, 7. November 2012] [20:17:56] Grüß Euch [Mittwoch, 7. November 2012] [20:18:40] Ich muss vor 21.00 wieder weg. Gibt es schon ein Thema? [Mittwoch, 7. November 2012] [20:18:50] Aber der Satz "A word should consume its arguments" aus berufenem Munde gefällt mir. Vor allem, weil ihr ja zunehmend auf stack-balance setzt (Recognizer) ... [Mittwoch, 7. November 2012] [20:19:12] ( Ich hatte https://groups.google.com/d/msg/comp.lang.forth/IAyf4wHMTig/TIsnJ65sFI4J gefunden) [Mittwoch, 7. November 2012] [20:19:21] ( für die Nachzügler) [Mittwoch, 7. November 2012] [20:19:46] Der Recognizer konsumiert seine Argumente *wenn er erfolgreich ist*. [Mittwoch, 7. November 2012] [20:20:26] Mhm - mein Paawort suchen ... [Mittwoch, 7. November 2012] [20:21:45] Wäre imho das gleiche, wenn IF das Flag erhält, wenn es False ist (oder andersrum). [Mittwoch, 7. November 2012] [20:22:08] Ich finds verwirrend. Das ist schon alles [Mittwoch, 7. November 2012] [20:22:55] Das Verhalten der Recognizer ist halt um die Recognizer-Loop herum geschrieben [Mittwoch, 7. November 2012] [20:22:59] : do-recognizer ( addr u rec-addr -- token table ) [Mittwoch, 7. November 2012] [20:22:59] dup cell+ swap @ cells bounds ?DO [Mittwoch, 7. November 2012] [20:22:59] I perform dup ['] r:fail <> IF UNLOOP EXIT THEN drop [Mittwoch, 7. November 2012] [20:22:59] cell +LOOP [Mittwoch, 7. November 2012] [20:22:59] ['] r:fail ; [Mittwoch, 7. November 2012] [20:23:47] Wenn man dafür sorgen wollte, dass jeder Recognizer sein addr u auf jeden Fall konsumiert, müsste man es hier herumjonglieren. [Mittwoch, 7. November 2012] [20:23:59] Muss mal ausprobieren, welche Variante besser ist. [Mittwoch, 7. November 2012] [20:24:16] Jetzt muss nämlich jeder Recognizer selbst darauf achten, dass er diese Teile zurückgeben kann. [Mittwoch, 7. November 2012] [20:24:19] Das kostet ja auch. [Mittwoch, 7. November 2012] [20:24:26] Mein Loop schaut anders aus. Ergo auch die API zu den Recognizern. Ich kann auch nicht sagen, dass meine besser wäre. DIe macht ziemlich viel Stack-Voodoo. [Mittwoch, 7. November 2012] [20:25:21] Außerdem will ich auch mal NIH spielen. Sonst bin ich immer nur das Opfer ;) [Mittwoch, 7. November 2012] [20:25:23] Ich hab' in einem experiementellen Branch von Gforth die Header jetzt so umgebaut, dass das table ein normales xt ist, und nicht was anderes. [Mittwoch, 7. November 2012] [20:25:53] Das Recognizer-Interface in Gforth gilt noch nicht als "stabil" [Mittwoch, 7. November 2012] [20:26:04] Muss mal die andere Variante implementieren, um zu vergleichen. [Mittwoch, 7. November 2012] [20:26:20] Kann sein, dass sich herausstellt, dass es doch nicht so viel Stack-Voodoo ist. [Mittwoch, 7. November 2012] [20:26:40] NIH Not invented here? [Mittwoch, 7. November 2012] [20:26:56] Mein Hauptargument gegen den gforth-Recognizer deckt sich mit ERathers Argument. Das ist nicht technisch, eher methodisch. [Mittwoch, 7. November 2012] [20:27:12] : do-recognizer ( addr u rec-addr -- token table ) [Mittwoch, 7. November 2012] [20:27:12] dup cell+ swap @ cells bounds ?DO [Mittwoch, 7. November 2012] [20:27:12] 2dup I -rot 2>r [Mittwoch, 7. November 2012] [20:27:12] perform dup ['] r:fail <> IF 2r> 2drop UNLOOP EXIT THEN drop [Mittwoch, 7. November 2012] [20:27:12] 2r> [Mittwoch, 7. November 2012] [20:27:12] cell +LOOP [Mittwoch, 7. November 2012] [20:27:12] 2drop ['] r:fail ; [Mittwoch, 7. November 2012] [20:27:23] So sähe die Loop aus mit "consume all your arguments" [Mittwoch, 7. November 2012] [20:27:59] Klar ist, dass die Info irgendwo gehalten werden muss. Das kann IMHO der recogizer loop besser machen: Er macht es einmal, anderenfalls macht es jeder Recognizer für sich. Das ist fast schon ein factor [Mittwoch, 7. November 2012] [20:29:08] Stimmt. [Mittwoch, 7. November 2012] [20:29:45] Ich bau' das jetzt mal testweise um. [Mittwoch, 7. November 2012] [20:30:25] prima :) [Mittwoch, 7. November 2012] [20:32:26] Das Problem, das ich bei jeder API-Änderung habe, ist aber, das mit der jeweiligen Vorgängerversion compilieren können zu müssen ;-) [Mittwoch, 7. November 2012] [20:33:34] da hab ich das besser. Ich crosscompiliere von weit genug weg, da ist kein staging und selbst-übersetzen dabei [Mittwoch, 7. November 2012] [20:34:46] Wir haben so das Prinzip "die alte Gforth-Version muss die neue übersetzen können" [Mittwoch, 7. November 2012] [20:35:05] Dabei aber auch nicht *alles*, sondern nur den Cross-Compiler. [Mittwoch, 7. November 2012] [20:36:34] Ist ja auch nicht verkehrt. Im Amforth strebe ich nur an, dass alter Forth Quellcode weiterhin funktionieren soll. Wobei ich das aber nicht dogmatisch sehe. Es gab schon Brüche.. [Mittwoch, 7. November 2012] [20:36:59] Bspl. 17.6.1.0170 -TRAILING [Mittwoch, 7. November 2012] [20:37:00] dash-trailing STRING [Mittwoch, 7. November 2012] [20:37:00] ( c-addr u1 -- c-addr u2 ) [Mittwoch, 7. November 2012] [20:37:00] Da bleibt zuminsest das c-addr. Und das macht IMHO Sinn. Ansonsten müsste ich schreiben '123456 dup 67 -trailing' sieht nicht wirklich einfacher aus. [Mittwoch, 7. November 2012] [20:39:33] Oder bei einem String irgendwas wie over swap -training [Mittwoch, 7. November 2012] [20:39:44] Das ist nicht wirklich sinnvoll. [Mittwoch, 7. November 2012] [20:40:09] Genau - also Stackarithmetik und Zeitverlust. [Mittwoch, 7. November 2012] [20:41:39] 'Dem Grunde nach hört sich das gut an. Argumente konsumieren, aber nicht als Dogma. Wenn ich so DPans94 durchsehe, scheinen mir doch so über 70% konsumierend zu sien. [Mittwoch, 7. November 2012] [20:42:19] Die umgeschriebenen Recognizer laufen *fast*, nur irgendwie habe ich eine Newline in den Test-Ausgaben... [Mittwoch, 7. November 2012] [20:42:27] Die da angeblich nicht sein darf... [Mittwoch, 7. November 2012] [20:43:44] Wie sagt mein Namensvetter mit den kurzen Armen dann? "Misst!" [Mittwoch, 7. November 2012] [20:44:37] Also ich hab jetzt nichts im CORE gefunden, was den Parameter _nicht_ konsumiert (DUP mal ausgenommen) [Mittwoch, 7. November 2012] [20:45:27] Und OVER ;-) [Mittwoch, 7. November 2012] [20:45:47] :-* [Mittwoch, 7. November 2012] [20:46:17] Eben: Dem Grunde nach, ist das konsumieren (fast) Standard und es gibt begründete Ausnahmen. [Mittwoch, 7. November 2012] [20:49:39] Forth 200x ist jetzt RC?! (Grade kam eine Mail eingetrudelt) [Mittwoch, 7. November 2012] [20:49:45] wow [Mittwoch, 7. November 2012] [20:50:57] Ja. [Mittwoch, 7. November 2012] [20:51:27] Aber erst seit gerade eben :-) [Mittwoch, 7. November 2012] [20:51:41] Wer schreibt das als Meldung für die VD? [Mittwoch, 7. November 2012] [20:52:32] So viel ich weiß, bin ich eh "Freiwilliger" für den EuroForth-Bericht, und da passt das dann auch 'rein. [Mittwoch, 7. November 2012] [20:53:48] Noch gibt's einen Stack Underflow, wenn ein unbekanntes Wort in den Recognizer-Stack hineingeschoben wird. [Mittwoch, 7. November 2012] [20:53:55] Da passt noch nicht alles... [Mittwoch, 7. November 2012] [20:54:14] Auf http://www.forth200x.org/ finde ich nichts - bin ich zu dumm? [Mittwoch, 7. November 2012] [20:54:48] Peter Knaggs hat es über eine yahoo Maillingliste kundgetan. [Mittwoch, 7. November 2012] [20:55:13] http://www.forth200x.org/documents/forth-rc1.pdf [Mittwoch, 7. November 2012] [20:58:18] Jetzt hab' ichs. [Mittwoch, 7. November 2012] [20:59:57] So, jetzt funzen die Recognizer :-) [Mittwoch, 7. November 2012] [21:00:03] Und konsumieren ihre Argumente. [Mittwoch, 7. November 2012] [21:00:21] Das letzte Problem war nur noch ein Überbleibsel in no.extension, das den -13 throw macht. [Mittwoch, 7. November 2012] [21:00:35] Und - ich merke gerade ich habe meine persönliches Zeitbudget überzogen: Tschüss. [Mittwoch, 7. November 2012] [21:00:36] Echtzeitprogrammierung hat was charmantes ;) [Mittwoch, 7. November 2012] [21:00:42] Glückwunsch! [Mittwoch, 7. November 2012] [21:00:47] Ciao Martin [Mittwoch, 7. November 2012] [21:01:01] Beenden martin_53 hat den Server verlassen ("http://quassel-irc.org - Chat comfortably. Anywhere."). [Mittwoch, 7. November 2012] [21:01:22] Die Tatsache, dass das völlig schmerzfrei vor sich ging, heißt, dass die Behauptung "Argumente konsumieren ist gut" stimmt. [Mittwoch, 7. November 2012] [21:01:45] Nur bei no.extension hat's nicht gestimmt: das hat bislang vor dem -13 throw seine Argumente konumiert... [Mittwoch, 7. November 2012] [21:01:54] Obwohl natürlich der throw sowieso aufräumt. [Mittwoch, 7. November 2012] [21:02:01] konsumiert [Mittwoch, 7. November 2012] [21:03:59] jo [Mittwoch, 7. November 2012] [21:04:40] Dem fehlten dann die Argumente... [Mittwoch, 7. November 2012] [21:08:28] Bei dem r:fail und Co würdest Du bleiben? Also die vtable mit den drei XT drinnen? [Mittwoch, 7. November 2012] [21:08:46] Nein, das ist jetzt ein xt mit "intelligent compile," geworden [Mittwoch, 7. November 2012] [21:09:03] Beispiel Float: [Mittwoch, 7. November 2012] [21:09:07] : r:fnumber ; [Mittwoch, 7. November 2012] [21:09:07] compile> drop postpone Fliteral ; [Mittwoch, 7. November 2012] [21:09:07] lit> postpone Fliteral ; [Mittwoch, 7. November 2012] [21:09:49] Hintergrund: Normale Wörter sind dann vollwertige Tokens, da muss nichts extra mehr zurückgegeben werden. [Mittwoch, 7. November 2012] [21:10:09] Andere Recognizer basteln sich ein "Dummy-Wort" wie dieses r:fnumber, das die verschiedenen Aktionen ausführt. [Mittwoch, 7. November 2012] [21:10:36] Ist das schon im CVS? [Mittwoch, 7. November 2012] [21:10:51] Im Git, ich bastele da am offenen Herzen, und habe dafür ein Git-Repository gemacht. [Mittwoch, 7. November 2012] [21:11:32] git clone http://bernd-paysan.de/gforth [Mittwoch, 7. November 2012] [21:11:50] http://git.bernd-paysan.de/?p=gforth.git;a=summary [Mittwoch, 7. November 2012] [21:12:11] Letzteres ist zum Angucken per Browser. [Mittwoch, 7. November 2012] [21:12:53] Ok, schau ich mir mal genauer an [Mittwoch, 7. November 2012] [21:13:11] Beenden Mandalargon hat den Server verlassen (Connection reset by peer). [Mittwoch, 7. November 2012] [21:13:42] : word-recognizer ( addr u -- xt | r:fail ) find-name dup 0= IF drop ['] r:fail THEN ; [Mittwoch, 7. November 2012] [21:13:47] Ohne Prelude [Mittwoch, 7. November 2012] [21:14:50] Das geht aber eben nur, wenn man die Header-Mods macht, die ich dort 'reingebastelt habe... [Mittwoch, 7. November 2012] [21:15:13] Also mit vtable für compile, und dem Helfer für Postpone. [Mittwoch, 7. November 2012] [21:16:45] Ich will ja nur die API übernehmen. Wenn ich das richtig überblicke kommt jetzt vom Recognizer immer ein XT zurück, der im Fehlerfall auf r:fail verweist. Darauf triggert der recognizerloop und organisiert den Rest [Mittwoch, 7. November 2012] [21:17:11] compile, und Co können mit dem XT dann sinnvolle Sachen machen [Mittwoch, 7. November 2012] [21:17:27] Je nach state [Mittwoch, 7. November 2012] [21:17:52] Genau. [Mittwoch, 7. November 2012] [21:18:28] Es muss dann halt eine Möglichkeit in deinem System geben, gewissen xts ein besonderes compile,-Verhalten zu geben. [Mittwoch, 7. November 2012] [21:18:44] Das kann man durchaus mit einem deferred compile, machen, das dann halt nachfragt. [Mittwoch, 7. November 2012] [21:18:59] Also dup ['] r:fail = IF -13 throw THEN [Mittwoch, 7. November 2012] [21:19:27] Oder dup ['] r:num = IF postpone literal THEN [Mittwoch, 7. November 2012] [21:20:12] Wenn man das so macht, braucht man allerdings noch eine "portable" API, um die Hilfswörter für den Recognizer zu definieren. [Mittwoch, 7. November 2012] [21:20:48] Zumindest müssen die namen für die Standard-Recognizer-Ergebnisse feststehen. Wie eben r:fail [Mittwoch, 7. November 2012] [21:21:01] r:fail ist definitiv Teil der API. [Mittwoch, 7. November 2012] [21:21:13] Das ist ja das, worauf die anderen abfragen müssen. [Mittwoch, 7. November 2012] [21:21:29] jupp [Mittwoch, 7. November 2012] [21:21:43] Wahrscheinlich kann man compile> so definieren, dass es obige Code-Sequenz in ein deferred compile, einhängt. [Mittwoch, 7. November 2012] [21:23:20] Interessanterweise hast Du r:fail zweimal eingebaut: Einmal beim Recognizer und zum anderen als Ergebnis des Recognizerloops [Mittwoch, 7. November 2012] [21:25:43] Wie meinst du? [Mittwoch, 7. November 2012] [21:26:02] Die Recognizerloop ist von der API her ein Recognizer. [Mittwoch, 7. November 2012] [21:26:11] Vergiss es, ich habe laut gedacht. [Mittwoch, 7. November 2012] [21:27:45] Die Sequenz : r:num ; >vtable ist aber auch nicht eben intuitiv ;) [Mittwoch, 7. November 2012] [21:28:42] Das liegt daran, dass der cross-compiler noch kein compile> kann. [Mittwoch, 7. November 2012] [21:28:57] Das werd' ich dem schon noch beibringen. [Mittwoch, 7. November 2012] [21:29:14] Eigentlich sollte man [Mittwoch, 7. November 2012] [21:29:19] : r:num ; [Mittwoch, 7. November 2012] [21:29:27] compile> drop postpone Literal ; [Mittwoch, 7. November 2012] [21:29:32] lit> postpone Literal ; [Mittwoch, 7. November 2012] [21:29:35] schreiben. [Mittwoch, 7. November 2012] [21:29:43] Also: Interpretiert zu nix [Mittwoch, 7. November 2012] [21:29:58] Compiliert sein xt, indem es nur das Literal postponed [Mittwoch, 7. November 2012] [21:30:03] und serialisiert sich ebenso. [Mittwoch, 7. November 2012] [21:31:27] Das war ja mal ein produktiver Abend. Ich schließe mich dann Martin an [Mittwoch, 7. November 2012] [21:31:37] Bis neulich dann [Mittwoch, 7. November 2012] [21:32:04] Ciao! [Mittwoch, 7. November 2012] [21:32:14] Verlassen MatthiasT hat den Kanal verlassen. [Mittwoch, 7. November 2012] [21:32:19] * BerndPaysan macht das Licht aus