Absender: Uwe Berger
Datum: Do, 02.12.2010 16:17:37
MoinMoin, ich will mal den Thread von Frank M. aufgreifen, der letztens den Basic-Interpreter für euren Bot ins Gespräch gebracht hat. Ich selbst bin der Entwickler dieses Interpreters, habe selbst keinen Bot (und auch keine Ambitionen dazu ...;-), bin aber schon daran interessiert, dass mein Interpreter ein Referenzprojekt bekommt. Der c't-Bot hat ja eine weite Verbreitung... Warum habe ich mich an dieser Liste angemeldet? Frank und ich sind Kollegen, sprechen also auch mal öfters zusammen. Ich habe vor ein paar Tagen eine neue Version des basic-Interpreters veröffentlicht, die das, hier auch diskutierte, Problem des Einlesens von Basic-Programmen behebt. http://www.mikrocontroller.net/svnbrowser/avr-basic/ (Der Zweig, der mit meinem Namen bezeichnet ist...) Frank bat mich darum dies selbst mal hier zu erklären, was neu ist: In der neuen Version ist es vollkommen egal, von welchem "Medium" das Basic-Programm eingelesen wird. Vor allem wird nicht mehr ein Puffer im RAM benötigt, das Einlesen erfolgt Byte-weise vom jeweiligen Speichermedium (ja, ist mir wirklich gelungen, dazu war nur ein kleiner Trick in tokenizer.c notwendig...!). Dreh- und Angelpunkt ist dabei eine Schnittstelle die als Defines realisiert ist und in den Dateien tokenizer_access.* zu finden ist. Die dortigen Defines sind von der Sache her einfach nur umzudefinieren, je nach seinem eigenen internen Routinen für die Mediumzugriffe. Ich denke der Quelltext dort ist ausreichend kommentiert in der Doku im Archiv (Kapitel 5) gibt es eine ausführlichere Beschreibung. Desweiteren sind 3 Beispiele für unterschiedliche Speichermedien ausgeführt: * Zugriff wie in den bisherigen Versionen über einen Speicherbereich im RAM * Basic-Programm im PROGMEM des AVR * Basic-Programm in einer Datei und Zugriffe über fread(), fseek()..., allerdings libc und für eine Linux-Plattform. Zum Aufzeigen der Funktionsweise sollte es aber reichen, gerade das 3.Beispiel dürfte am interessantesten sein... In der neuesten Version gibt es auch noch ein paar kleine Verbesserungen beim Basic-Syntax. Ich verweise mal auf das EBNF ganz hinten in der Doku, welches den vollständigen realisierten Syntax widerspiegelt. Für Fragen stehe ich gern zur Verfügung, sage aber gleich, dass ich keine spezielle Anpassungen für den c't-Bot einbauen werde (es sei denn, die sind auch für andere Plattformen interessant). Speziell meine ich dabei z.B. die PRINT-Anweisung, da gab es schon heftige Diskussionen mit Frank...:-). Grüße (und an Erfahrungsaustausch interessiert), Uwe Berger