OOP Precompiler und Konstrukte

Für allgemeine Fragen zur Programmierung mit PureBasic.

Wirst du einen OOP-Precompiler mitentwickeln wollen

Ja, brauch ich und habe ich Spass dran
12
38%
Nein, Unsinn und Zeitverschwendung
15
47%
Alles Andere was nicht oben zutrifft
5
16%
 
Insgesamt abgegebene Stimmen: 32

Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

=> http://pb-lounge.pb-club.de/viewtopic.php?p=50041#50041

Ich hoffe, dass in diesem Fall Kräfte gebündelt werden und das ganze nicht einschläft, weil jedes Projekt zu wenig Leute hat.

cu, guido
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Beitrag von inc. »

Ein sehr grosser Vorteil von PB ist der Debugger. Hier waere ein
einfacher PreCompiler fatal, da nichts mehr stimmen wuerde.
Möglichkeit wäre z.B. die einzelnen durch den Precompiler hinzugefügten zusätzlichen Passagen mit einem ":" zu einer Zeile bündeln:

z.B:

Code: Alles auswählen

Class MyClass
  MyClass()
  ˜MyClass()

  myMethod1()
  myMethod2()
  
  myLong.l
  myString.s
EndClass
Wird zu

Code: Alles auswählen

Interface iMyClass
  MyClass()
  ˜MyClass()

  myMethod1()
  myMethod2() : EndInterface : Structure sMyClass

  myLong.l
  myString.s
EndStructure
Sodann wäre die Zeilenfolge inhaltlich nicht zerschossen.

Was noch wichtig wäre:

1. Support von Vererbung und damit obligatorischer Polymorphie http://pb-lounge.pb-club.de/viewtopic.php?t=3463
2. Einbindung eines z.B. "OOP-Cutters", der alle im späteren Quellcode ungenutzten Methoden "ausschneidet", somit gibts dann auch kaum den oft genannten Overhead im Executablesize.
3. Da die Herangehensweise mit den Interfaces und der virtuellen Tabelle dem entspricht, wie generell Klassen aufgebaut werden, wäre das von Vorteil, wenn man später PB-Classen via dll's exportieren- , bzw. Klassen aus z.B. C++ dll's importieren möchte.
4. Nutzen von Konstruktoren mit Unterstützen von Parameterübergabe, sowie Destruktoren (oben im Beispiel via dem C++ bekannten "˜" gekennzeichnet.

Die Art von Edel, die Methoden via . von den Klassennamen zu trennen fände ich recht PB-like und gut, macht auch Sinn. Ansonsten gäbe es ja noch den "::" oder einen "|".
Um den Code überschaubar zu halten, würde ich mittlerweile die Methoden mit dem Keyword "Method"/"EndMethod" bezeichnen, ist später auch gut fürs Parsing.
Was den *this\...-Pointer angeht, da wäre ich schmerzfrei, kann auch this\... sein. Der Vorteil an der Nutzung des Keywords "*this\..." wäre, dass sodann kein Konflikt mit globalen Variablen stattfindet. Sicher, innerhalb von Methoden könnte man das sinngemäß trennen, wäre aber doch ein Aufwand.

Rings, das hier ist übrigens kein "Ich will ...." Posting, sondern wenn ich dir helfen kann, dann sehr gerne.
Hier gibts die OOP Option für PureBasic.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Mit Parsern habe ich viel Erfahrung. Müsst mir nur noch sagen, wie ich den in die PB-IDE einbauen kann. :mrgreen:
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

X0r hat geschrieben:Mit Parsern habe ich viel Erfahrung. Müsst mir nur noch sagen, wie ich den in die PB-IDE einbauen kann. :mrgreen:
erstmal normal als tool.

An @lle:
Mir isses leider nicht möglich in der pb-lounge auf die entsprechenden
links hin einzuloggen.
kann man denn die quint-essenz der dortigen Post nicht hiermit-reinschreiben ? wär nett.
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>erstmal normal als tool.

Ok, dann sag mir, wie ihr was haben wollt. Dann setz ich mich gleich dran.
Also was alles in was ersetzt werden soll.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Method und EndMethod finde ich nicht so toll, man kann eine
Methode auch leicht an dem Punkt ausserhalb der Klammern
erkennen. Genauso wie EndPublic usw. Das sieht dann allles
wieder so unsauber aus.

@ZeHa
Pb unterstuetzt keine Module, man muss also seine Klassen
nicht wirklich in einen Header auslagern. "This" als Parameter
zu uebergeben ist Geschmackssache, bei einem Interface wird
es allerdings auch so gemacht.

Vielleicht kann man sich hier noch ein paar Ideen holen :
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgType
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

Rings hat geschrieben:An @lle:
Mir isses leider nicht möglich in der pb-lounge auf die entsprechenden
links hin einzuloggen.
kann man denn die quint-essenz der dortigen Post nicht hiermit-reinschreiben ? wär nett.
Hier ein anderer Link ... die Printversion des Themas ... am besten ganz nach unten scrollen und die letzten Themen lesen:

=> http://pb-lounge.pb-club.de/printview.p ... 8&start=24

Zitat:
Hroudtwolf - Di Okt 23, 2007 8:49 pm

Eigentlich hatte ich die Arbeit aus einigen Gründen am PreCompiler eingestellt.
Da das Thema ja mal wieder so aktuell wie noch nie ist, hab ichs aber wieder aufgenommen.

Allerdings möchte ich das nun nicht mehr alleine machen.
Die Erfahrungen und Kenntnisse anderer sind mir hier sehr wertvoll.

Es kann sich jeder bei mir melden der das mitbringt...

... Spass, Bereitschaft ein EXISTIERENDES Projekt zu unterstützen, sehr gute PureBasic-Kenntnisse, Ahnung von OOP, Teamfähigkeit und Ehrgeiz.

MfG

Wolf
Un in einem weiteren Beitrag schreibt er außerdem:
Hroudtwolf - Mi Okt 24, 2007 12:56 pm

Ja, das ist so ne Sache...
Jeder der Angefangen hat an sowas zu schreiben, möchte seine Arbeit ja nicht umsonst gemacht haben.
Deshalb such ich im moment ja ein paar gute Progger die in dieses "bestehende" Projekt mit einsteigen wollen.
Es besteht ein kompletter Lexer , eine Tokenliste, ein Preparator für Syntax-Erweiterungen, eine komfortable Console-Ausgabe und jede Menge Toolfunktionen.
Ich biete also den Einstieg in ein Projekt bei dem man schon auf F5 drücken kann ^^
Wem das nicht attraktiv genug ist...

In die Syntax des Precompilers hätten nun auch andere Progger Einfluss.
Wer da mit macht, hilft nicht MEINEN PreCompiler zu entwickeln.
Sondern dieses Gemeinschafts-Projekt "PreCompiler".
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Ok, hab mich die letzten 2 Stunden damit beschäftigt, einen PreCompiler zu basteln. Hier das Resultat:

Download: http://www.forgesoft.net/Resources/OOP-Precompiler.zip


Ist natürlich erstmal nur ein Ansatz.


Beispielcode, der kompiliert werden kann:

Code: Alles auswählen



Class Object 
  a.l 
  b.w
  Declare MyObjectProcedure:ProctypeA(a,b)
  Declare DummyProc:ProctypeB(a,b,c)
EndClass



Procedure MyObjectProcedure(a,b) 
  Debug Str(a+b) 
EndProcedure 


Procedure DummyProc(a,b,c) 
  Debug "Summe: "+Str(a+b+c)
EndProcedure 


New MyObject.Object 


MyObject\MyObjectProcedure(1,2) 


MyObject\DummyProc(1,1,0) 

Kann man das überhaupt ansatzweise als OOP bezeichnen??

Naja, feedback trotzdem erwünscht. :mrgreen:


Achtung: Die Befehle Class, EndClass und New dürfen NIE eingerückt werden! Sie müssen immer am Anfang der Zeile beginnen.
Das gleiche gilt z.B für "MyObject\......".
Wird natürlich später verbessert.
Zuletzt geändert von X0r am 24.10.2007 14:52, insgesamt 1-mal geändert.
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag von milan1612 »

Schaut schon mal nicht schlecht aus, könntest du bitte den Code mitliefern?
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>Schaut schon mal nicht schlecht aus, könntest du bitte den Code mitliefern?

Noch nicht, erstmal will ich feedback. :mrgreen:
Antworten