home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1988
/
10_11
/
symbol.def
< prev
next >
Wrap
Text File
|
1988-06-30
|
2KB
|
57 lines
(*------------------------------------------------------*)
(* SYMBOL.DEF *)
(* Symboltabellenverwaltung in Modula 2 *)
(* (C) 1988 Frank F. Wachtmeister & TOOLBOX *)
DEFINITION MODULE Symbol;
FROM Streams IMPORT Stream;
CONST
AnzSignChar = 25; (* Anzahl signifikanter Zeichen *)
MaxRC = 2500; (* Maximaler Relativcode *)
NotFound = 0; (* Relativcode: Nicht gefunden *)
TYPE
String = ARRAY[0..AnzSignChar] OF CHAR;
RCTyp = [0..MaxRC];
SymbolTable=POINTER TO TreeType;
TreeType = RECORD (* Doppelt indizierter Baum mit: *)
rc: RCTyp; (* Relativcode des Key-Words *)
tx: String; (* Klartext des Key-Words *)
links, (* Zeiger bzgl. lexikal. Ordnung *)
rechts: SymbolTable;
END;
VAR
main: Stream; (* Window ist von aufrufendem Modul *)
(* zu initialisieren. *)
(* Die Funktion AddSymbol fügt einen NAMEn mit Relativ- *)
(* code rc in eine Symboltabelle s ein. Falls der Name *)
(* bereits unter einem anderen Relativcode existiert, *)
(* wird der bisherige Relativcode überschrieben. *)
PROCEDURE AddSymbol ( VAR s: SymbolTable;
VAR name: ARRAY OF CHAR; r:RCTyp);
(* Die Prozedur PrintTree druckt den Inhalt eines BAUMes*)
(* in alphabetischer Reihenfolge. *)
PROCEDURE PrintTree ( Baum: SymbolTable );
(* SearchRC sucht nach einem Wort TXT in einer Symbol- *)
(* tabelle s und gibt den zugehörigen Relativcode *)
(* zurück. Falls nicht gefunden: RC = 0 *)
PROCEDURE SearchRC ( VAR s: SymbolTable;
VAR txt: ARRAY OF CHAR ): RCTyp;
(* SearchTxt sucht nach einem Relativcode rc in einer *)
(* Symboltabelle s und gibt den zugehörigen String txt *)
(* zurück. Falls nicht gefunden: Length (txt)=0 *)
PROCEDURE SearchTxt( VAR s: SymbolTable;
VAR rc:RCTyp;
VAR txt: ARRAY OF CHAR );
(* Terminate beendet ein Programm. *)
PROCEDURE Terminate;
END Symbol.