
=== C-Control/BASIC-Parser fuer den DOS-C-Control/BASIC-Compiler ===

Version: 1.1
Autor  : Dietmar Harlos (dharlos@web.de)
Datum  : 27.02.2003


=== Programmbeschreibung ===

Der C-Control/BASIC-Parser (CCBASPAR.EXE) erweitert den C-Control/BASIC-
Compiler von Conrad Electronic (CCBAS.EXE) um einige sinnvolle Funktionen.
In BASIC-Programmen koennen mehrzeilige, verschachtelte IF-Abfragen ver-
wendet werden. Ausserdem meldet der Parser in einigen Faellen, in denen
der Compiler ohne Warnung fehlerhaften Code erzeugen wuerde, einen Fehler.
Unter anderem wird ueberprueft, ob alle deklarierten Variablen in das
User-RAM passen und ob ungenutzte Bereichen im Variablenspeicher existieren.
Darueber hinaus werden alle deklarierten Variablen in einer MAP-Datei auf-
gelistet, wodurch Variablenueberschneidungen sofort ersichtlich sind. 


=== Einbindung in die DOS-IDE ===

Der Parser kann problemlos in die C-Control-Entwicklungsumgebung fuer DOS
(CCE.EXE) anstelle des Compilers CCBAS.EXE eingebunden werden. Dazu wird CCE
gestartet und im Menue "Option" der Menuepunkt "Tools" ausgewaehlt. Im
Abschnitt "BASIC-Compiler" muss als Programm "$CCEPATH$\CCBAS.EXE" durch
"$CCEPATH$\CCBASPAR.EXE" ersetzt werden. Anschliessend muss man CCBASPAR.EXE
in das Verzeichnis, in dem CCE.EXE steht, kopieren. Nun wird bei jedem
Compiliervorgang innerhalb der Entwicklungsumgebung zunaechst der Parser
aufgerufen, der automatisch den Original-Compiler CCBAS.EXE startet, sofern
sich die beiden Programme im gleichen Verzeichnis befinden.


=== Die Fehlermeldungen und Warnungen des Parsers ===

"Ich kann die Datei "..." nicht finden."
  Der Parser kann die Eingabedatei mit dem BASIC-Sourcecode nicht finden.
  Es sollte der beim Aufruf des Parsers uebergebene Dateiname ueberprueft
  werden.

"Ich kann den C-Control/BASIC-Compiler CCBAS.EXE nicht finden."
  Das Programm CCBAS.EXE steht nicht im gleichen Verzeichnis wie der Parser.

"Hinter FOR darf keine Anweisung folgen"
  Der Compiler erzeugt ein fehlerhaftes Programm, wenn hinter einer FOR-
  Anweisung eine weitere Anweisung folgt.
  
"Hinter NEXT darf keine Anweisung folgen"
  Der Compiler erzeugt ein fehlerhaftes Programm, wenn hinter einer NEXT-
  Anweisung eine weitere Anweisung folgt.
  
"IF ohne ENDIF"
  Zu einer IF-Anweisung wurde keine zugehoerige ENDIF- (oder END IF-)
  Anweisung gefunden. Ein ENDIF muss immer als einzelner Befehl in einer
  Zeile stehen und hinter ihm darf nur ein Kommentar folgen, keine zu-
  saetzliche Anweisung.

"ELSE ohne IF"
  Zu einer ELSE-Anweisung wurde keine zugehoerige IF-Anweisung gefunden.
  Ein ELSE muss immer als einzelner Befehl in einer Zeile stehen und
  hinter ihm darf nur ein Kommentar folgen, keine zusaetzliche Anweisung.

"ENDIF ohne IF"
  Zu einer ENDIF-Anweisung wurde keine zugehoerige IF-Anweisung gefunden.
  Ein ENDIF (oder END IF) muss immer als einzelner Befehl in einer Zeile
  stehen und hinter ihm darf nur ein Kommentar folgen, keine zusaetzliche
  Anweisung.

"Das BYTE [...] (Adresse $...) des Variablenspeichers ist unbelegt"
  Ab Version 1.1 meldet der Parser, ob beim Deklarieren von Variablen
  mit Hilfe eines DEFINE-Befehls ohne Index eine Luecke im User-RAM
  entstanden ist. Eine Luecke entsteht, weil Wordvariablen immer nur an
  geraden Adressen abgelegt werden koennen. Sinnvollerweise sollten deshalb
  in einem Programm zunaechst alle Wordvariablen und erst danach die Byte-
  variablen deklariert werden.

"Index bei DEFINE ausserhalb des erlaubten Bereichs"
  Bei einer DEFINE-Anweisung wurde ein Index benutzt, der eine Variable
  ausserhalb des User-RAMs positioniert. Das kann erwuenscht sein, in
  diesem Fall ist diese Warnung zu ignorieren. Variablen, die ausserhalb
  des User-RAMs liegen, erscheinen nicht in der MAP-Datei.
  
"Variable passt nicht mehr ins User-RAM"
  Es wurden zu viele Variablen definiert. Aus diesem Grund sollte ueberprueft
  werden, ob einige Variablen eingespart werden koennen. Dieser Fehler kann
  nur bei einer DEFINE-Anweisung ohne Index auftreten.

"DEFINE ohne Index bei Bitvariable"
  Bei der Deklaration von Bitvariablen muss zwingend ein Index angegeben
  werden.

"Fehler beim Index von DEFINE"
  Der Index einer DEFINE-Anweisung ist keine Zahl oder weist einen anderen
  syntaktischen Fehler auf.

"Fehler bei DEFINE"
  Eine DEFINE-Anweisung weist einen syntaktischen Fehler auf.


=== Inhalt des ZIP-Archivs ===

Im ZIP-Archiv ist ebenfalls der C-Control/BASIC-Compiler CCBAS.EXE enthalten.
Es handelt sich um die Originalversion von Conrad Electronic mit erweitertem
Variablenspeicher. Informationen hierzu stehen auf der C-Control-intern-Site.
Bei Bedarf kann der Compiler CCBAS.EXE im CCE-Verzeichnis durch den Compiler
im Archiv ersetzt werden.


Viel Spass beim C-Controllern!

Dietmar Harlos
http://ccintern.dharlos.de


