home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 10_11 / symbol.def < prev    next >
Text File  |  1988-06-30  |  2KB  |  57 lines

  1. (*------------------------------------------------------*)
  2. (*                     SYMBOL.DEF                       *)
  3. (*         Symboltabellenverwaltung in Modula 2         *)
  4. (*       (C) 1988 Frank F. Wachtmeister & TOOLBOX       *)
  5. DEFINITION MODULE Symbol;
  6.  
  7. FROM Streams     IMPORT Stream;
  8.  
  9. CONST
  10.    AnzSignChar = 25;    (* Anzahl signifikanter Zeichen *)
  11.    MaxRC       = 2500;  (* Maximaler Relativcode        *)
  12.    NotFound    = 0;     (* Relativcode: Nicht gefunden  *)
  13.  
  14. TYPE
  15.    String = ARRAY[0..AnzSignChar] OF CHAR;
  16.    RCTyp  = [0..MaxRC];
  17.    SymbolTable=POINTER TO TreeType;
  18.    TreeType = RECORD (* Doppelt indizierter Baum mit:   *)
  19.       rc: RCTyp;       (* Relativcode des Key-Words     *)
  20.       tx: String;      (* Klartext des Key-Words        *)
  21.       links,           (* Zeiger bzgl. lexikal. Ordnung *)
  22.       rechts: SymbolTable;
  23.    END;
  24.  
  25. VAR
  26.    main: Stream;    (* Window ist von aufrufendem Modul *)
  27.                     (* zu initialisieren.               *)
  28.  
  29.  
  30. (* Die Funktion AddSymbol fügt einen NAMEn mit Relativ- *)
  31. (* code rc in eine Symboltabelle s ein. Falls der Name  *)
  32. (* bereits unter einem anderen Relativcode existiert,   *)
  33. (* wird der bisherige Relativcode überschrieben.        *)
  34. PROCEDURE AddSymbol ( VAR s: SymbolTable;
  35.                       VAR name: ARRAY OF CHAR; r:RCTyp);
  36.  
  37. (* Die Prozedur PrintTree druckt den Inhalt eines BAUMes*)
  38. (* in alphabetischer Reihenfolge.                       *)
  39. PROCEDURE PrintTree ( Baum: SymbolTable );
  40.  
  41. (* SearchRC sucht nach einem Wort TXT in einer Symbol-  *)
  42. (* tabelle s und gibt den zugehörigen Relativcode       *)
  43. (* zurück. Falls nicht gefunden: RC = 0                 *)
  44. PROCEDURE SearchRC ( VAR s: SymbolTable;
  45.                      VAR txt: ARRAY OF CHAR  ): RCTyp;
  46.  
  47. (* SearchTxt sucht nach einem Relativcode rc in einer   *)
  48. (* Symboltabelle s und gibt den zugehörigen String txt  *)
  49. (* zurück. Falls nicht gefunden: Length (txt)=0         *)
  50. PROCEDURE SearchTxt( VAR s: SymbolTable; 
  51.                      VAR rc:RCTyp;
  52.                      VAR txt: ARRAY OF CHAR );
  53.  
  54. (* Terminate beendet ein Programm.                      *)
  55. PROCEDURE Terminate;
  56. END Symbol.
  57.