1// Mnemonics, token categoty, token class, yacc token value
2
3// Separators
4
5DEF_TOKEN(" ",   WSPC, TKN_SPACE, 0)
6DEF_TOKEN("\n",  WSPC, TKN_LN, 0)
7DEF_TOKEN(NULL,  WSPC, TKN_CMNT, 0)
8
9// Numbers
10
11DEF_TOKEN(NULL, NUM, TKN_ICONST, ICONST)
12DEF_TOKEN(NULL, NUM, TKN_RCONST, RCONST)
13DEF_TOKEN(NULL, STR, TKN_SCONST, SCONST)
14
15// special symbols
16
17DEF_TOKEN("(", PUT, TKN_LPAR, '(')
18DEF_TOKEN(")", PUT, TKN_RPAR, ')')
19DEF_TOKEN("[", PUT, TKN_LBR, '[')
20DEF_TOKEN("]", PUT, TKN_RBR, ']')
21DEF_TOKEN("+", PUT, TKN_PLUS, PLUS)
22DEF_TOKEN("-", PUT, TKN_MINUS, MINUS)
23DEF_TOKEN("*", PUT, TKN_MUL, MUL)
24DEF_TOKEN("/", PUT, TKN_DIVR, DIVR)
25DEF_TOKEN("&", PUT, TKN_C_AND, AND)
26DEF_TOKEN("|", PUT, TKN_C_OR, OR)
27DEF_TOKEN("~", PUT, TKN_C_NOT, NOT)
28DEF_TOKEN(">>", PUT, TKN_C_SHR, SHR)
29DEF_TOKEN("<<", PUT, TKN_C_SHL, SHL)
30DEF_TOKEN("+=", PUT, TKN_LETADD, LETADD)
31DEF_TOKEN("-=", PUT, TKN_LETSUB, LETSUB)
32DEF_TOKEN("*=", PUT, TKN_LETMUL, LETMUL)
33DEF_TOKEN("/=", PUT, TKN_LETDIV, LETDIV)
34DEF_TOKEN("&=", PUT, TKN_LETAND, LETAND)
35DEF_TOKEN("|=", PUT, TKN_LETOR, LETOR)
36DEF_TOKEN(">>=", PUT, TKN_LETSHR, LETSHR)
37DEF_TOKEN("<<=", PUT, TKN_LETSHL, LETSHL)
38DEF_TOKEN(":", PUT, TKN_COLON, ':')
39DEF_TOKEN(";", PUT, TKN_SEMICOLON, ';')
40DEF_TOKEN(",", PUT, TKN_COMMA, ',')
41DEF_TOKEN(".", PUT, TKN_DOT, '.')
42DEF_TOKEN("^", PUT, TKN_HEAP, '^')
43DEF_TOKEN("..", PUT, TKN_DOTS, DOTS)
44DEF_TOKEN("=", PUT, TKN_EQ, EQ)
45DEF_TOKEN(">=", PUT, TKN_GE, GE)
46DEF_TOKEN(">", PUT, TKN_GT, GT)
47DEF_TOKEN("<=", PUT, TKN_LE, LE)
48DEF_TOKEN("<", PUT, TKN_LT, LT)
49DEF_TOKEN("<>", PUT, TKN_NE, NE)
50DEF_TOKEN(":=", PUT, TKN_LET, LET)
51DEF_TOKEN("@", PUT, TKN_ADDR, '@')
52
53DEF_TOKEN("abstract", ID, TKN_ABSTRACT, IDENT)
54DEF_TOKEN("and", KWD, TKN_AND, AND)
55DEF_TOKEN("array", KWD, TKN_ARRAY, ARRAY)
56DEF_TOKEN("begin", KWD, TKN_BEGIN, BEGIN)
57DEF_TOKEN("c", ID, TKN_C, IDENT)
58DEF_TOKEN("case", KWD, TKN_CASE, CASE)
59DEF_TOKEN("const", KWD, TKN_CONST, CONST)
60DEF_TOKEN("constructor", KWD, TKN_CONSTRUCTOR, IDENT)
61DEF_TOKEN("destructor", KWD, TKN_DESTRUCTOR, IDENT)
62DEF_TOKEN("div", KWD, TKN_DIV, DIV)
63DEF_TOKEN("do", KWD, TKN_DO, DO)
64DEF_TOKEN("downto", KWD, TKN_DOWNTO, TO)
65DEF_TOKEN("else", KWD, TKN_ELSE, ELSE)
66DEF_TOKEN("end", KWD, TKN_END, END)
67DEF_TOKEN("external", ID, TKN_EXTERNAL, SCOPE)
68DEF_TOKEN("exit", ID, TKN_EXIT, IDENT)
69DEF_TOKEN("far", KWD, TKN_FAR, IDENT)
70DEF_TOKEN("file", KWD, TKN_FILE, FIL)
71DEF_TOKEN("for", KWD, TKN_FOR, FOR)
72DEF_TOKEN("function", KWD, TKN_FUNCTION, FUNCTION)
73DEF_TOKEN("goto", KWD, TKN_GOTO, GOTO)
74DEF_TOKEN("ident", KWD, TKN_IDENT, IDENT)
75DEF_TOKEN("if", KWD, TKN_IF, IF)
76DEF_TOKEN("halt", ID, TKN_HALT, IDENT)
77DEF_TOKEN("implementation", KWD, TKN_IMPLEMENTATION, IDENT)
78DEF_TOKEN("interface", KWD, TKN_INTERFACE, IDENT)
79DEF_TOKEN("in", KWD, TKN_IN, IN)
80DEF_TOKEN("label", KWD, TKN_LABEL, LABEL)
81DEF_TOKEN("loophole", KWD, TKN_LOOPHOLE, LOOPHOLE)
82DEF_TOKEN("mod", KWD, TKN_MOD, MOD)
83DEF_TOKEN("not", KWD, TKN_NOT, NOT)
84DEF_TOKEN("object", KWD, TKN_OBJECT, IDENT)
85DEF_TOKEN("of", KWD, TKN_OF, OF)
86DEF_TOKEN("or", KWD, TKN_OR, OR)
87DEF_TOKEN("origin", KWD, TKN_ORIGIN, IDENT)
88DEF_TOKEN("otherwise", KWD, TKN_OTHERWISE, OTHERWISE)
89DEF_TOKEN("packed", KWD, TKN_PACKED, PACKED)
90DEF_TOKEN("procedure", KWD, TKN_PROCEDURE, PROCEDURE)
91DEF_TOKEN("program", KWD, TKN_PROGRAM, PROGRAM)
92DEF_TOKEN("record", KWD, TKN_RECORD, RECORD)
93DEF_TOKEN("repeat", KWD, TKN_REPEAT, REPEAT)
94DEF_TOKEN("self", ID, TKN_SELF, IDENT)
95DEF_TOKEN("set", KWD, TKN_SET, SET)
96DEF_TOKEN("shl", KWD, TKN_SHL, IDENT)
97DEF_TOKEN("shr", KWD, TKN_SHR, IDENT)
98DEF_TOKEN("static", ID, TKN_STATIC, SCOPE)
99DEF_TOKEN("str", ID, TKN_STR, IDENT)
100DEF_TOKEN("string", ID, TKN_STRING, IDENT)
101DEF_TOKEN("then", KWD, TKN_THEN, THEN)
102DEF_TOKEN("to", KWD, TKN_TO, TO)
103DEF_TOKEN("type", KWD, TKN_TYPE, TYPE)
104DEF_TOKEN("until", KWD, TKN_UNTIL, UNTIL)
105DEF_TOKEN("unit", KWD, TKN_UNIT, IDENT)
106DEF_TOKEN("var", KWD, TKN_VAR, VAR)
107DEF_TOKEN("virtual", ID, TKN_VIRTUAL, IDENT)
108DEF_TOKEN("while", KWD, TKN_WHILE, WHILE)
109DEF_TOKEN("with", KWD, TKN_WITH, WITH)
110DEF_TOKEN("xor", KWD, TKN_XOR, IDENT)
111
112DEF_TOKEN("succ",      ID, TKN_SUCC, IDENT)
113DEF_TOKEN("pred",      ID, TKN_PRED, IDENT)
114DEF_TOKEN("inc",       ID, TKN_INC, IDENT)
115DEF_TOKEN("dec",       ID, TKN_DEC, IDENT)
116DEF_TOKEN("read",      ID, TKN_READ, READ)
117DEF_TOKEN("readln",    ID, TKN_READLN, READ)
118DEF_TOKEN("write",     ID, TKN_WRITE, WRITE)
119DEF_TOKEN("writeln",   ID, TKN_WRITELN, WRITE)
120DEF_TOKEN("new",       ID, TKN_NEW, IDENT)
121DEF_TOKEN("ref",       ID, TKN_REF, IDENT)
122DEF_TOKEN("dispose",   ID, TKN_DISPOSE, IDENT)
123
124DEF_TOKEN(NULL,      SPEC, TKN_GEN, 0)
125DEF_TOKEN(NULL,      WSPC, TKN_PUSH_FILE,  0)
126DEF_TOKEN(NULL,      WSPC, TKN_PUSH_UNIT,  0)
127DEF_TOKEN(NULL,      WSPC, TKN_POP_FILE,  0)
128DEF_TOKEN(NULL,      WSPC, TKN_SOURCE_FILE,  0)
129DEF_TOKEN(NULL,      SPEC, TKN_UNIT_END, UNIT_END)
130DEF_TOKEN(NULL,      SPEC, TKN_RESERVED, 0)
131DEF_TOKEN(NULL,      SPEC, TKN_BEG_SHIFT, 0)
132DEF_TOKEN(NULL,      SPEC, TKN_END_SHIFT, 0)
133DEF_TOKEN(NULL,      SPEC, TKN_DUMMY, EOF)
134
135#undef DEF_TOKEN
136
137
138
139