B2J - BlitzBasic zu Java Crosscompiler
Worklogs B2J - BlitzBasic zu Java Crosscompiler Kommentare
Nein, lebt wohl nicht mehr... Hab doch zu viel zu tun, um das Ganze wirklich am Leben zu erhalten.
Das Repeat-Forever war nur noch nicht drin, weil ich es vergessen gehabt hab, und es mir erst wieder eingefallen ist, wie ich den Post geschrieben habe.
Hmm, eventuell hol ich den Code wieder raus und schau, was ich damit mach, wenn's wen interessiert.
Falls das Projekt noch lebt, hätte ich eine Idee für das "Repeat-Forever": Du könntest einfach until (false) simulieren
Das hat alles seinen Sinn, wenn man es aus Compilersicht sieht.
In Java ist "unreacheable code" ein Error, der das Kompilieren verhindert. Wenn man also hat
Code: [AUSKLAPPEN]
x = 5;
return;
System.out.println(x)
}
dann lässt sich das Programm nicht kompilieren, weil der Code nach return nicht erreichbar ist. Das Gleiche zählt für Code, der aufgrund einer endlosen While- oder For-Schleife nicht erreichbar ist. Das heißt, wenn nach der Hauptschleife noch was kommen würde, dann würde es nicht kompilieren können.
Die einzige Ausnahme zu der Regel ist ein "if (true)". Bei "if (true)" tut der Compiler so, als könnte das true auch false sein, und geht beide Wege. Das heißt, wenn die Endlosschleife durch ein "if (true)" eingeklammert wird, dann erlaubt der Java-Compiler das kompilieren.
Das "while (((1)!=0))" schaut auch ein bisschen seltsam aus, kommt aber daher, dass Blitz keinen Boolean-Variablentyp kennt, und stattdessen ein int<>0 für true, und ein int=0 für false nimmt. Java, auf der anderen Seite, macht das nicht mit. Hier muss in einer Bedingung auch wirklich ein Boolean-Wert stehen. Das heißt, "while (1)" würde Java nicht zulassen, da 1 ein int und kein boolean ist. Deswegen wird bei Bedingungen der Inhalt immer auf Boolean umgewandelt. Bei einem int heißt das, dass ich es mit "!=0" vergleichen muss, um einen Boolean-Wert zu erhalten.
Die liberale Klammersetzung ist dafür da, dass der Code auch wirklich das tut, was ich will. In diesem Beispiel wären einige der Klammern unnötig, in anderen aber nicht. Außerdem ignoriert der Java-Compiler unnötige Klammern ohnehin, weswegen ich lieber zu viele Klammern setze als zu wenige.
Wie gesagt, aus Sicht einer maschinellen Übersetzung macht es alles Sinn, da somit Grenzfälle abgedeckt werden. Um den Code dann händisch weiter zu verwenden oder daraus zu lernen aber eher nicht.
Höchstinteressantes Projekt... Auf jeden Fall weitermachen (bitte)!
Nur müsstest du mal gucken, weil folgendes Resultat schon ein wenig "seltsam" ist (Ich weiß, du hast geschrieben, man soll sich das Ergebnis nicht angucken, konnte mich aber nicht zurückhalten ):
Code: [AUSKLAPPEN]
{
while (((1)!=0))
{
// Hauptschleife
}
}
// Ende der main()
Danke, Bobo, für die Lorbeeren^^
Hab mal eine neue Version gemacht, auch mit einer Demo.
Schaut gut aus!
Sonntag, 10. August 2014 um 21:07 Uhr von Bobo2040
Hi
Sieht ja ganz gut aus und würde mich auch SEHR freuen wenn das Projekt fertig ist
Nur noch ne Frage gibt es eine Demo dazu ?
Mfg
Weiter so!
Da B+ jetzt frei ist, kannst du dir den Code da ja mal anschauen
Das liest man gerne
Aber du musst mir verzeihen, dass ich die Demo NOCH nicht ausprobier. Mehr oder weniger aus Zeitgründen. Aber auch ein wenig psychologisch... Ich denke es wird mich mehr umhauen je länger ich warte
Immer schön weiter so und zeig den Leuten was man auf der TU alles lernt
DAK, du machst es einem echt schwer dein projekt zu kommentieren
Zum einen isses natürlich eine super Idee und ich freu mich dass es mal wieder ein interessantes Worklog gibt.
Zum anderen ist die Sache doch nur dann wirklich nützlich, wenn sie 2 Dinge erfüllt die im Moment ja noch in den Sternen stehen bzw. sehr fragwürdig sind:
Nämlich 1.) Man wie Xeres schon schrieb wirklich "sorgenfrei" seinen BB-Code rein schießen kann, mit all dem Wirrsinn den BB mit sich bringt.
und 2.) es volle Unterstützung für all die Dinge gibt wegen denen man anfängt mit BB zu arbeiten. Und damit meine ich nicht "Hello World" sondern richtig hübsche (und einfache) Graphik
Aber du hast ja grad erst angefangen und da kann ich mich ja noch hoffnungsvoll zeigen - Weiter so!
mfG, Christoph
Diese Entscheidungen invalidieren sehr viele BB Quelltexte... wenn man die erst händisch konvertieren/umschreiben muss, sehe ich keinen Sinn in einem Crosscompiler. Keine Ahnung ob es sinnvoller ist, spezielle Regeln von Anfang an ein zu bauen, aber in dem Endprodukt sollten sie enthalten sein.