home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1991-08-10 | 3.4 KB | 120 lines |
- DEFINITION MODULE scan;
-
- (*
- * SCAN *
-
- by - Greg Mumm
-
- This module reads multiple symbols one by one on a per line basis.
- Look-Ahead is possible and it can handle multiple files.
- *)
-
- FROM FileSystem IMPORT File;
-
-
- CONST
- StringMax = 161 ; (* 160 column support ( 2 lines ) *)
- SPACE = ' ' ;
- TAB = 11C ;
- EOLN = 12C ;
- Q1 = "'" ; (* single quote string *)
- Q2 = '"' ; (* double quote string *)
- LPAR = "(" ;
- RPAR = ")" ;
-
- TYPE
- STRING = ARRAY [ 0 .. StringMax ] OF CHAR;
- StringPtrType = POINTER TO STRING;
- NameString = ARRAY [ 0 .. 255 ] OF CHAR; (* FileName *)
-
- SymbolType = ( number, identifier, end, literal, blanks, other,
- nothing );
-
- (* This holds left margin information contained in the invisible
- space before the first symbol.
- *)
- IndentArray = ARRAY [ 1..StringMax ] OF CHAR ;
-
-
- (* Set 'DeleteFile' to TRUE if you want to automatically delete a file
- if present. ( eg. when WRITING to a file ).
- Set 'DeleteFile' to FALSE for normal READ operations.
- *)
- PROCEDURE OpenInFile ( FileName : NameString ;
- DeleteFile : BOOLEAN ;
- VAR successful : BOOLEAN );
- PROCEDURE OpenOutFile ( FileName : NameString ;
- DeleteFile : BOOLEAN ;
- VAR successful : BOOLEAN );
- PROCEDURE CloseAllFiles ();
-
-
- PROCEDURE eof () : BOOLEAN;
-
- PROCEDURE eoln () : BOOLEAN;
-
- (* The following two procedures are used to detect eof and eoln
- conditions WHEN READING AHEAD. Do NOT use the above procedures
- when reading ahead.
- *)
- PROCEDURE EofAhead () : BOOLEAN;
-
- PROCEDURE EolnAhead () : BOOLEAN;
-
-
- (* eof OR eoln
- *)
- PROCEDURE HitABrickWall () : BOOLEAN;
-
-
-
- (* Look-ahead buffer is full if this is set
- *)
- PROCEDURE TooFar () : BOOLEAN;
-
- (* Normally after reading ahead, the following read-ahead will return NEW
- unanalized data. ( Previous access is stored ). This proceedure will
- allow the 2'nd read-ahead to read the same data read the first time.
- A FastForward does the opposite of above. It will automatically signal
- the next ReadAhead procedure to use new data regardless of whether the
- previous access was a ReadAhead or just a Read.
- *)
- PROCEDURE rewind ();
-
- PROCEDURE FastForward ();
-
-
- PROCEDURE ReadLine (VAR indent : IndentArray ) : BOOLEAN;
-
- PROCEDURE ReadAheadLine ( VAR indent : IndentArray ) : BOOLEAN;
-
-
-
-
- PROCEDURE ReadSymbol ( VAR symbol : STRING;
- VAR SymbolClass : SymbolType ) ;
-
- PROCEDURE ReadAheadSymbol ( VAR symbol : STRING;
- VAR SymbolClass : SymbolType );
-
- (* Print currently processing line number to screen.
- *)
- PROCEDURE PrintLineNumber ();
-
- PROCEDURE write (char : CHAR) ;
-
-
-
- (* DEBUG *)
-
- (* Print input line after we read it in.
- *)
- PROCEDURE DebugPrintLine ( Indent : IndentArray );
-
- (* Print everything going to a file (write procedure above) to standard
- output too.
- *)
- PROCEDURE DebugOutputToggle ();
-
- END scan.
-