EnableExplicit

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Olaf_France

Betreff: EnableExplicit

BeitragMi, Mai 08, 2019 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich bin gerade dabei,einen'fremden' Code zu anlysieren,mit B+,
und bin nun etwas verwirrt,da alle StringVariablen nur beim ersten auftreten als solche deklariert sind.
Um nun alle Variablen mit Ihrem Typ zu assoziieren,habe ich, PureBasic im Kopf,
EnableExplicit an den anfang setzen wollen,um dem Compiler dazu zu bringen,alle nicht deklarierten Variablen
Anzuzeigen.
Aber so wie ich das sehe gibt es einen Solchen oder Ähnlichen Befehl in B+ nicht,ODER??

Gibt es eine möglichkeit,das Deklarieren zu 'erzwingen'?

Gruss Olaf

Xeres

Moderator

BeitragDo, Mai 09, 2019 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Grüße!
Nein, sowas gibt es in Blitz3D und BlitzPlus nicht. Wegen fehlgeleiteter Anfängerfreundlichkeit sind alle Variablen die zwischen drin vorkommen automatisch int mit 0 initialisiert - d.h. Tippfehler können extrem langwierig zu Debuggen sein.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Olaf_France

BeitragDo, Mai 09, 2019 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es schon befürchtet

Nun,dann muss ich damit Leben

Danke

AMY

BeitragFr, Mai 10, 2019 10:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich es richtig verstehe ist das was du suchst z.b. der StrictModus von IDEal. Dort werden dann alle nicht vorher also Global/Local definierten Variablen Rot gekennzeichnet.
Projekte: www.amyscbi.de
I never comment my sourcecode. What's HARD to write must be HARD to read!

Olaf_France

BeitragFr, Mai 10, 2019 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@Amy

Jo,sowas in der Art

DivineDominion

BeitragSa, Mai 11, 2019 8:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Exclamation Vielleicht lohnt sich das nicht, wenn du nur einmal kurz das Projekt anschaust und nicht langfristig pflegst.

Du könntest einen einfachen "Linter" schreiben, der den Code parst, dann in Blöcke aufteilt, die den scopes entsprechen (in B+ gibt's ohne OOP ja nicht so viele Blöcke: Funktionen, Schleifen, ...), und dann nach Variablendeklaration und -verwendung analysiert. Heißt im Grunde nur, dass du Funktionsnamen und reservierte Keywords von B+ erkennst und aus der Liste zu analysierender Teile streichst und für den Rest eine Liste/Hashmap führst, die die Verwendungen mit den Deklarationen abgleicht. Muss ja kein 100% akkurates Tool sein, sondern nur Gefahrenstellen erkennen und dir zum Anschauen vorschlagen. Das ist allemal besser als immer wieder alles per Hand abzugleichen.
christian.tietze@gmail.com - https://christiantietze.de
macOS

Olaf_France

BeitragSa, Mai 11, 2019 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun war ich aber schneller ,DivineDominion,
so was ähnliches bin ich grad drann
Problem scopes hat sich im moment da ich deine Antwort gelesen hab erledigt.
habe gestern ein 'AutoIndenter' von Rob Farley(Dec 2004) überarbeitet,
so dass er mit BB und PB zurecht kommt
auch habe ich "then" nicht übernommen (fast so schlimm wie goto/gosub)
So,da also Start/Ende von Blöcken identifiziert werden können, und 'nem Syntax-highLighter,
da sollte eine dynamiche Liste für Variable möglich sein
mal sehen


olaf

Holzchopf

Meisterpacker

BeitragSa, Mai 11, 2019 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Olaf_France hat Folgendes geschrieben:
auch habe ich "then" nicht übernommen (fast so schlimm wie goto/gosub)


Das musst du mir jetzt aber genauer erklären Laughing Gerade weil es hier um strikteren Code geht... Bist du dir sicher, dass du deine Aussage nicht grad - sagen wir mal - 180° verkehrt formuliert hast? Rolling Eyes
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Thunder

BeitragSa, Mai 11, 2019 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde da gar nicht von vorne beginnen. Die BlitzBasic compiler sind eh open source. Die Änderung, dass Variablen nicht automatisch deklariert werden ist vermutlich recht gemütlich (ein paar Zeilen Code entfernen vielleicht?).
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Olaf_France

BeitragSa, Mai 11, 2019 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
@Holzchopf

Das ist meine pers.Meinung.
Ich finde, das ein 'richtiger' if-(else/elseif)-endif Block einfacher zu erkennen ist,
und es 'Zwingt' mich den Block zu beenden.
dadurch ist auch schon ohne "Check for Errors" eine fehlerhafte If-anweisung zu sehen

Es ist halt eine Gewohnheit,die ich mir durch PureBasic angewöhnt habe,und einfach 'übersichtlicher finde.
Ob Then nun gut oder Schlecht ist, sei jedem selber überlassen

PS
Auch an die getrennte schreibweise von zB End Function... muss ich mich erst gewohnen.

alles in allem denke ich aber,das BB sich Trotz fehlender Weiterentwicklung nicht zu 'Verstecken' braucht


Olaf

Holzchopf

Meisterpacker

BeitragSo, Mai 12, 2019 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso! Jetzt verstehe ich dich. Glaube ich Smile Du sprichst von einzeiligen If-Statements. Die sind aber nicht "Then" geschuldet, denn "Then" ist optional und kann also durchaus auch bei blockigen Ifs verwendet werden (oder bei einzeiligen Ifs weggelassen werden... wuah).

Aber ja, zugegeben, ohne einzeilige Ifs ist Code parsen einfacher, weil dann zwingend immer ein Endif irgendwo da sein muss.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Olaf_France

BeitragSo, Mai 12, 2019 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Holzchopf hat Folgendes geschrieben:


Aber ja, zugegeben, ohne einzeilige Ifs ist Code parsen einfacher, weil dann zwingend immer ein Endif irgendwo da sein muss.


So isses,Ausserdem sieht man am "Bild" , (Einzug),wo was ist,und da ,meine Meinung, ist dann ein möglicher Fehler
eher zu finden.
Einzeilige If's übersieht man da schon eher.

Und das Parsen,ja was soll ich da machen ein- oder aus ziehen? Garnix machen?
Ohne is einfacher


Olaf

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group