Seite 7 von 9

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 11:28
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.

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 12:47
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.

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 14:54
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

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 16:39
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....

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 16:47
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

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 16:55
von Rings
ja, das hatte ich auch schon gemacht
kracht trotzdem dauernd.

morgen ist auch noch ein Tag.

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 23.04.2013 20:35
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

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 24.04.2013 15:00
von dige
@Kiffi: Das sieht ja schon richtig gut aus! Womit hast Du das jetzt erstellt? Mit Kevins Tool ... oder was neuem?

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 24.04.2013 16:21
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

Re: PBtoHTML5 Compiler [pre-alpha]

Verfasst: 26.04.2013 00:09
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