Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

FB/Tiger Basic

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
wnagy



Anmeldungsdatum: 19.04.2011
Beiträge: 5

BeitragVerfasst am: 20.04.2011, 08:59    Titel: FB/Tiger Basic Antworten mit Zitat

Hallo,

ich muss immer wieder TigerBasic Programme erstellen.
http://de.wikipedia.org/wiki/Tiger-Basic

Die Steuerlogik ist meist "einfaches" Basic. TB Spezialitäten kann man mit einer Folge von #defines in den meisten Fällen 'hinkriegen'.

Zum Testen der Programmlogik ist FB einfach wesentlich konfortabler. Die Hardware-Teile kann/soll/muss man ja sowieso kapseln.

Hat sich jemand schon damit beschäftigt ich möchte gerne Erfahrungen austauschen.

\^/ili
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wnagy



Anmeldungsdatum: 19.04.2011
Beiträge: 5

BeitragVerfasst am: 24.04.2011, 15:17    Titel: Antworten mit Zitat

Weiter Überlegungen:

Problem DIM:

FB: dim s as String
TB: String a

Ich habe mich ein bisschen mit #DEFINE gespielt. Leider keinen großen Erfolg gehabt. Die Variablen mit

Code:
#DEFINE FB
#IFDEF FB
 dim s as String
#ELSE
 String s
#ENDIF


zu deklarieren scheint mir ein overkill

Irgedeine bessere Idee?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 24.04.2011, 15:56    Titel: Antworten mit Zitat

Ich weiß nicht genau was du eigentlich vorhast, willst du TB in FB umwandeln, umgekehrt oder beides parallel laufen lassen? Erklär doch bitte mal dein Vorhaben genauer.

Zum Thema Deklarieren wäre sowas möglich:
Code:
#Define FreeBASIC

#Macro decl(typ, variable)
   #If Defined(FreeBASIC)
      Dim variable As typ
   #ElseIf Defined(TigerBasic)
      typ variable
   #Else
      #Print Sprache nicht bekannt
   #EndIf
#EndMacro

decl(String, s)


Der Code spuckt jetzt je nachdem was definiert wurde die richtige Deklaration aus, vorausgesetzt natürlich, der Präprozessor von TB funktioniert genauso. Alternativ einfach an FB mit Option -pp übergeben. FB löst dann die Präprozessor-Befehle auf, wird zwar dann einen Compilerfehler melden, aber den aufgelösten Code in eine Datei speichern.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wnagy



Anmeldungsdatum: 19.04.2011
Beiträge: 5

BeitragVerfasst am: 24.04.2011, 18:58    Titel: Antworten mit Zitat

DANKE!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wnagy



Anmeldungsdatum: 19.04.2011
Beiträge: 5

BeitragVerfasst am: 24.04.2011, 19:12    Titel: Erklärung Antworten mit Zitat

Ich schreib öffters für den Tiger Einplatinencomputer Programme. Diese haben verschiedene Aufgaben. Meist werden diese als Protokollumsetzer in Industriedrucker (Da wird auf Stahlrohre, Plastikteile, Auto Hinterachsen - aber nicht auf Papier) gedruckt. Der Druckcode besteht aus einer Steuersequenz sowas wien <stx>TMUTTERROHR<lf>11.222.3</etx> und wird in einem anderen Steuerkode umgewandelt. Dabei sind noch externe Schnittstellen usw zu beachten. Auch kommt es vor, dass der Input von verschiedenen Quellen kommt.
Kurz und gut ein elendigliches Gefummel auf den RS232 Schnittstellen.

Die Verarbeitungslogik ist, wie ihr sehen könnt manchmal ziemlich komplex.

Das ganze wird dann auf den Einplatinencomputer gespielt. Ein Übertrag dauert mehr als 60 Sekunden. Auf dem SBC befinden sich nur zwei RS232 das macht das debugging zu einem Ratespiel.

Ich schreibe den Hauptteil - ohne den Hardwarekram - in FB. Da kann ich dann Unittest usw. machen. Danach übertrage ich den Code in TB.

Es gibt kleine aber entscheidende Unterschiede im Syntax.

So wie es mir im Augenblick scheint gibt es zwei Methoden.
Ein Gefummel mit #DEFINEs oder eine Umwandlungsprogramm, welches das File von .BAS in .TIG umwandelt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MilkFreeze



Anmeldungsdatum: 22.04.2011
Beiträge: 116

BeitragVerfasst am: 24.04.2011, 19:35    Titel: Re: Erklärung Antworten mit Zitat

wnagy hat Folgendes geschrieben:
Ich schreibe den Hauptteil - ohne den Hardwarekram - in FB. Da kann ich dann Unittest usw. machen. Danach übertrage ich den Code in TB.

Es gibt kleine aber entscheidende Unterschiede im Syntax.

So wie es mir im Augenblick scheint gibt es zwei Methoden.
Ein Gefummel mit #DEFINEs oder eine Umwandlungsprogramm, welches das File von .BAS in .TIG umwandelt.


Das "Gefummel mit den #DEFINEs" dürfte weniger Aufwändig sein, als ein programm zu schreiben das dir FB-Code übersetzt. Für einen Übersetzer müsstest du einen Parser schreiben, dann die Befehle zerlegen und in der richtigen Syntax wieder zusammen schrauben. Die DEFINE-Lösung dürfte weniger Zeitaufwändig sein.

Ich weiß natürlich nicht wie groß die Unterschiede sind. Wenn die Unterschiede zu groß sind, wirst du mit der DEFINE-Lösung nicht sehr weit kommen...

ich hoffe ich konnte dir weiterhelfen.
_________________
Milch ftw grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 24.04.2011, 20:37    Titel: Antworten mit Zitat

Der Unterschied ist, dass du das "#DEFINE-Gefummle" immer wieder aufs neue machen musst, den Umwandler aber nur einmal. Muss doch auch kein Parser sein. Für "DIM AS STRING variable" -> "STRING variable" z. B. reicht ein ganz einfaches suchen+ersetzen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MilkFreeze



Anmeldungsdatum: 22.04.2011
Beiträge: 116

BeitragVerfasst am: 24.04.2011, 23:04    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Der Unterschied ist, dass du das "#DEFINE-Gefummle" immer wieder aufs neue machen musst, den Umwandler aber nur einmal. Muss doch auch kein Parser sein. Für "DIM AS STRING variable" -> "STRING variable" z. B. reicht ein ganz einfaches suchen+ersetzen.


Stimmt nicht so ganz. Er könnt das "#DEFINE-Gefummle" auch in eine .bi-Datei verlagern und müsste so das ganze nur einmal machen (bei jedem weiterem Code nur das Include setzen und fertig).
_________________
Milch ftw grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
wnagy



Anmeldungsdatum: 19.04.2011
Beiträge: 5

BeitragVerfasst am: 25.04.2011, 20:24    Titel: Antworten mit Zitat

Danke für die Vorschläge.

Es geht nich allein um die defines es müssen noch andere Änderungen vorgenommen werden.
z.B.

select case x
case ...

durch switch x
case


Ein vollständiges Parsen und erstzen ist nicht unbedingt notwendig. Ich denke, dass ich mit RegEx auskomme.

Es muss ja nicht unbedingt eine 100% Übersetzung sein.

Danke jedenfalls...


\^/ili
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz