1#define TEOF 0
2#define TNL 1
3#define TSEMI 2
4#define TBACKGND 3
5#define TAND 4
6#define TOR 5
7#define TPIPE 6
8#define TLP 7
9#define TRP 8
10#define TENDCASE 9
11#define TENDBQUOTE 10
12#define TREDIR 11
13#define TWORD 12
14#define TIF 13
15#define TTHEN 14
16#define TELSE 15
17#define TELIF 16
18#define TFI 17
19#define TWHILE 18
20#define TUNTIL 19
21#define TFOR 20
22#define TDO 21
23#define TDONE 22
24#define TBEGIN 23
25#define TEND 24
26#define TCASE 25
27#define TESAC 26
28#define TNOT 27
29
30/* Array indicating which tokens mark the end of a list */
31const char tokendlist[] = {
32	1,
33	0,
34	0,
35	0,
36	0,
37	0,
38	0,
39	0,
40	1,
41	1,
42	1,
43	0,
44	0,
45	0,
46	1,
47	1,
48	1,
49	1,
50	0,
51	0,
52	0,
53	1,
54	1,
55	0,
56	1,
57	0,
58	1,
59	0,
60};
61
62const char *const tokname[] = {
63	"end of file",
64	"newline",
65	"\";\"",
66	"\"&\"",
67	"\"&&\"",
68	"\"||\"",
69	"\"|\"",
70	"\"(\"",
71	"\")\"",
72	"\";;\"",
73	"\"`\"",
74	"redirection",
75	"word",
76	"\"if\"",
77	"\"then\"",
78	"\"else\"",
79	"\"elif\"",
80	"\"fi\"",
81	"\"while\"",
82	"\"until\"",
83	"\"for\"",
84	"\"do\"",
85	"\"done\"",
86	"\"{\"",
87	"\"}\"",
88	"\"case\"",
89	"\"esac\"",
90	"\"!\"",
91};
92
93#define KWDOFFSET 13
94
95const char *const parsekwd[] = {
96	"if",
97	"then",
98	"else",
99	"elif",
100	"fi",
101	"while",
102	"until",
103	"for",
104	"do",
105	"done",
106	"{",
107	"}",
108	"case",
109	"esac",
110	"!",
111	0
112};
113