1 /* 2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003. 3 ** See ../LICENSE for license information. 4 ** 5 */ 6 /* 7 ** scanline.h 8 */ 9 10 # ifndef SCANLINE_H 11 # define SCANLINE_H 12 13 /*@constant int LASTCHAR; @*/ 14 # define LASTCHAR 255 15 16 /*@constant char CHAREXTENDER; @*/ 17 # define CHAREXTENDER '\\' 18 19 typedef enum { 20 CHC_NULL, 21 IDCHAR, 22 OPCHAR, 23 SLASHCHAR, 24 WHITECHAR, 25 CHC_EXTENSION, 26 SINGLECHAR, 27 PERMCHAR 28 } charCode; 29 30 typedef struct { 31 charCode code; 32 bool endCommentChar; 33 } charClassData; 34 35 extern void lscanLine (char *); 36 extern ltoken LSLScanEofToken (void); 37 extern void LSLReportEolTokens (bool p_setting); 38 39 extern void lscanLineInit (void); 40 extern void lscanLineReset (void); 41 extern void lscanLineCleanup (void); 42 43 /* 44 ** The following function prototypes are for use by lslinit.c, which 45 ** customizes subsequent actions of scanline.c. 46 */ 47 48 extern charCode lscanCharClass (char p_c); 49 extern bool LSLIsEndComment (char p_c); 50 extern void lsetCharClass (char p_c, charCode p_cod); 51 extern void lsetEndCommentChar (char p_c, bool p_flag); 52 53 /*@constant int MAXLINE;@*/ 54 # define MAXLINE 1000 55 56 # else 57 # error "Multiple include" 58 # endif 59