PBtoHTML5 Compiler [pre-alpha]

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von NicTheQuick »

Rings hat geschrieben:Scanner und Parser (im Quellcode) für PB gibts ja einige.
Das müsste man zusammenfassen und entsprechend
einen Ermitter(Code-Generator) für javascript dranhängen.
Wer hat denn einen Scanner und Parser für PB gerade rumfliegen? Ich könnte auch einen gebrauchen.
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Rings »

z.Bsp hier:
1) http://www.purebasic.fr/german/viewtopi ... xer+parser
2) http://www.purebasic.fr/german/viewtopi ... xer+parser

dann schliesslich gibts noch eine OOP Erweiterung . Auch dort sollte zumind.
ein Parser drin stecken.
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Kiffi »

Erster! :lol:

Code: Alles auswählen

<!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8" />
	<title>Pb2Web</title>
        <link type="text/css" rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
	<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
	<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
	<script>

		var CurrentWindow;

		function OpenWindow( Window, x, y, InnerWidth, InnerHeight, Title, Flags, ParentWindowID ) {
			CurrentWindow = "win_" + Window;
			$('body').append("<div id='" + CurrentWindow + "'></div>");
			$("#" + CurrentWindow).dialog({
					position: [x, y],
					width: InnerWidth,
					height: InnerHeight,
					title: Title,
					modal: true
				});
			return false;
		}

		function ButtonGadget( Gadget, x, y, Width, Height, Text, Flags ) {
			$("#" + CurrentWindow).append("<div id='gadget_" + Gadget + "'>" + Text + "</div>");
			$("#gadget_" + Gadget).button();
			$("#gadget_" + Gadget).css({ top: y, left: x, width: Width, height: Height });
			return false;
		}

		$(function () {
			$( document ).ready(function() {

				OpenWindow(0, 100, 100, 640, 400, "This is a PB-Window", 0, 0);
				ButtonGadget(0, 50, 50, 300, 40, "This is a ButtonGadget", 0);

			});
		});  

</script>

</head>

<body />

</html>
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Rings »

hab den linbk wieder gefunden,
simple oop von sirc:
https://www.dropbox.com/sh/oo85ru13fidb ... pleOOP.rar

remi's lexer krieg ich unter pb511 noch nicht zum rennen....
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Kiffi »

Rings hat geschrieben:remi's lexer krieg ich unter pb511 noch nicht zum rennen....
vermutlich das assert-Makro, oder? Quick'nDirty:

Code: Alles auswählen

Macro assert(cond, label="") 
  CompilerIf #CONTRACTS 
    If Not(cond)
      CompilerIf #PB_Compiler_Debugger 
        Debug label+": Line "+Str(#PB_Compiler_Line)+": Contract violated: "+#DQUOTE$+DQ#cond#DQ+#DQUOTE$+" is false" 
        CallDebugger 
      CompilerElse 
        MessageRequester("Contract violated", label+": Line "+Str(#PB_Compiler_Line)+": Contract violated "+DQ#cond#DQ+" is false") 
      CompilerEndIf 
    EndIf 
  CompilerEndIf 
EndMacro 

Macro asser2(cond, label="") 
  CompilerIf #CONTRACTS 
    If cond = ""
      CompilerIf #PB_Compiler_Debugger 
        Debug label+": Line "+Str(#PB_Compiler_Line)+": Contract violated: "+#DQUOTE$+DQ#cond#DQ+#DQUOTE$+" is false" 
        CallDebugger 
      CompilerElse 
        MessageRequester("Contract violated", label+": Line "+Str(#PB_Compiler_Line)+": Contract violated "+DQ#cond#DQ+" is false") 
      CompilerEndIf 
    EndIf 
  CompilerEndIf 
EndMacro
einfach asser2 einsetzen, wenn er Not(String) anmeckert.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Rings »

ja, das hatte ich auch schon gemacht
kracht trotzdem dauernd.

morgen ist auch noch ein Tag.
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Kiffi »

Rings hat geschrieben:kracht trotzdem dauernd.
mh, bei meinen ersten Test (mit simplen Beispielen) funktionierte
es ohne Probleme...


Ich presche mit meinen Javascript-Tests einfach mal ein wenig vor
(auch, wenn ich später noch einmal zurückrudern muss):

Code: Alles auswählen

OpenWindow  (0, 100, 100, 350, 200, "PB-Window 1", 0, 0);
TextGadget  (0,  10,  30, 300,  20, "Dein Name:", 0)
StringGadget(1,  10,  60, 300,  20, "", 0)
TextGadget  (2,  10,  90, 300,  20, "", 0)
ButtonGadget(3,  10, 110, 300,  30, "ButtonGadget 1", 0);

SetGadgetText(1, "Otto");

SetActiveGadget(1);

//

OpenWindow    ( 1, 500, 100, 560, 250, "ListViewGadget-Example", 0, 0);
ListViewGadget( 4,  10,  10, 250, 190, 0);
ButtonGadget  ( 5, 270,  10, 270,  30, "AddGadgetItem at Position -1", 0);
ButtonGadget  ( 6, 270,  50, 270,  30, "AddGadgetItem at Position  0", 0);
ButtonGadget  ( 7, 270,  90, 270,  30, "CountGadgetItems", 0);
ButtonGadget  ( 8, 270, 130, 270,  30, "RemoveGadgetItem at Position 0", 0);
ButtonGadget  ( 9, 270, 170, 270,  30, "ClearGadgetItems", 0);

//

OpenWindow    (  2,  100, 400, 500, 400, "WebGadget-Example", 0, 0);
StringGadget  ( 10,  10, 10, 420, 20, "http://www.purebasic.com", 0);
ButtonGadget  ( 11, 440, 10, 50,  20, "Go", 0);
WebGadget     ( 12,  10, 40, 480, 310, "about:blank", 0);
erzeugt folgenden Output: http://realsource.de/pb2web/index.html

Mir ist klar, dass das noch eine Menge Arbeit wartet, aber die ersten
Versuche machen mir schon mal ziemlich viel Spaß. :-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von dige »

@Kiffi: Das sieht ja schon richtig gut aus! Womit hast Du das jetzt erstellt? Mit Kevins Tool ... oder was neuem?
"Papa, ich laufe schneller - dann ist es nicht so weit."
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Kevin »

@All
Es geht wieder weiter!

@Kiffi
Das sieht schon mal gut aus aber der schwierige teil kommt noch! und zwar dann wenn repeat/forever oder synchrone Funktionen wie die Load Befehle funktionieren sollen und noch schwieriger wird es wenn solche dinge in Prozeduren Funktionieren soll!

An einem Gemeinschaftsprojekt wäre ich auch interessiert!

mfg
kevin
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Compiler [pre-alpha]

Beitrag von Kiffi »

dige hat geschrieben:@Kiffi: Das sieht ja schon richtig gut aus! Womit hast Du das jetzt erstellt? Mit Kevins Tool ... oder was neuem?
das ist vorerst 'handprogrammiert'. Ich habe als Basis jQuery UI verwendet und einfache
'Wrapper' geschrieben, damit so wenig wie möglich vom original PB-Code konvertiert werden muss.

Es sind -- wie geschrieben -- erste Gehversuche. Parallel teste ich auch andere UI-Frameworks
(dojotoolkit, qooxdoo, etc.), um die Möglichkeiten auszuloten.
Keviin hat geschrieben:@All
Es geht wieder weiter!
Freut mich zu lesen. Welcome back! :-)
Keviin hat geschrieben:@Kiffi
Das sieht schon mal gut aus aber der schwierige teil kommt noch!
Dessen bin ich mir durchaus bewusst :-) Das, was ich momentan habe, ist noch Basisarbeit.
Ich habe mir schon ein paar halbe Gedanken gemacht. Die Frage ist, ob wir überhaupt einen
Main-Eventloop benötigen. Zumindest in Sachen Anwendungsprogrammierung (die Sachen
mit den Fenstern und Gadgets) kann man alle 'Objekte' direkt beim Erstellen mit einem
Eventhandler versehen. Eine WaitEvent-Schleife würde dann nicht mehr nötig sein.

Anders sieht es wahrscheinlich bei der Spiele- und Grafik-Programmierung aus. Aber da habe ich zu wenig Ahnung.

Wichtig wäre mir der Zugriff auf Daten. Wie TroaX weiter oben bereits erwähnt hat,
müsste der Konverter dafür sorgen, dass alle Befehle, die nicht im Client ausgeführt
werden können (wie beispielsweise OpenDatabase()) in eine serverseitige Komponente
(PHP, CGI, etc.) ausgelagert werden. Wie das genau funktionieren soll, weiß ich momentan
auch noch nicht genau.
Keviin hat geschrieben:An einem Gemeinschaftsprojekt wäre ich auch interessiert!
dann sind wir ja schon mal zu dritt (Rings, wo bist Du? Fahrrad fahren?)

Wie geht's jetzt weiter?

Grüße ... Kiffi
a²+b²=mc²
Antworten