|
|
1.1 root 1: #include "itran.h"
2: #include "lex.h"
3: #include "token.h"
4:
5: /*
6: * Token table - contains an entry for each token type
7: * with printable name of token, token type, and flags
8: * for semicolon insertion.
9: */
10:
11: struct toktab toktab[] = {
12: /* token token type flags */
13:
14: /* primitives */
15: "identifier", IDENT, BEGINNER+ENDER, /* 0 */
16: "integer-literal", INTLIT, BEGINNER+ENDER, /* 1 */
17: "real-literal", REALLIT, BEGINNER+ENDER, /* 2 */
18: "string-literal", STRINGLIT, BEGINNER+ENDER, /* 3 */
19: "cset-literal", CSETLIT, BEGINNER+ENDER, /* 4 */
20: "end-of-file", EOFX, 0, /* 5 */
21:
22: /* reserved words */
23: "break", BREAK, BEGINNER+ENDER, /* 6 */
24: "by", BY, 0, /* 7 */
25: "case", CASE, BEGINNER, /* 8 */
26: "create", CREATE, BEGINNER, /* 9 */
27: "default", DEFAULT, BEGINNER, /* 10 */
28: "do", DO, 0, /* 11 */
29: "dynamic", DYNAMIC, BEGINNER, /* 12 */
30: "else", ELSE, 0, /* 13 */
31: "end", END, BEGINNER, /* 14 */
32: "every", EVERY, BEGINNER, /* 15 */
33: "fail", FAIL, BEGINNER+ENDER, /* 16 */
34: "global", GLOBAL, 0, /* 17 */
35: "if", IF, BEGINNER, /* 18 */
36: "initial", INITIAL, BEGINNER, /* 19 */
37: "link", LINK, 0, /* 20 */
38: "local", LOCAL, BEGINNER, /* 21 */
39: "next", NEXT, BEGINNER+ENDER, /* 22 */
40: "not", NOT, BEGINNER, /* 23 */
41: "of", OF, 0, /* 24 */
42: "procedure", PROCEDURE, 0, /* 25 */
43: "record", RECORD, 0, /* 26 */
44: "repeat", REPEAT, BEGINNER, /* 27 */
45: "return", RETURN, BEGINNER+ENDER, /* 28 */
46: "static", STATIC, BEGINNER, /* 29 */
47: "suspend", SUSPEND, BEGINNER+ENDER, /* 30 */
48: "then", THEN, 0, /* 31 */
49: "to", TO, 0, /* 32 */
50: "until", UNTIL, BEGINNER, /* 33 */
51: "while", WHILE, BEGINNER, /* 34 */
52:
53: /* operators */
54: ":=", ASSIGN, 0, /* 35 */
55: "@", AT, BEGINNER, /* 36 */
56: "@:=", AUGACT, 0, /* 37 */
57: "&:=", AUGAND, 0, /* 38 */
58: "=:=", AUGEQ, 0, /* 39 */
59: "===:=", AUGEQV, 0, /* 40 */
60: ">=:=", AUGGE, 0, /* 41 */
61: ">:=", AUGGT, 0, /* 42 */
62: "<=:=", AUGLE, 0, /* 43 */
63: "<:=", AUGLT, 0, /* 44 */
64: "~=:=", AUGNE, 0, /* 45 */
65: "~===:=", AUGNEQV, 0, /* 46 */
66: "==:=", AUGSEQ, 0, /* 47 */
67: ">>=:=", AUGSGE, 0, /* 48 */
68: ">>:=", AUGSGT, 0, /* 49 */
69: "<<=:=", AUGSLE, 0, /* 50 */
70: "<<:=", AUGSLT, 0, /* 51 */
71: "~==:=", AUGSNE, 0, /* 52 */
72: "\\", BACKSLASH, BEGINNER, /* 53 */
73: "!", BANG, BEGINNER, /* 54 */
74: "|", BAR, BEGINNER, /* 55 */
75: "^", CARET, BEGINNER, /* 56 */
76: "^:=", CARETASGN, 0, /* 57 */
77: ":", COLON, 0, /* 58 */
78: ",", COMMA, 0, /* 59 */
79: "||", CONCAT, BEGINNER, /* 60 */
80: "||:=", CONCATASGN, 0, /* 61 */
81: "&", CONJUNC, BEGINNER, /* 62 */
82: ".", DOT, BEGINNER, /* 63 */
83: "--", DIFF, BEGINNER, /* 64 */
84: "--:=", DIFFASGN, 0, /* 65 */
85: "===", EQUIV, BEGINNER, /* 66 */
86: "**", INTER, BEGINNER, /* 67 */
87: "**:=", INTERASGN, 0, /* 68 */
88: "{", LBRACE, BEGINNER, /* 69 */
89: "[", LBRACK, BEGINNER, /* 70 */
90: "|||", LCONCAT, BEGINNER, /* 71 */
91: "|||:=", LCONCATASGN, BEGINNER, /* 72 */
92: "==", LEXEQ, BEGINNER, /* 73 */
93: ">>=", LEXGE, 0, /* 74 */
94: ">>", LEXGT, 0, /* 75 */
95: "<<=", LEXLE, 0, /* 76 */
96: "<<", LEXLT, 0, /* 77 */
97: "~==", LEXNE, BEGINNER, /* 78 */
98: "(", LPAREN, BEGINNER, /* 79 */
99: "-:", MCOLON, 0, /* 80 */
100: "-", MINUS, BEGINNER, /* 81 */
101: "-:=", MINUSASGN, 0, /* 82 */
102: "%", MOD, 0, /* 83 */
103: "%:=", MODASGN, 0, /* 84 */
104: "~===", NOTEQUIV, BEGINNER, /* 85 */
105: "=", NUMEQ, BEGINNER, /* 86 */
106: ">=", NUMGE, 0, /* 87 */
107: ">", NUMGT, 0, /* 88 */
108: "<=", NUMLE, 0, /* 89 */
109: "<", NUMLT, 0, /* 90 */
110: "~=", NUMNE, BEGINNER, /* 91 */
111: "+:", PCOLON, 0, /* 92 */
112: "+", PLUS, BEGINNER, /* 93 */
113: "+:=", PLUSASGN, 0, /* 94 */
114: "?", QMARK, BEGINNER, /* 95 */
115: "<-", REVASSIGN, 0, /* 96 */
116: "<->", REVSWAP, 0, /* 97 */
117: "}", RBRACE, ENDER, /* 98 */
118: "]", RBRACK, ENDER, /* 99 */
119: ")", RPAREN, ENDER, /* 100 */
120: ";", SEMICOL, 0, /* 101 */
121: "?:=", SCANASGN, 0, /* 102 */
122: "/", SLASH, BEGINNER, /* 103 */
123: "/:=", SLASHASGN, 0, /* 104 */
124: "*", STAR, BEGINNER, /* 105 */
125: "*:=", STARASGN, 0, /* 106 */
126: ":=:", SWAP, 0, /* 107 */
127: "~", TILDE, BEGINNER, /* 108 */
128: "++", UNION, BEGINNER, /* 109 */
129: "++:=", UNIONASGN, 0, /* 110 */
130: "end-of-file", 0, 0,
131: };
132:
133: /*
134: * restab[c] points to the first keyword in toktab which
135: * begins with the letter c.
136: */
137:
138: struct toktab *restab[] = {
139: NULL , NULL , /* _` */
140: NULL, &toktab[ 6], &toktab[ 8], &toktab[10], /* abcd */
141: &toktab[13], &toktab[16], &toktab[17], NULL, /* efgh */
142: &toktab[18], NULL, NULL, &toktab[20], /* ijkl */
143: NULL, &toktab[22], &toktab[24], &toktab[25], /* mnop */
144: NULL, &toktab[26], &toktab[29], &toktab[31], /* qrst */
145: &toktab[33], NULL, &toktab[34], NULL, /* uvwx */
146: NULL, NULL, /* yz */
147: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.