B2J - BlitzBasic zu Java Crosscompiler

Gehe zu Seite 1, 2  Weiter

Worklogs B2J - BlitzBasic zu Java Crosscompiler Kommentare

Mittwoch, 16. Dezember 2015 um 19:07 Uhr von DAK

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.

Mittwoch, 16. Dezember 2015 um 13:04 Uhr von Spark Fountain

Falls das Projekt noch lebt, hätte ich eine Idee für das "Repeat-Forever": Du könntest einfach until (false) simulieren Wink

Mittwoch, 13. August 2014 um 07:00 Uhr von DAK

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]

void foo() {
    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.

Dienstag, 12. August 2014 um 20:44 Uhr von CO2

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 Wink):
Code: [AUSKLAPPEN]

if (true)
{
   while (((1)!=0))
   {
                // Hauptschleife
        }
}
// Ende der main()


Dienstag, 12. August 2014 um 18:48 Uhr von DAK

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 Smile
Sieht ja ganz gut aus und würde mich auch SEHR freuen wenn das Projekt fertig ist Smile
Nur noch ne Frage gibt es eine Demo dazu ? Smile

Mfg

Weiter so!

Montag, 19. Mai 2014 um 10:00 Uhr von Silver_Knee

Da B+ jetzt frei ist, kannst du dir den Code da ja mal anschauen

Dienstag, 29. Oktober 2013 um 00:19 Uhr von Eingeproggt

Das liest man gerne Smile
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 Very Happy

Immer schön weiter so und zeig den Leuten was man auf der TU alles lernt Very Happy

Montag, 21. Oktober 2013 um 16:12 Uhr von Eingeproggt

DAK, du machst es einem echt schwer dein projekt zu kommentieren Razz
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 Wink

Aber du hast ja grad erst angefangen und da kann ich mich ja noch hoffnungsvoll zeigen - Weiter so!

mfG, Christoph

Montag, 21. Oktober 2013 um 15:19 Uhr von Xeres

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.

Gehe zu Seite 1, 2  Weiter


Kommentar schreiben

Titel:
Text: