-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathscanner.h
57 lines (47 loc) · 2.13 KB
/
scanner.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/****************************************************************/
/* */
/* S C A N N E R (Header) */
/* */
/* FILE: scanner.h */
/* */
/* MODULE: scanner */
/* */
/* Copyright (c) 1991 by Ronald Mak */
/* For instructional purposes only. No warranties. */
/* */
/****************************************************************/
#ifndef scanner_h
#define scanner_h
#include "common.h"
/*--------------------------------------------------------------*/
/* Token codes */
/*--------------------------------------------------------------*/
typedef enum {
NO_TOKEN, IDENTIFIER, NUMBER, STRING,
UPARROW, STAR, LPAREN, RPAREN, MINUS, PLUS, EQUAL,
LBRACKET, RBRACKET, COLON, SEMICOLON, LT, GT, COMMA, PERIOD,
SLASH, COLONEQUAL, LE, GE, NE, DOTDOT, END_OF_FILE, ERROR,
AND, ARRAY, BEGIN, CASE, CONST, DIV, DO, DOWNTO, ELSE, END,
FFILE, FOR, FUNCTION, GOTO, IF, IN, LABEL, MOD, NIL, NOT,
OF, OR, PACKED, PROCEDURE, PROGRAM, RECORD, REPEAT, SET,
THEN, TO, TYPE, UNTIL, VAR, WHILE, WITH,
} TOKEN_CODE;
/*--------------------------------------------------------------*/
/* Literal structure */
/*--------------------------------------------------------------*/
typedef enum {
INTEGER_LIT, REAL_LIT, STRING_LIT,
} LITERAL_TYPE;
typedef struct {
LITERAL_TYPE type;
union {
int integer;
float real;
char string[MAX_SOURCE_LINE_LENGTH];
} value;
} LITERAL;
/*--------------------------------------------------------------*/
/* Functions */
/*--------------------------------------------------------------*/
BOOLEAN token_in();
#endif