<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - BlitzBasicScript</title>
		<link>https://www.blitzforum.de/worklogs/565/</link>
		<description>Worklog von Spark Fountain</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Thu, 17 Dec 2020 14:49:56 +0100</pubDate>
		<lastBuildDate>Thu, 17 Dec 2020 14:49:56 +0100</lastBuildDate>

		<item>
			<title>Vom Code-Editor zur Grafikdemo</title>
			<link>https://www.blitzforum.de/worklogs/565/#3970</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3970</guid>
			<author>Spark Fountain</author>
			<description>&lt;b&gt;Kurz vor Weihnachten ist mir der Durchbruch gelungen!&lt;/b&gt;  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Mein Sorgenkind, der BBScript-Parser, hat das gesamte Projekt bis zuletzt furchtbar hinaus gez&amp;ouml;gert. Was habe ich nicht alles f&amp;uuml;r Ans&amp;auml;tze ausprobiert und wieder verworfen:&lt;br /&gt;&lt;br /&gt;- Code per String-Manipulation von BBScript in JavaScript-Syntax umwandeln (das war Anfang 2018 und ging gr&amp;uuml;ndlich schief)&lt;br /&gt;- alles selbst schreiben (Lexer und Parser)&lt;br /&gt;- formale Grammatik entwickeln und einen Parser-Generator benutzen&lt;br /&gt;&lt;br /&gt;Zuletzt hatte ich meine Hoffnungen in einen Parser-Generator namens tsPEG gesteckt. Dieser funktionierte bei kleinen Grammatiken sehr gut, hat aber bei umfangreichen Regeln (BBScript hat &amp;gt; 700 Befehle) gro&amp;szlig;e Probleme und arbeitet nicht zuverl&amp;auml;ssig.&lt;br /&gt;&lt;br /&gt;Mit leichter Verzweiflung - angesichts der vielen Zeit, die f&amp;uuml;r meine Parsing-Ans&amp;auml;tze schon draufgegangen ist - habe ich eine Problemanalyse unternommen. Dabei sind mir folgende Dinge aufgefallen, die das Thema kompliziert machen:&lt;br /&gt;&lt;br /&gt;- ich habe zu wenig Erfahrung im Umgang mit eigenen Parsern bzw. Parser-Generatoren&lt;br /&gt;- die BBScript-Syntax ist zu komplex, um einfache Regeln zu definieren&lt;br /&gt;&lt;br /&gt;W&amp;auml;hrend dem oberen Punkt nur durch Ausprobieren und das Sammeln von Erfahrungen begegnet werden kann, kann man auf den unteren Punkt effektiv reagieren: &lt;b&gt;Die BBScript-Syntax muss einfacher werden&lt;/b&gt;. Oder besser gesagt, es sollten zun&amp;auml;chst einmal Grundstrukturen wie das Ausf&amp;uuml;hren von (simplen) Befehlen und das Zuweisen globaler Variablen funktionieren.&lt;br /&gt;&lt;br /&gt;Der neue Parser besteht nun aus Regeln, die per Pattern-Matching erkennen, worum es sich bei der aktuell geparsten Codezeile handelt. Im Moment werden nur Befehle und Variablendeklarationen unterst&amp;uuml;tzt. Au&amp;szlig;erdem m&amp;uuml;ssen Parameter direkt ihre finalen Werte enthalten und d&amp;uuml;rfen keine Ausdr&amp;uuml;cke sein:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('0')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox0&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('0')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox0&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('0');&quot;&gt;; Die folgende Zeile l&amp;auml;sst sich parsen...&lt;br /&gt;Graphics 800, 600, 32, 2&lt;br /&gt;&lt;br /&gt;; ... die n&amp;auml;chste allerdings nicht &amp;#40;Ausdr&amp;uuml;cke k&amp;ouml;nnen noch nicht ausgewertet werden&amp;#41;&lt;br /&gt;Text &amp;#40;40-20&amp;#41;, &amp;#40;100*4&amp;#41;, &amp;quot;Hello World&amp;quot;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Nach und nach werden weitere Strukturen im Parser implementiert. So lassen sich derzeit etwa Befehle nur ohne das Setzen von Klammern aufrufen. F&amp;uuml;r Klammerung wird sp&amp;auml;ter ein interner Stack gepflegt, um die Verschachtelung auf allen Ebenen korrekt beizubehalten.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Im Oktober 2019 hatte ich folgendes Versprechen ge&amp;auml;u&amp;szlig;ert: &amp;quot;Im Jahre 2020 wird definitiv eine Alpha-Version von BBScript ver&amp;ouml;ffentlicht, die online nutzbar ist.&amp;quot;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Bis zuletzt hatte ich bef&amp;uuml;rchtet, dass ich mich damit zu weit aus dem Fenster gelehnt hatte. Zwar gibt es in der Tat ein paar kleine Code-Beispiele auf der Homepage &lt;a href=&quot;http://www.blitzbasicscript.com&quot; target=&quot;_blank&quot;&gt;www.blitzbasicscript.com&lt;/a&gt; , aber diese sind allesamt hardgecoded. Da ich nun aber einen funktionierenden Weg gefunden habe, selbst Code in einem simplen Textfeld zu schreiben und diesen zur Laufzeit zu parsen und zu interpretieren, bin ich optimistisch, dass ich eine kleine Testversion davon noch vor Jahresende auf der Homepage ver&amp;ouml;ffentlichen kann. (Oder falls das nicht klappt, zumindest im Januar  &lt;img src=&quot;/forum/images/smiles/icon_lol.gif&quot; alt=&quot;Laughing&quot; /&gt; )&lt;br /&gt;&lt;br /&gt;Nat&amp;uuml;rlich sind noch l&amp;auml;ngst nicht alle Befehle unter der Haube implementiert, und auch das Verwenden von Datenstrukturen wie Schleifen oder If-Bl&amp;ouml;cken klappt noch nicht. Dennoch, f&amp;uuml;r ein paar kleine Sound- und Grafikdemos reicht der aktuelle Stand bereits aus. Sobald der Code-Editor online ist, k&amp;ouml;nnt ihr ja mal ein paar der folgenden Befehle ausprobieren:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bb&amp;quot;]Graphics&lt;br /&gt;Cls&lt;br /&gt;ClsColor&lt;br /&gt;Color&lt;br /&gt;Rect&lt;br /&gt;Oval&lt;br /&gt;Line&lt;br /&gt;Plot&lt;br /&gt;Text&lt;br /&gt;CreateCamera&lt;br /&gt;CreateCube&lt;br /&gt;CreateCylinder&lt;br /&gt;CreateCone&lt;br /&gt;CreateSphere&lt;br /&gt;PositionEntity&lt;br /&gt;RotateEntity&lt;br /&gt;Sqr&lt;br /&gt;Sin&lt;br /&gt;Cos&lt;br /&gt;; ...&lt;br /&gt;[/syntax]&lt;br /&gt;&lt;br /&gt;Ich w&amp;uuml;nsche euch allen ein fr&amp;ouml;hliches Weihnachtsfest und einen guten Rutsch ins neue Jahr 2021!  &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt; &lt;br /&gt;</description>
			<pubDate>Thu, 17 Dec 2020 14:49:56 +0100</pubDate>
		</item>

		<item>
			<title>Neuer Stack, neues Glück</title>
			<link>https://www.blitzforum.de/worklogs/565/#3969</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3969</guid>
			<author>Spark Fountain</author>
			<description>Seit Anfang September habe ich einen kleinen Root-Server gemietet, auf dem ich beliebige Software installieren kann. Bislang war der Tech Stack von BbScript sehr &amp;uuml;berschaubar:&lt;br /&gt;&lt;br /&gt;- Frontend: Angular 10 mit Bulma&lt;br /&gt;- Backend: PHP und MySQL&lt;br /&gt;&lt;br /&gt;Es war insbesondere l&amp;auml;stig, alle Interfaces und Klassen quasi doppelt zu implementieren, einmal in TypeScript und einmal in PHP. Da MySQL eine relationale Datenbank ist, musste ich f&amp;uuml;r die Befehlsdokumentation alle Parameter von Befehlen per Fremdschl&amp;uuml;sselreferenz zuordnen - furchtbar. Zudem hatte ich keinerlei Backend-Framework eingesetzt, weshalb das Ding allm&amp;auml;hlich zu explodieren drohte  &lt;img src=&quot;/forum/images/smiles/icon_eek.gif&quot; alt=&quot;Shocked&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Kurzum: All diese Probleme haben sich nun (zumindest theoretisch) auf einen Schlag erledigt. Jetzt kann ich &amp;uuml;berall in BbScript genau die Technologien einsetzen, welche am besten zusammen passen. Momentan sind das:&lt;br /&gt;&lt;br /&gt;- Mono-Repository: nrwl/nx&lt;br /&gt;&lt;br /&gt;- Frontend&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Framework: Angular 10&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Design: Bulma, Theme &amp;bdquo;Superhero&amp;ldquo;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Unit Tests: Jest&lt;br /&gt;&lt;br /&gt;- Backend&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Framework: NestJS&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Datenbank: Apache CouchDB&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Datenbank-Interface: PouchDB&lt;br /&gt;&lt;br /&gt;- Programmiersprache&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Parser-Generator: tsPEG&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 3D-Engine: babylon.js&lt;br /&gt;&lt;br /&gt;On top gibt es noch einige Verbesserungsm&amp;ouml;glichkeiten, die der Root-Server mit sich bringt:&lt;br /&gt;&lt;br /&gt;- Plesk als Web Hosting Tool&lt;br /&gt;- unbegrenzte Wildcard-Zertifikate f&amp;uuml;r alle Domains dank Let's Encrypt&lt;br /&gt;- Cronjobs und Git Hooks, um eine automatisierte CI-Pipeline zu bauen&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Parser-Generator&lt;/b&gt;&lt;br /&gt;Nachdem ich ja schon mehrmals erw&amp;auml;hnt hatte, dass der Parser mir Kopfschmerzen bereitet, habe ich nun den Tipp von @DAK von Anfang M&amp;auml;rz beherzigt und nach Parser-Generatoren f&amp;uuml;r TypeScript gesucht. Dabei bin ich auf &lt;a href=&quot;https://github.com/EoinDavey/tsPEG&quot; target=&quot;_blank&quot;&gt;tsPEG&lt;/a&gt; gesto&amp;szlig;en und finde das Tool sehr praktisch f&amp;uuml;r meine Zwecke. Der Entwickler (EoinDavey) ist auch sehr aktiv und hat schon auf mehrere Feature-Vorschl&amp;auml;ge von mir reagiert  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Im Prinzip l&amp;auml;uft das so ab: Man schreibt eine formale Grammatik auf (vergleichbar mit &lt;a href=&quot;https://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form&quot; target=&quot;_blank&quot;&gt;EBNF&lt;/a&gt;) und definiert darin Regeln, welche der Parser abarbeitet. Wichtig zu beachten ist, dass es einen unendlichen Lookahead gibt. Dieser ist zugleich Fluch und Segen: Man kann damit kontextsensitive Grammatiken verfassen, darf allerdings innerhalb einer Produktionsregel diese nicht rekursiv aufrufen, da der erzeugte Parser sonst in eine Endlosschleife ger&amp;auml;t, bis es zum Stack Overflow kommt.&lt;br /&gt;&lt;br /&gt;Bislang sind grundlegende Datenstrukturen schon als Regeln formuliert (Bedingungen, Schleifen, Zuweisungen etc.) - die ersten Entw&amp;uuml;rfe f&amp;uuml;r eine Grammatik habe ich immerhin schon vor fast einem Jahr entwickelt. Eine mittelgro&amp;szlig;e Herausforderung werden jedoch die ganzen BbScript-Befehle sein: Entweder man betrachtet diese als Symbole und wertet sie erst im Interpreter aus, oder aber man schreibt die alle in die Grammatik rein mit ihren dazugeh&amp;ouml;rigen Parametern. Letzteres h&amp;auml;tte den Vorteil, dass der Parser direkt schon erkennt, welche Befehle zu viele oder zu wenige Parameter haben und bereits vor der Programmausf&amp;uuml;hrung einen Fehler werfen k&amp;ouml;nnte.</description>
			<pubDate>Thu, 17 Sep 2020 22:17:22 +0200</pubDate>
		</item>

		<item>
			<title>Website in neuem Design</title>
			<link>https://www.blitzforum.de/worklogs/565/#3965</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3965</guid>
			<author>Spark Fountain</author>
			<description>&lt;a href=&quot;http://blitzbasicscript.com&quot; target=&quot;_blank&quot;&gt;http://blitzbasicscript.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nach intensiven Arbeiten in den letzten Wochen ist nun die BlitzBasicScript-Website in neuem Gewand online. Als Theme benutze ich nun &lt;a href=&quot;https://jenil.github.io/bulmaswatch/superhero/&quot; target=&quot;_blank&quot;&gt;Bulma Superhero&lt;/a&gt;, da es zu kompliziert wurde, alle Designs selbst zu definieren.&lt;br /&gt;&lt;br /&gt;Momentan ist der Inhalt recht &amp;uuml;berschaubar, weil alle unfertigen Features vorerst deaktiviert sind (Login, Tutorials, Dokumentation usw.). Die Online-IDE zum Code schreiben ist noch in der Entwicklung, darum kann man noch nicht aktiv eigenen Code eingeben. Es gibt aber schon einige &lt;b&gt;Codebeispiele&lt;/b&gt;, die in den n&amp;auml;chsten Tagen und Wochen erweitert werden und zeigen, was BBScript mittlerweile so alles kann:&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 2D-Grafiken und Zeichenbefehle ausf&amp;uuml;hren&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; 3D-Objekte erstellen und positionieren&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Sounds abspielen&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Mathematische Funktionen und Stringbefehle&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Aktueller Zustand und die n&amp;auml;chsten Schritte&lt;/b&gt;&lt;br /&gt;Es sind bereits ca. 250 Befehle aus BlitzBasic / Blitz3D implementiert. Dateizugriffe auf die BlitzBasicScript-Cloud funktionieren rudiment&amp;auml;r; nur die Anwendungen der ganzen Read- und Write-Befehle braucht noch etwas Zeit, weil ich erstmal verstehen muss, wie diese Bin&amp;auml;rdaten geschrieben werden...&lt;br /&gt;&lt;br /&gt;Ace ist zwar ein sch&amp;ouml;ner Online-Code-Editor, aber f&amp;uuml;r meine Zwecke zu beschr&amp;auml;nkt. Es soll sp&amp;auml;ter m&amp;ouml;glich sein, per Mausklick auf einzelne Befehle im Code in die Online-Dokumentation zu springen, bzw. zu den Funktions- und Type-Implementierungen bei der Verwendung eben jener. Deshalb bastele ich (zugegeben, zum wiederholten Male) an einer eigenen IDE. Folgende Features wird sie sp&amp;auml;ter haben:&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Autocomplete&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Syntax Highlighting (schon implementiert)&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Copy/Paste&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Undo/Redo&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; verschiedene Themes&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Code-Navigation (siehe oben)&lt;br /&gt;&lt;br /&gt;...und dann ist da ja noch der leidige Parser. Das Ding besch&amp;auml;ftigt mich schon seit Monaten und stellt mit Abstand den schwierigsten Teil dar. Die eigentliche Herausforderung ist es, verschachtelte Aufrufe korrekt zu analysieren und in abstrakte Syntax umzuwandeln. Damit werde ich noch gut zu tun haben bis Ende des Jahres.&lt;br /&gt;&lt;br /&gt;Nichts desto trotz, es geht gerade richtig gut voran und ich bin hoch motiviert, den Befehlsumfang St&amp;uuml;ck f&amp;uuml;r St&amp;uuml;ck zu erweitern und allm&amp;auml;hlich in Richtung eines benutzbaren Systems zu gelangen  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; </description>
			<pubDate>Sun, 16 Aug 2020 22:30:04 +0200</pubDate>
		</item>

		<item>
			<title>BlitzBasicScript bekommt eine Grammatik</title>
			<link>https://www.blitzforum.de/worklogs/565/#3964</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3964</guid>
			<author>Spark Fountain</author>
			<description>&lt;b&gt;BlitzBasicScript bekommt eine Grammatik&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Seit &amp;uuml;ber einem Jahr habe ich schon diverse Konzepte entwickelt, wie eine Grammatik f&amp;uuml;r BlitzBasicScript aussehen kann. Diese ist notwendig, damit Programmierkonstrukte wie Ausdr&amp;uuml;cke, Befehlsaufrufe und Schl&amp;uuml;sselw&amp;ouml;rter korrekt in abstrakte Syntax umgewandelt und zur Laufzeit interpretiert werden k&amp;ouml;nnen.&lt;br /&gt;&lt;br /&gt;Bisher lagen meine &amp;Uuml;berlegungen nur in Textform vor, was auf Dauer m&amp;uuml;hselig zu lesen und zu verstehen ist, wenn man ein paar Wochen etwas anderes gemacht hat. Darum habe ich nun eine kleine Pr&amp;auml;sentation mit LibreOffice angelegt, wo die Sprachkonstrukte als Diagramm visualisiert sind (Sobald die Diagramme fertig sind, werde ich sie hier als PDF verlinken, damit ihr sie euch anschauen k&amp;ouml;nnt &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;). Einige der wichtigsten Grammatikregeln umfassen folgende Elemente:&lt;br /&gt;&lt;br /&gt;- Befehlsaufrufe&lt;br /&gt;- Variablenzuweisung (und -definition)&lt;br /&gt;- Funktionen&lt;br /&gt;- Typen&lt;br /&gt;- Labels&lt;br /&gt;- Bedingungen&lt;br /&gt;- Schleifen&lt;br /&gt;&lt;br /&gt;Ein kleines Beispiel: Eine BBScript-Funktion beginnt mit dem Schl&amp;uuml;sselwort &lt;i&gt;Function&lt;/i&gt;, gefolgt von einem beliebigen Funktionsnamen und einer &amp;ouml;ffnenden Klammer. Dann gibt es zwei Varianten:&lt;br /&gt;&lt;br /&gt;- keine Funktionsparameter vorhanden: schlie&amp;szlig;ende Klammer, fertig&lt;br /&gt;- mind. 1 Parameter: Name des Parameters, optionale Default-Wert-Definition (Gleichheitszeichen gefolgt von einem String / Zahl / Boolean), anschlie&amp;szlig;end entweder ein Komma und weitere Parameter-Definition oder schlie&amp;szlig;ende Klammer, fertig&lt;br /&gt;&lt;br /&gt;Um die Arbeit f&amp;uuml;r den Parser etwas zu erleichtern, werde ich vor der eigentlichen Sematik-Analyse die Lexer-Tokens in Gruppen einteilen. Dadurch werden z. B. Funktionen, Types oder Schleifen gleich &amp;quot;im St&amp;uuml;ck&amp;quot; vorverarbeitet und man muss keinen riesigen Stack verwalten, auf den immer mehr Zust&amp;auml;nde gepusht werden. Nat&amp;uuml;rlich werde ich trotzdem nicht um einen Stack herumkommen, denn Codebl&amp;ouml;cke k&amp;ouml;nnen nat&amp;uuml;rlich auch verschachtelt sein (z. B. mehrere Schleifen ineinander).&lt;br /&gt;&lt;br /&gt;Das ganze hat den gro&amp;szlig;en Vorteil, dass man Syntaxfehler relativ leicht erkennen kann. Wenn z. B. eine Funktions- oder Typbeschreibung nicht abgeschlossen wird (fehlendes &lt;i&gt;End Function&lt;/i&gt; / &lt;i&gt;End Type&lt;/i&gt;), oder ung&amp;uuml;ltige Bl&amp;ouml;cke miteinander verschachtelt werden (z. B. eine Funktion innerhalb einer Funktion), so werden diese Fehler schon bei der Vorverarbeitung erkannt.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Und was macht eigentlich der Interpreter?&lt;/b&gt;&lt;br /&gt;Parallel zu meinen Arbeiten an der Grammatik entwickle ich bereits eine abstrakte Syntax f&amp;uuml;r die ganzen BBScript-Konstrukte. F&amp;uuml;r jede Art von Syntaxblock gibt es ein Objekt, in welchem die relevanten Informationen abgespeichert werden, damit das ganze zur Laufzeit ausgef&amp;uuml;hrt und berechnet werden kann.&lt;br /&gt;&lt;br /&gt;Auch hier ein kurzes Beispiel: Angenommen, der Interpreter soll eine globale Variable erstellen und ihr einen Wert zuweisen.&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bb&amp;quot;]Global variable = &amp;quot;Hello World!&amp;quot;[/syntax]&lt;br /&gt;&lt;br /&gt;Der Parser analysiert die Sematik dieser Codezeile und erzeugt ein Objekt mit folgenden Attributen:&lt;br /&gt;&lt;br /&gt;- Variablenname: &lt;i&gt;variable&lt;/i&gt;&lt;br /&gt;- Wert: &lt;i&gt;&amp;lt;Ausdruck&amp;gt;&lt;/i&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt;  &lt;i&gt;&amp;lt;string&amp;gt;&lt;/i&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;i&gt;&amp;quot;Hello World!&amp;quot;&lt;/i&gt;</description>
			<pubDate>Tue, 09 Jun 2020 10:39:03 +0200</pubDate>
		</item>

		<item>
			<title>Frohe Ostern mit BBScript</title>
			<link>https://www.blitzforum.de/worklogs/565/#3963</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3963</guid>
			<author>Spark Fountain</author>
			<description>&lt;b&gt;Der Interpreter kommt&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Endlich tut sich was unter der Haube von BlitzBasicScript auf dem Weg zur Spieleentwicklung im Browser  &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;  &lt;br /&gt;&lt;br /&gt;Nach mehreren (gescheiterten) Versuchen habe ich heute den Interpreter angelegt und begonnen, die wesentliche Logik zu implementieren. Zur Erinnerung: Damit der BBScript-Code zur Laufzeit dynamisch ausgef&amp;uuml;hrt werden kann (mit Variablen, Funktionsaufrufen etc.), ben&amp;ouml;tigen wir eine abstrakte Syntax, um die Statements semantisch zu beschreiben und aus dieser Syntax w&amp;auml;hrend der Programmausf&amp;uuml;hrung die eigentlichen Operationen aufrufen.&lt;br /&gt;&lt;br /&gt;Der Programmcode von BBScript besteht im Wesentlichen aus Codebl&amp;ouml;cken, Funktionen und Typedefinitionen. Ein Codeblock ist entweder ein einzelnes Statement (z. B. Zuweisung, Befehls- oder Funktionsaufruf etc.) oder eine &amp;quot;Gruppe&amp;quot; mit komplexerer Logik, etwa ein If-Block oder eine Schleife.&lt;br /&gt;&lt;br /&gt;Die einfachste Form von Statements sind &lt;i&gt;CommandStatements&lt;/i&gt;, also Befehlsaufrufe. Jedes CommandStatement besteht aus folgenden Elementen:&lt;br /&gt;&lt;br /&gt;- Befehlsname (z. B. &lt;i&gt;Graphics3D&lt;/i&gt;, &lt;i&gt;DrawImage&lt;/i&gt; oder &lt;i&gt;Tan&lt;/i&gt;)&lt;br /&gt;- einem Array von Parametern&lt;br /&gt;&lt;br /&gt;Bisher habe ich in meiner vereinfachten Parser-Implementierung angenommen, dass jeder Parameter ein statischer Wert sein muss (Zahl oder String). Das widerspiegelt nat&amp;uuml;rlich nicht die Realit&amp;auml;t; deshalb werden die einzelnen Parameter nun als &lt;i&gt;Ausdr&amp;uuml;cke&lt;/i&gt; (&lt;i&gt;Expressions&lt;/i&gt;) aufgefasst. Eine Expression kann ein statischer Wert sein, der Wert einer Variablen, ein Funktions- oder Befehlsaufruf bzw. ein mathematischer Ausdruck, der diese ganzen Elemente durch Operatoren verkn&amp;uuml;pft.&lt;br /&gt;&lt;br /&gt;Der Interpreter besitzt eine eigene Methode, um die Parameter-Ausdr&amp;uuml;cke von Befehlsaufrufen zur Laufzeit auszuwerten. Der gesamte Vorgang muss Asynchronit&amp;auml;t ber&amp;uuml;cksichtigen, denn ein Parameter kann durchaus einen weiteren Befehlsaufruf enthalten, der seinerseits asynchron arbeitet. Hier sind drei Beispiele:&lt;br /&gt;&lt;br /&gt;[syntax=&amp;quot;bb&amp;quot;]EntityTexture(cube, LoadTexture(&amp;quot;gfx/texture.png&amp;quot;))  ; zweiter Parameter von EntityTexture ist ein asynchroner Aufruf&lt;br /&gt;Text 0, 0, ReadLine(stream)  ; ReadLine l&amp;auml;dt in BBScript asynchron&lt;br /&gt;PlaySound LoadSound(&amp;quot;sfx/sound.wav&amp;quot;)  ; gleiches Prinzip wie zuvor[/syntax]&lt;br /&gt;&lt;br /&gt;Wie ihr seht, ergeben sich ziemlich viele tricky Zust&amp;auml;nde, wenn man nicht alle Befehle sch&amp;ouml;n synchron abarbeiten kann wie in BlitzBasic &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Promises statt Observables&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Die Befehlsaufrufe werden ab sofort nicht mehr als Observables behandelt, sondern mithilfe von Promises. Im Rahmen eines internen Vortrags bei meiner Arbeit hatte ich mich n&amp;auml;her mit beiden Konzepten besch&amp;auml;ftigt und festgestellt, dass Promises f&amp;uuml;r den Anwendungsfall &amp;quot;Befehle abarbeiten&amp;quot; besser geeignet sind. W&amp;auml;hrend ein Promise ein Objekt verk&amp;ouml;rpert, das zu einem sp&amp;auml;teren Zeitpunkt einen Wert zur&amp;uuml;ckliefert, handelt es sich bei einem Observable um einen richtigen Stream, &amp;uuml;ber den Events gefeuert werden k&amp;ouml;nnen. Das ist sehr praktisch im Umfeld reaktiver Programmierung, aber f&amp;uuml;r &amp;quot;einfache&amp;quot; Befehlsaufrufe sollte nicht pro Befehl jedes Mal ein neuer Stream er&amp;ouml;ffnet werden m&amp;uuml;ssen. Dazu kommt, dass Observable-Streams zun&amp;auml;chst aktiviert werden m&amp;uuml;ssen (per sogenannter Subscription), was bei Promises entf&amp;auml;llt.&lt;br /&gt;&lt;br /&gt;Kurz zusammengefasst, wird die Abarbeitung von Befehlsaufrufen in Zukunft wesentlich leichter und sauberer zu implementieren sein.</description>
			<pubDate>Sat, 11 Apr 2020 19:26:04 +0200</pubDate>
		</item>

		<item>
			<title>Alpha-Website released</title>
			<link>https://www.blitzforum.de/worklogs/565/#3962</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3962</guid>
			<author>Spark Fountain</author>
			<description>Eine erste Alpha-Website des Projekts BlitzBasicScript ist nun fertig und kann besucht werden unter: &lt;a href=&quot;https://blitzbasicscript.com/&quot; target=&quot;_blank&quot;&gt;https://blitzbasicscript.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://blitzbasicscript.com/assets/gfx/blitz-basic-script-landing-page.png&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Auf der Landing Page erfahrt ihr die grundlegenden Features der Scriptsprache, welche umgesetzt werden sollen.&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Im Bereich &amp;quot;Lexer&amp;quot; k&amp;ouml;nnt ihr BlitzBasic(-Script)-Code eingeben und euch dann die Tokens anzeigen lassen, in welche der Code bislang zerlegt wird. Nach einem Bugfix vor einigen Tagen (&lt;b&gt;\r&lt;/b&gt;-Zeichen wurden versehentlich als Teil des Codes interpretiert) gehe ich nun davon aus, dass der Lexer vollst&amp;auml;ndig umgesetzt ist und es damit keine Probleme mehr geben sollte.&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; Im Men&amp;uuml; &amp;quot;Befehle&amp;quot; findet ihr die einzelnen Kommandos von BBScript in ihren entsprechenden Kategorien. Das Schema orientiert sich stark an der BlitzForum Online-Hilfe (vielen Dank an alle die flei&amp;szlig;igen Menschen, die das hier mal aufgeschrieben haben!).&lt;br /&gt;&lt;br /&gt;Bitte beachtet, dass die Befehlsdokumentation noch nicht vollst&amp;auml;ndig ist (bei vielen Kommandos fehlen noch Parameter) und es noch keine Codebeispiele gibt. Diese werden erst im Laufe der Zeit hinzukommen.&lt;br /&gt;&lt;br /&gt;Wer schon mal ein funktionierendes BBScript-Schnipselchen ausprobieren m&amp;ouml;chte, kann zum Beispiel den folgenden Code kopieren, dann im &amp;quot;Befehle&amp;quot;-Men&amp;uuml; auf der Website einen Befehl ausw&amp;auml;hlen und den kopierten Code in den Editor einf&amp;uuml;gen und auf &amp;quot;Starten&amp;quot; klicken:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code: &lt;/b&gt;&lt;span style=&quot;font-size:0.8em; display:inline;&quot; id=&quot;showcodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;show_code('1')&quot;&gt;[AUSKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-size:0.8em; display:none;&quot; id=&quot;hidecodebox1&quot;&gt; &lt;a href=&quot;javascript&amp;#058;hide_code('1')&quot;&gt;[EINKLAPPEN]&lt;/a&gt; &lt;/span&gt;&lt;div id=&quot;codebox1&quot; class=&quot;codebox&quot; style=&quot;max-height: 200px;&quot; onload=&quot;check_code('1');&quot;&gt;Color 180, 20, 20&lt;br /&gt;Rect 25, 40, 100, 75&lt;br /&gt;Oval 120, 120, 30, 40&lt;br /&gt;Color 0, 255, 45&lt;br /&gt;Line 0, 300, 250, 0&lt;br /&gt;Color 255, 255, 20&lt;br /&gt;Plot 50, 50&lt;br /&gt;Plot 50, 60&lt;br /&gt;Plot 50, 70&lt;br /&gt;Plot 60, 80&lt;br /&gt;Plot 70, 90&lt;br /&gt;Plot 80, 100&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Okay, das ist zugegebenerma&amp;szlig;en noch sehr langweilig  &lt;img src=&quot;/forum/images/smiles/icon_rolleyes.gif&quot; alt=&quot;Rolling Eyes&quot; /&gt; . Aber zumindest reicht es als Beweis daf&amp;uuml;r, dass es jetzt prinzipiell m&amp;ouml;glich ist, BBScript-Code zu schreiben und daraus einen ausf&amp;uuml;hrbaren Web-Code zu generieren.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Die weiteren Aussichten&lt;/b&gt;&lt;br /&gt;Bevor ich an der Website weiter arbeite, widme ich mich in den n&amp;auml;chsten Wochen intensiv dem Parser. Dieser kann momentan nur sehr rudiment&amp;auml;re Statements verarbeiten und unterst&amp;uuml;tzt noch keinerlei Datenstrukturen (nicht einmal das Erstellen von Variablen).&lt;br /&gt;&lt;br /&gt;Mein bisheriger Ansatz bei der Generierung des Ziel-Codes war falsch. Ich wollte fertige Funktionsaufrufe generieren und in einem Array speichern, um dann zur Laufzeit des Spiels die Funktionen einfach nur nacheinander abzuarbeiten. Dabei habe ich &amp;uuml;bersehen, dass die Parameter, mit denen die Funktionen aufgerufen werden sollen, sich ja dynamisch &amp;auml;ndern k&amp;ouml;nnen und ich sie nicht &amp;quot;statisch&amp;quot; in den Zielcode pressen kann. Somit muss meine Game-Engine also w&amp;auml;hrend der Laufzeit erst die ganzen Ausdr&amp;uuml;cke berechnen (zb. &lt;i&gt;2 + x - y * Pi&lt;/i&gt; kann nicht von vornherein berechnet werden, weil man die Werte von x und y vor der Programmausf&amp;uuml;hrung noch gar nicht kennt).&lt;br /&gt;&lt;br /&gt;Ich werde nun Schritt f&amp;uuml;r Schritt den Parser so umbauen und erweitern, dass er f&amp;uuml;r verschiedene Programmstrukturen den entsprechenden Ziel-Code als &amp;quot;abstraktes Syntax-Objekt&amp;quot; (JSON) generiert. Die Reihenfolge soll ungef&amp;auml;hr so aussehen:&lt;br /&gt;&lt;br /&gt; - Konstanten (sehr simpel, da nur Zahlen, Strings oder Wahrheitswerte m&amp;ouml;glich sind)&lt;br /&gt; - Befehlsaufrufe (k&amp;ouml;nnen verschachtelt sein)&lt;br /&gt; - Globale Variablen definieren&lt;br /&gt; - Schleifen&lt;br /&gt;&lt;br /&gt;Damit werde ich bis Ostern sicherlich gut zu tun haben. Und wenn die abstrakte Syntax dann hinreichend gut umgesetzt ist, widme ich mich wieder der eigentlichen Programmausf&amp;uuml;hrung sowie der Implementierung der rund 700 restlichen Befehle...  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; </description>
			<pubDate>Thu, 30 Jan 2020 11:44:56 +0100</pubDate>
		</item>

		<item>
			<title>Erstmal kleine Brötchen backen</title>
			<link>https://www.blitzforum.de/worklogs/565/#3961</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3961</guid>
			<author>Spark Fountain</author>
			<description>Willkommen zur&amp;uuml;ck!&lt;br /&gt;&lt;br /&gt;In den vergangenen zwei Jahren habe ich viel Zeit damit verbracht, mir alle Raffinessen von BBScript zu &amp;uuml;berlegen und mich in dutzenden Ideen zu verlieren. Was dabei herausgekommen ist: Ein halbfertiger Lexer, ein halbfertiges Parser-Konzept, eine halbfertige Website und eine halbfertige Umsetzung einiger rudiment&amp;auml;rer Befehle. Seltsam - kam im letzten Satz zuf&amp;auml;llig das Wort &amp;quot;halbfertig&amp;quot; vor? &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Kurzum, das Projekt ist irgendwie aus dem Ruder gelaufen, weil es zu viele offene Baustellen gab (und immer noch gibt) und nichts richtig fertig wurde, was auf Dauer die Motivation schm&amp;auml;lert. Deshalb habe ich mir f&amp;uuml;r 2020 &amp;uuml;berlegt, erstmal kleine Br&amp;ouml;tchen zu backen und &amp;uuml;berhaupt etwas Sichtbares auf die Beine zu stellen, mit dem sich weiterarbeiten l&amp;auml;sst:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Eine kleine Website&lt;/b&gt;&lt;br /&gt;W&amp;auml;hrend der Entwicklung von BBScript gen&amp;uuml;gt es, einige grundlegende Funktionen anzubieten, damit sich die Nutzer erstmal einen &amp;Uuml;berblick verschaffen k&amp;ouml;nnen, worum es eigentlich geht. Zu diesem Zweck habe ich nochmal ein neues Webprojekt aufgesetzt mit nur drei Seiten: Info, Lexer und Befehle. Man kann sich also informieren, was BBScript ist (bzw. werden soll) und welche F&amp;auml;higkeiten es mitbringt. Au&amp;szlig;erdem l&amp;auml;sst sich BBScript-Code (bzw. alter BlitzBasic-Code) in einem Editor eintippen, welcher in Echtzeit gelext wird und man bekommt die entsprechenden Tokens angezeigt. (Hier wird es eine Funktion geben, mit der man Feedback-Reports mit einem Buttonklick absenden kann - das ist f&amp;uuml;r mich hilfreich, um eventuell noch vorhandene Fehler im Lexer schneller zu identifizieren). Zu guter Letzt kann man sich die Befehlsdatenbank schon einmal ansehen und in einem Live-Editor Codebeispiele anschauen und ausf&amp;uuml;hren. Die Datenbank ist noch sehr unvollst&amp;auml;ndig und es wird einige Zeit dauern, bis ein brauchbarer Umfang erreicht sein wird.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Der Parser funktioniert endlich&lt;/b&gt;&lt;br /&gt;Hurra! Wie lange hat es gedauert, endlich die zwei Welten - BBScript-Code und Game-Engine - miteinander verbinden zu k&amp;ouml;nnen. Bislang konnte man zwar schon den Code lexen, sowie die Command-Funktionen der Engine aufrufen; aber einen BBscript-Befehl einzutippen und daraus automatisch den zugeh&amp;ouml;rigen Befehl in der Engine anzusprechen, klappte einfach nicht. Mein Parser-Konzept ist &amp;uuml;beraus umfangreich und so komplex, dass es mir unm&amp;ouml;glich schien es auf einen Schlag umzusetzen. Stattdessen werde ich inkrementell daran arbeiten und habe zun&amp;auml;chst die M&amp;ouml;glichkeit eingebaut, Befehle mit primitiven Parametern (Zahl, String oder Boolean) zu erkennen und daraus Gamecode zu erzeugen, welcher ausgef&amp;uuml;hrt werden kann.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ausblick&lt;/b&gt;&lt;br /&gt;Die vorl&amp;auml;ufige Website wird voraussichtlich Ende Januar online gehen. Sie ist noch nicht vollst&amp;auml;ndig f&amp;uuml;r Mobilger&amp;auml;te optimiert, wird aber im Laufe der Zeit verbessert und die Befehlsdatenbank wird t&amp;auml;glich erweitert. Parallel dazu werden kontinuierlich weitere Befehle innerhalb der Game-Engine umgesetzt und getestet.&lt;br /&gt;&lt;br /&gt;Bevor man allerdings komplexe Programme mit Variablen, Schleifen, Bedingungen usw. schreiben und testen kann, wird noch einige Zeit ins Land gehen. Dazu wird es n&amp;auml;mlich n&amp;ouml;tig sein, den Parser komplexe Strukturen erkennen zu lassen und diese korrekt mit JavaScript-Mitteln in ein browserf&amp;auml;higes Spiel umzusetzen. Dieser Teil ist zwar auch schon seit letztem Jahr umfangreich durchdacht und geplant, aber es muss noch sorgf&amp;auml;ltig implementiert und getestet werden.</description>
			<pubDate>Sun, 19 Jan 2020 20:38:07 +0100</pubDate>
		</item>

		<item>
			<title>Weiter geht's</title>
			<link>https://www.blitzforum.de/worklogs/565/#3957</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3957</guid>
			<author>Spark Fountain</author>
			<description>...und schon wieder sind genau 110 Tage vergangen seit dem letzten Worklog-Eintrag. Leider bin ich seitdem kein bisschen mit der Entwicklung von BBScript weiter gekommen.&lt;br /&gt;&lt;br /&gt;Das liegt vor allem daran, dass ich im Sommer eine Trennung und einen Wohnungsumzug auf meiner Todo-Liste hatte und entsprechend privat besch&amp;auml;ftigt war. Daf&amp;uuml;r habe ich seit Oktober nun einen DSL-100-Glasfaseranschluss, was f&amp;uuml;r die Entwicklung einer Online-Game-Engine nur praktisch ist zum Ressourcen laden.&lt;br /&gt;&lt;br /&gt;Ab heute geht's also endlich weiter mit dem Projekt. Zun&amp;auml;chst versuche ich, die Website endlich rund zu bekommen, auch wenn sich das insgesamt schwieriger gestaltet als anf&amp;auml;nglich gedacht. Der Teufel steckt einfach im Detail und der Funktionsumfang der &amp;quot;Website&amp;quot; ist eben doch etwas umfangreich:&lt;br /&gt;&lt;br /&gt;- Authentifizierung mit Registrierung und Login / Logout&lt;br /&gt;- (kleines) Blog-System mit Lazy Loading, um Beitr&amp;auml;ge zu laden&lt;br /&gt;- interaktive IDE mit Dateibaum, Editor, Projekteinstellungen u. v. m.&lt;br /&gt;- &amp;uuml;bersichtliche Dokumentation, bestehend aus Tutorials, Schl&amp;uuml;sselw&amp;ouml;rtern, Befehlen und weiteren Hilfsmitteln&lt;br /&gt;&lt;br /&gt;Danach gibt es noch gen&amp;uuml;gend Baustellen, an denen ich mich in den n&amp;auml;chsten Monaten durchbei&amp;szlig;en werde:&lt;br /&gt;- Parser implementieren (!)&lt;br /&gt;- Beispielprojekte aufsetzen und testen&lt;br /&gt;- Assets bereitstellen (Sounds, Musik, Tiles, 3D-Objekte etc.)&lt;br /&gt;- Dokumentation und Tutorials aufbereiten&lt;br /&gt;- Werbung machen f&amp;uuml;r BBScript, damit das auch genutzt wird  &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; &lt;br /&gt;&lt;br /&gt;Zu guter Letzt m&amp;ouml;chte ich ein Versprechen machen: &lt;b&gt;Im Jahre 2020 wird definitiv eine Alpha-Version von BBScript ver&amp;ouml;ffentlicht, die online nutzbar ist.&lt;/b&gt;</description>
			<pubDate>Mon, 14 Oct 2019 13:48:20 +0200</pubDate>
		</item>

		<item>
			<title>Sommer, Sonne, BBScript</title>
			<link>https://www.blitzforum.de/worklogs/565/#3955</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3955</guid>
			<author>Spark Fountain</author>
			<description>Wahnsinn, wie schnell die Zeit verfliegt! Jetzt ist es bereits 110 Tage her, dass ich zuletzt &amp;uuml;ber den Fortschritt von BlitzBasicScript berichtet habe. Nun denn, Zeit f&amp;uuml;r ein Update:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Website (Angular 8)&lt;/b&gt;&lt;br /&gt;Die Website &lt;a href=&quot;http://www.blitzbasicscript.com&quot; target=&quot;_blank&quot;&gt;www.blitzbasicscript.com&lt;/a&gt; befindet sich nach wie vor in der Entwicklung und wird allm&amp;auml;hlich &amp;quot;nutzbar&amp;quot;, sowohl im Desktop-Modus als auch auf Mobilger&amp;auml;ten. Es fehlen allerdings immer noch viele wichtige Dinge, wie z. B. automatisiertes Anzeigen neuer DevBlog-Beitr&amp;auml;ge, Login / Logout sowie das Laden und Speichern von Dokumenten in der BBScript Cloud. Au&amp;szlig;erdem habe ich ein Major Version Update von Angular durchgef&amp;uuml;hrt, sodass jetzt die neueste Version 8 genutzt wird. Mit etwas Gl&amp;uuml;ck wird im August eine erste Version live zu sehen sein (gut Ding will Weile haben).&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=13394&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update auf BabylonJS 4&lt;/b&gt;&lt;br /&gt;Hurra, endlich ist BabylonJS 4 da! Das Update war gl&amp;uuml;cklicherweise nicht besonders komplex, nur ein paar Klassen-Import-Statements mussten aktualisiert werden. Wer Lust hat, sich einen &amp;Uuml;berblick &amp;uuml;ber die neueste Version dieser Browser-Game-Engine verschaffen m&amp;ouml;chte, schaue sich am besten &lt;a href=&quot;https://www.babylonjs.com/&quot; target=&quot;_blank&quot;&gt;auf der offiziellen Seite&lt;/a&gt; um.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Online-IDE mit Ace&lt;/b&gt;&lt;br /&gt;Nach mehreren Versuchen, eine eigene Online-IDE als separates Modul zu entwickeln, habe ich irgendwann beschlossen, die Zeit lieber in die eigentliche Sprachentwicklung zu stecken und stattdessen &lt;a href=&quot;https://ace.c9.io/&quot; target=&quot;_blank&quot;&gt;Ace&lt;/a&gt; als Grundlage zu nutzen. Ace bietet wichtige Features wie Auto-Completion, Syntax Highlighting, Copy-Pasting, Undo-Redo, verschiedene UI-Themes usw. Zun&amp;auml;chst habe ich s&amp;auml;mtliche von BBScript unterst&amp;uuml;tzten Schl&amp;uuml;sselw&amp;ouml;rter und Befehle in eine eigene Syntax-Datei gepackt (basierend auf der Syntax von VBScript) und diese lie&amp;szlig; sich - nach einigem Herumprobieren - auch einbinden. Jetzt wird also der BBScript-Code schon mal h&amp;uuml;bsch formatiert angezeigt.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=13393&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;</description>
			<pubDate>Wed, 26 Jun 2019 11:51:30 +0200</pubDate>
		</item>

		<item>
			<title>Work in Progress...</title>
			<link>https://www.blitzforum.de/worklogs/565/#3849</link>
			<guid>https://www.blitzforum.de/worklogs/565/#3849</guid>
			<author>Spark Fountain</author>
			<description>Nein, das Projekt BlitzBasicScript ist nicht - wie meine zwei vorherigen Worklogs - bereits wieder eingeschlafen. Nur passiert momentan viel &amp;quot;unter der Haube&amp;quot; und dauert seine Zeit, weshalb es nicht wirklich viel Neues zu zeigen gibt.&lt;br /&gt;&lt;br /&gt;Momentan arbeite ich prim&amp;auml;r an der BBScript-Website. Diese soll komplett responsive werden, wie man sich anhand dieser Mockup-Screen-PDF's bereits anschauen kann:&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=13382&quot; target=&quot;_blank&quot;&gt;Desktop-Ansicht&lt;/a&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=13383&quot; target=&quot;_blank&quot;&gt;Mobile Ansicht&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Des weiteren gibt es schon seit geraumer Zeit eine Art &amp;quot;Language API&amp;quot; f&amp;uuml;r BBScript, unter welcher die Schl&amp;uuml;sselw&amp;ouml;rter und Befehle via REST abgefragt werden k&amp;ouml;nnen. Der urspr&amp;uuml;ngliche Gedanke dabei war, dass ich nicht zweimal den gleichen Code schreiben muss, einmal f&amp;uuml;r die Dokumentation und einmal f&amp;uuml;r den Parser. Mittlerweile wei&amp;szlig; ich nicht, ob das Konzept noch klappen wird, aber verwerfen kann ich es zur Not sp&amp;auml;ter immer noch &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;.&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;a href=&quot;http://api.blitzbasicscript.com/keywords&quot; target=&quot;_blank&quot;&gt;http://api.blitzbasicscript.com/keywords&lt;/a&gt;&lt;br /&gt; &lt;img src=&quot;/forum/images/smiles/icon_arrow.gif&quot; alt=&quot;Arrow&quot; /&gt; &lt;a href=&quot;http://api.blitzbasicscript.com/commands&quot; target=&quot;_blank&quot;&gt;http://api.blitzbasicscript.com/commands&lt;/a&gt;</description>
			<pubDate>Fri, 08 Mar 2019 15:06:58 +0100</pubDate>
		</item>


	</channel>
</rss>
