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