OILS / _gen / frontend / consts.cc View on Github | oilshell.org

1713 lines, 1620 significant
1#include "_gen/frontend/consts.h"
2
3using id_kind_asdl::Id;
4using id_kind_asdl::Kind;
5using types_asdl::redir_arg_type_e;
6using types_asdl::bool_arg_type_e;
7using option_asdl::builtin_t;
8
9namespace consts {
10
11int NO_INDEX = 0; // duplicated from frontend/consts.py
12
13GLOBAL_STR(gVersion, "0.21.0");
14
15GLOBAL_LIST(STRICT_ALL, int, 9, {28 COMMA 29 COMMA 30 COMMA 31 COMMA 32 COMMA 36 COMMA 33 COMMA 35 COMMA 34});
16GLOBAL_LIST(YSH_UPGRADE, int, 24, {49 COMMA 47 COMMA 1 COMMA 48 COMMA 4 COMMA 2 COMMA 5 COMMA 37 COMMA 40 COMMA 41 COMMA 42 COMMA 39 COMMA 43 COMMA 38 COMMA 45 COMMA 44 COMMA 3 COMMA 50 COMMA 54 COMMA 53 COMMA 46 COMMA 6 COMMA 52 COMMA 51});
17GLOBAL_LIST(YSH_ALL, int, 44, {49 COMMA 47 COMMA 1 COMMA 48 COMMA 4 COMMA 2 COMMA 5 COMMA 37 COMMA 55 COMMA 56 COMMA 57 COMMA 62 COMMA 40 COMMA 41 COMMA 58 COMMA 61 COMMA 42 COMMA 39 COMMA 59 COMMA 43 COMMA 38 COMMA 60 COMMA 45 COMMA 44 COMMA 3 COMMA 50 COMMA 54 COMMA 53 COMMA 63 COMMA 64 COMMA 65 COMMA 46 COMMA 28 COMMA 29 COMMA 30 COMMA 31 COMMA 32 COMMA 36 COMMA 33 COMMA 35 COMMA 34 COMMA 6 COMMA 52 COMMA 51});
18GLOBAL_LIST(DEFAULT_TRUE, int, 15, {21 COMMA 22 COMMA 47 COMMA 23 COMMA 48 COMMA 16 COMMA 56 COMMA 57 COMMA 62 COMMA 58 COMMA 61 COMMA 59 COMMA 60 COMMA 54 COMMA 52});
19GLOBAL_LIST(PARSE_OPTION_NUMS, int, 18, {48 COMMA 37 COMMA 55 COMMA 56 COMMA 57 COMMA 62 COMMA 40 COMMA 41 COMMA 58 COMMA 61 COMMA 42 COMMA 39 COMMA 59 COMMA 43 COMMA 38 COMMA 60 COMMA 45 COMMA 44});
20GLOBAL_LIST(SHOPT_OPTION_NUMS, int, 92, {21 COMMA 22 COMMA 27 COMMA 26 COMMA 25 COMMA 71 COMMA 72 COMMA 73 COMMA 74 COMMA 75 COMMA 76 COMMA 77 COMMA 70 COMMA 49 COMMA 78 COMMA 47 COMMA 79 COMMA 80 COMMA 81 COMMA 23 COMMA 20 COMMA 82 COMMA 48 COMMA 83 COMMA 18 COMMA 84 COMMA 17 COMMA 85 COMMA 86 COMMA 87 COMMA 88 COMMA 68 COMMA 89 COMMA 90 COMMA 69 COMMA 91 COMMA 4 COMMA 92 COMMA 66 COMMA 93 COMMA 94 COMMA 95 COMMA 96 COMMA 97 COMMA 98 COMMA 99 COMMA 19 COMMA 5 COMMA 37 COMMA 55 COMMA 56 COMMA 57 COMMA 62 COMMA 40 COMMA 41 COMMA 58 COMMA 61 COMMA 42 COMMA 39 COMMA 59 COMMA 43 COMMA 38 COMMA 60 COMMA 45 COMMA 44 COMMA 50 COMMA 67 COMMA 100 COMMA 101 COMMA 24 COMMA 54 COMMA 102 COMMA 103 COMMA 53 COMMA 63 COMMA 64 COMMA 65 COMMA 46 COMMA 104 COMMA 28 COMMA 29 COMMA 30 COMMA 31 COMMA 32 COMMA 36 COMMA 33 COMMA 35 COMMA 34 COMMA 6 COMMA 105 COMMA 52 COMMA 51});
21GLOBAL_LIST(SET_OPTION_NUMS, int, 12, {14 COMMA 1 COMMA 16 COMMA 11 COMMA 7 COMMA 10 COMMA 2 COMMA 3 COMMA 12 COMMA 9 COMMA 13 COMMA 8});
22GLOBAL_LIST(VISIBLE_SHOPT_NUMS, int, 52, {21 COMMA 22 COMMA 27 COMMA 26 COMMA 25 COMMA 49 COMMA 47 COMMA 23 COMMA 20 COMMA 48 COMMA 18 COMMA 17 COMMA 4 COMMA 19 COMMA 5 COMMA 37 COMMA 55 COMMA 56 COMMA 57 COMMA 62 COMMA 40 COMMA 41 COMMA 58 COMMA 61 COMMA 42 COMMA 39 COMMA 59 COMMA 43 COMMA 38 COMMA 60 COMMA 45 COMMA 44 COMMA 50 COMMA 24 COMMA 54 COMMA 53 COMMA 63 COMMA 64 COMMA 65 COMMA 46 COMMA 28 COMMA 29 COMMA 30 COMMA 31 COMMA 32 COMMA 36 COMMA 33 COMMA 35 COMMA 34 COMMA 6 COMMA 52 COMMA 51});
23
24int RedirDefaultFd(id_kind_asdl::Id_t id) {
25 // relies on "switch lowering"
26 switch (id) {
27
28 case Id::Redir_Less: return 0;
29 case Id::Redir_Great: return 1;
30 case Id::Redir_DLess: return 0;
31 case Id::Redir_TLess: return 0;
32 case Id::Redir_DGreat: return 1;
33 case Id::Redir_GreatAnd: return 1;
34 case Id::Redir_LessAnd: return 0;
35 case Id::Redir_DLessDash: return 0;
36 case Id::Redir_LessGreat: return 0;
37 case Id::Redir_Clobber: return 1;
38 case Id::Redir_AndGreat: return 1;
39 case Id::Redir_AndDGreat: return 1;
40 }
41 FAIL(kShouldNotGetHere);
42}
43
44types_asdl::redir_arg_type_t RedirArgType(id_kind_asdl::Id_t id) {
45 // relies on "switch lowering"
46 switch (id) {
47
48 case Id::Redir_Less: return redir_arg_type_e::Path;
49 case Id::Redir_Great: return redir_arg_type_e::Path;
50 case Id::Redir_TLess: return redir_arg_type_e::Here;
51 case Id::Redir_DGreat: return redir_arg_type_e::Path;
52 case Id::Redir_GreatAnd: return redir_arg_type_e::Desc;
53 case Id::Redir_LessAnd: return redir_arg_type_e::Desc;
54 case Id::Redir_LessGreat: return redir_arg_type_e::Path;
55 case Id::Redir_Clobber: return redir_arg_type_e::Path;
56 case Id::Redir_AndGreat: return redir_arg_type_e::Path;
57 case Id::Redir_AndDGreat: return redir_arg_type_e::Path;
58 }
59 FAIL(kShouldNotGetHere);
60}
61
62types_asdl::bool_arg_type_t BoolArgType(id_kind_asdl::Id_t id) {
63 // relies on "switch lowering"
64 switch (id) {
65
66 case Id::Op_DAmp: return bool_arg_type_e::Undefined;
67 case Id::Op_DPipe: return bool_arg_type_e::Undefined;
68 case Id::Op_Less: return bool_arg_type_e::Str;
69 case Id::Op_Great: return bool_arg_type_e::Str;
70 case Id::KW_Bang: return bool_arg_type_e::Undefined;
71 case Id::BoolUnary_z: return bool_arg_type_e::Str;
72 case Id::BoolUnary_n: return bool_arg_type_e::Str;
73 case Id::BoolUnary_o: return bool_arg_type_e::Other;
74 case Id::BoolUnary_t: return bool_arg_type_e::Other;
75 case Id::BoolUnary_v: return bool_arg_type_e::Other;
76 case Id::BoolUnary_R: return bool_arg_type_e::Other;
77 case Id::BoolUnary_a: return bool_arg_type_e::Path;
78 case Id::BoolUnary_b: return bool_arg_type_e::Path;
79 case Id::BoolUnary_c: return bool_arg_type_e::Path;
80 case Id::BoolUnary_d: return bool_arg_type_e::Path;
81 case Id::BoolUnary_e: return bool_arg_type_e::Path;
82 case Id::BoolUnary_f: return bool_arg_type_e::Path;
83 case Id::BoolUnary_g: return bool_arg_type_e::Path;
84 case Id::BoolUnary_h: return bool_arg_type_e::Path;
85 case Id::BoolUnary_k: return bool_arg_type_e::Path;
86 case Id::BoolUnary_L: return bool_arg_type_e::Path;
87 case Id::BoolUnary_p: return bool_arg_type_e::Path;
88 case Id::BoolUnary_r: return bool_arg_type_e::Path;
89 case Id::BoolUnary_s: return bool_arg_type_e::Path;
90 case Id::BoolUnary_S: return bool_arg_type_e::Path;
91 case Id::BoolUnary_u: return bool_arg_type_e::Path;
92 case Id::BoolUnary_w: return bool_arg_type_e::Path;
93 case Id::BoolUnary_x: return bool_arg_type_e::Path;
94 case Id::BoolUnary_O: return bool_arg_type_e::Path;
95 case Id::BoolUnary_G: return bool_arg_type_e::Path;
96 case Id::BoolUnary_N: return bool_arg_type_e::Path;
97 case Id::BoolBinary_GlobEqual: return bool_arg_type_e::Str;
98 case Id::BoolBinary_GlobDEqual: return bool_arg_type_e::Str;
99 case Id::BoolBinary_GlobNEqual: return bool_arg_type_e::Str;
100 case Id::BoolBinary_EqualTilde: return bool_arg_type_e::Str;
101 case Id::BoolBinary_ef: return bool_arg_type_e::Path;
102 case Id::BoolBinary_nt: return bool_arg_type_e::Path;
103 case Id::BoolBinary_ot: return bool_arg_type_e::Path;
104 case Id::BoolBinary_eq: return bool_arg_type_e::Int;
105 case Id::BoolBinary_ne: return bool_arg_type_e::Int;
106 case Id::BoolBinary_gt: return bool_arg_type_e::Int;
107 case Id::BoolBinary_ge: return bool_arg_type_e::Int;
108 case Id::BoolBinary_lt: return bool_arg_type_e::Int;
109 case Id::BoolBinary_le: return bool_arg_type_e::Int;
110 case Id::BoolBinary_Equal: return bool_arg_type_e::Str;
111 case Id::BoolBinary_DEqual: return bool_arg_type_e::Str;
112 case Id::BoolBinary_NEqual: return bool_arg_type_e::Str;
113 }
114 FAIL(kShouldNotGetHere);
115}
116
117Kind GetKind(id_kind_asdl::Id_t id) {
118 // relies on "switch lowering"
119 switch (id) {
120
121 case Id::Word_Compound: return Kind::Word;
122 case Id::Arith_Semi: return Kind::Arith;
123 case Id::Arith_Comma: return Kind::Arith;
124 case Id::Arith_Plus: return Kind::Arith;
125 case Id::Arith_Minus: return Kind::Arith;
126 case Id::Arith_Star: return Kind::Arith;
127 case Id::Arith_Slash: return Kind::Arith;
128 case Id::Arith_Percent: return Kind::Arith;
129 case Id::Arith_DPlus: return Kind::Arith;
130 case Id::Arith_DMinus: return Kind::Arith;
131 case Id::Arith_DStar: return Kind::Arith;
132 case Id::Arith_LParen: return Kind::Arith;
133 case Id::Arith_RParen: return Kind::Arith;
134 case Id::Arith_LBracket: return Kind::Arith;
135 case Id::Arith_RBracket: return Kind::Arith;
136 case Id::Arith_RBrace: return Kind::Arith;
137 case Id::Arith_QMark: return Kind::Arith;
138 case Id::Arith_Colon: return Kind::Arith;
139 case Id::Arith_LessEqual: return Kind::Arith;
140 case Id::Arith_Less: return Kind::Arith;
141 case Id::Arith_GreatEqual: return Kind::Arith;
142 case Id::Arith_Great: return Kind::Arith;
143 case Id::Arith_DEqual: return Kind::Arith;
144 case Id::Arith_NEqual: return Kind::Arith;
145 case Id::Arith_DAmp: return Kind::Arith;
146 case Id::Arith_DPipe: return Kind::Arith;
147 case Id::Arith_Bang: return Kind::Arith;
148 case Id::Arith_DGreat: return Kind::Arith;
149 case Id::Arith_DLess: return Kind::Arith;
150 case Id::Arith_Amp: return Kind::Arith;
151 case Id::Arith_Pipe: return Kind::Arith;
152 case Id::Arith_Caret: return Kind::Arith;
153 case Id::Arith_Tilde: return Kind::Arith;
154 case Id::Arith_Equal: return Kind::Arith;
155 case Id::Arith_PlusEqual: return Kind::Arith;
156 case Id::Arith_MinusEqual: return Kind::Arith;
157 case Id::Arith_StarEqual: return Kind::Arith;
158 case Id::Arith_SlashEqual: return Kind::Arith;
159 case Id::Arith_PercentEqual: return Kind::Arith;
160 case Id::Arith_DGreatEqual: return Kind::Arith;
161 case Id::Arith_DLessEqual: return Kind::Arith;
162 case Id::Arith_AmpEqual: return Kind::Arith;
163 case Id::Arith_CaretEqual: return Kind::Arith;
164 case Id::Arith_PipeEqual: return Kind::Arith;
165 case Id::Eof_Real: return Kind::Eof;
166 case Id::Eof_RParen: return Kind::Eof;
167 case Id::Eof_Backtick: return Kind::Eof;
168 case Id::Undefined_Tok: return Kind::Undefined;
169 case Id::Unknown_Tok: return Kind::Unknown;
170 case Id::Unknown_Backslash: return Kind::Unknown;
171 case Id::Unknown_DEqual: return Kind::Unknown;
172 case Id::Eol_Tok: return Kind::Eol;
173 case Id::Ignored_LineCont: return Kind::Ignored;
174 case Id::Ignored_Space: return Kind::Ignored;
175 case Id::Ignored_Comment: return Kind::Ignored;
176 case Id::WS_Space: return Kind::WS;
177 case Id::Lit_Chars: return Kind::Lit;
178 case Id::Lit_CharsWithoutPrefix: return Kind::Lit;
179 case Id::Lit_VarLike: return Kind::Lit;
180 case Id::Lit_ArrayLhsOpen: return Kind::Lit;
181 case Id::Lit_ArrayLhsClose: return Kind::Lit;
182 case Id::Lit_Splice: return Kind::Lit;
183 case Id::Lit_AtLBracket: return Kind::Lit;
184 case Id::Lit_AtLBraceDot: return Kind::Lit;
185 case Id::Lit_Other: return Kind::Lit;
186 case Id::Lit_EscapedChar: return Kind::Lit;
187 case Id::Lit_RegexMeta: return Kind::Lit;
188 case Id::Lit_LBracket: return Kind::Lit;
189 case Id::Lit_RBracket: return Kind::Lit;
190 case Id::Lit_Star: return Kind::Lit;
191 case Id::Lit_QMark: return Kind::Lit;
192 case Id::Lit_LBrace: return Kind::Lit;
193 case Id::Lit_RBrace: return Kind::Lit;
194 case Id::Lit_Comma: return Kind::Lit;
195 case Id::Lit_Equals: return Kind::Lit;
196 case Id::Lit_Dollar: return Kind::Lit;
197 case Id::Lit_DRightBracket: return Kind::Lit;
198 case Id::Lit_Tilde: return Kind::Lit;
199 case Id::Lit_Pound: return Kind::Lit;
200 case Id::Lit_TPound: return Kind::Lit;
201 case Id::Lit_TDot: return Kind::Lit;
202 case Id::Lit_Slash: return Kind::Lit;
203 case Id::Lit_Percent: return Kind::Lit;
204 case Id::Lit_Colon: return Kind::Lit;
205 case Id::Lit_Digits: return Kind::Lit;
206 case Id::Lit_At: return Kind::Lit;
207 case Id::Lit_ArithVarLike: return Kind::Lit;
208 case Id::Lit_BadBackslash: return Kind::Lit;
209 case Id::Lit_CompDummy: return Kind::Lit;
210 case Id::Backtick_Right: return Kind::Backtick;
211 case Id::Backtick_Quoted: return Kind::Backtick;
212 case Id::Backtick_DoubleQuote: return Kind::Backtick;
213 case Id::Backtick_Other: return Kind::Backtick;
214 case Id::History_Op: return Kind::History;
215 case Id::History_Num: return Kind::History;
216 case Id::History_Search: return Kind::History;
217 case Id::History_Other: return Kind::History;
218 case Id::Op_Newline: return Kind::Op;
219 case Id::Op_Amp: return Kind::Op;
220 case Id::Op_Pipe: return Kind::Op;
221 case Id::Op_PipeAmp: return Kind::Op;
222 case Id::Op_DAmp: return Kind::Op;
223 case Id::Op_DPipe: return Kind::Op;
224 case Id::Op_Semi: return Kind::Op;
225 case Id::Op_DSemi: return Kind::Op;
226 case Id::Op_SemiAmp: return Kind::Op;
227 case Id::Op_DSemiAmp: return Kind::Op;
228 case Id::Op_LParen: return Kind::Op;
229 case Id::Op_RParen: return Kind::Op;
230 case Id::Op_DLeftParen: return Kind::Op;
231 case Id::Op_DRightParen: return Kind::Op;
232 case Id::Op_Less: return Kind::Op;
233 case Id::Op_Great: return Kind::Op;
234 case Id::Op_Bang: return Kind::Op;
235 case Id::Op_LBracket: return Kind::Op;
236 case Id::Op_RBracket: return Kind::Op;
237 case Id::Op_LBrace: return Kind::Op;
238 case Id::Op_RBrace: return Kind::Op;
239 case Id::Expr_Reserved: return Kind::Expr;
240 case Id::Expr_Symbol: return Kind::Expr;
241 case Id::Expr_Name: return Kind::Expr;
242 case Id::Expr_DecInt: return Kind::Expr;
243 case Id::Expr_BinInt: return Kind::Expr;
244 case Id::Expr_OctInt: return Kind::Expr;
245 case Id::Expr_HexInt: return Kind::Expr;
246 case Id::Expr_Float: return Kind::Expr;
247 case Id::Expr_Bang: return Kind::Expr;
248 case Id::Expr_Dot: return Kind::Expr;
249 case Id::Expr_DDot: return Kind::Expr;
250 case Id::Expr_Colon: return Kind::Expr;
251 case Id::Expr_RArrow: return Kind::Expr;
252 case Id::Expr_RDArrow: return Kind::Expr;
253 case Id::Expr_DSlash: return Kind::Expr;
254 case Id::Expr_TEqual: return Kind::Expr;
255 case Id::Expr_NotDEqual: return Kind::Expr;
256 case Id::Expr_TildeDEqual: return Kind::Expr;
257 case Id::Expr_At: return Kind::Expr;
258 case Id::Expr_DoubleAt: return Kind::Expr;
259 case Id::Expr_Ellipsis: return Kind::Expr;
260 case Id::Expr_Dollar: return Kind::Expr;
261 case Id::Expr_NotTilde: return Kind::Expr;
262 case Id::Expr_DTilde: return Kind::Expr;
263 case Id::Expr_NotDTilde: return Kind::Expr;
264 case Id::Expr_DStarEqual: return Kind::Expr;
265 case Id::Expr_DSlashEqual: return Kind::Expr;
266 case Id::Expr_CastedDummy: return Kind::Expr;
267 case Id::Expr_Null: return Kind::Expr;
268 case Id::Expr_True: return Kind::Expr;
269 case Id::Expr_False: return Kind::Expr;
270 case Id::Expr_And: return Kind::Expr;
271 case Id::Expr_Or: return Kind::Expr;
272 case Id::Expr_Not: return Kind::Expr;
273 case Id::Expr_For: return Kind::Expr;
274 case Id::Expr_Is: return Kind::Expr;
275 case Id::Expr_In: return Kind::Expr;
276 case Id::Expr_If: return Kind::Expr;
277 case Id::Expr_Else: return Kind::Expr;
278 case Id::Expr_Func: return Kind::Expr;
279 case Id::Expr_Capture: return Kind::Expr;
280 case Id::Expr_As: return Kind::Expr;
281 case Id::Expr_While: return Kind::Expr;
282 case Id::Expr_Break: return Kind::Expr;
283 case Id::Expr_Continue: return Kind::Expr;
284 case Id::Expr_Return: return Kind::Expr;
285 case Id::Char_OneChar: return Kind::Char;
286 case Id::Char_Stop: return Kind::Char;
287 case Id::Char_Hex: return Kind::Char;
288 case Id::Char_YHex: return Kind::Char;
289 case Id::Char_Octal3: return Kind::Char;
290 case Id::Char_Octal4: return Kind::Char;
291 case Id::Char_Unicode4: return Kind::Char;
292 case Id::Char_SurrogatePair: return Kind::Char;
293 case Id::Char_Unicode8: return Kind::Char;
294 case Id::Char_UBraced: return Kind::Char;
295 case Id::Char_Pound: return Kind::Char;
296 case Id::Char_AsciiControl: return Kind::Char;
297 case Id::Re_Start: return Kind::Re;
298 case Id::Re_End: return Kind::Re;
299 case Id::Re_Dot: return Kind::Re;
300 case Id::Redir_Less: return Kind::Redir;
301 case Id::Redir_Great: return Kind::Redir;
302 case Id::Redir_DLess: return Kind::Redir;
303 case Id::Redir_TLess: return Kind::Redir;
304 case Id::Redir_DGreat: return Kind::Redir;
305 case Id::Redir_GreatAnd: return Kind::Redir;
306 case Id::Redir_LessAnd: return Kind::Redir;
307 case Id::Redir_DLessDash: return Kind::Redir;
308 case Id::Redir_LessGreat: return Kind::Redir;
309 case Id::Redir_Clobber: return Kind::Redir;
310 case Id::Redir_AndGreat: return Kind::Redir;
311 case Id::Redir_AndDGreat: return Kind::Redir;
312 case Id::Left_DoubleQuote: return Kind::Left;
313 case Id::Left_SingleQuote: return Kind::Left;
314 case Id::Left_DollarSingleQuote: return Kind::Left;
315 case Id::Left_RSingleQuote: return Kind::Left;
316 case Id::Left_USingleQuote: return Kind::Left;
317 case Id::Left_BSingleQuote: return Kind::Left;
318 case Id::Left_TDoubleQuote: return Kind::Left;
319 case Id::Left_TSingleQuote: return Kind::Left;
320 case Id::Left_RTSingleQuote: return Kind::Left;
321 case Id::Left_UTSingleQuote: return Kind::Left;
322 case Id::Left_BTSingleQuote: return Kind::Left;
323 case Id::Left_Backtick: return Kind::Left;
324 case Id::Left_DollarParen: return Kind::Left;
325 case Id::Left_DollarBrace: return Kind::Left;
326 case Id::Left_DollarDParen: return Kind::Left;
327 case Id::Left_DollarBracket: return Kind::Left;
328 case Id::Left_DollarDoubleQuote: return Kind::Left;
329 case Id::Left_ProcSubIn: return Kind::Left;
330 case Id::Left_ProcSubOut: return Kind::Left;
331 case Id::Left_AtParen: return Kind::Left;
332 case Id::Left_CaretParen: return Kind::Left;
333 case Id::Left_CaretBracket: return Kind::Left;
334 case Id::Left_CaretBrace: return Kind::Left;
335 case Id::Left_CaretDoubleQuote: return Kind::Left;
336 case Id::Left_ColonPipe: return Kind::Left;
337 case Id::Left_PercentParen: return Kind::Left;
338 case Id::Right_DoubleQuote: return Kind::Right;
339 case Id::Right_SingleQuote: return Kind::Right;
340 case Id::Right_Backtick: return Kind::Right;
341 case Id::Right_DollarBrace: return Kind::Right;
342 case Id::Right_DollarDParen: return Kind::Right;
343 case Id::Right_DollarDoubleQuote: return Kind::Right;
344 case Id::Right_DollarSingleQuote: return Kind::Right;
345 case Id::Right_Subshell: return Kind::Right;
346 case Id::Right_ShFunction: return Kind::Right;
347 case Id::Right_CasePat: return Kind::Right;
348 case Id::Right_ShArrayLiteral: return Kind::Right;
349 case Id::Right_ExtGlob: return Kind::Right;
350 case Id::Right_BlockLiteral: return Kind::Right;
351 case Id::ExtGlob_Comma: return Kind::ExtGlob;
352 case Id::ExtGlob_At: return Kind::ExtGlob;
353 case Id::ExtGlob_Star: return Kind::ExtGlob;
354 case Id::ExtGlob_Plus: return Kind::ExtGlob;
355 case Id::ExtGlob_QMark: return Kind::ExtGlob;
356 case Id::ExtGlob_Bang: return Kind::ExtGlob;
357 case Id::VSub_DollarName: return Kind::VSub;
358 case Id::VSub_Name: return Kind::VSub;
359 case Id::VSub_Number: return Kind::VSub;
360 case Id::VSub_Bang: return Kind::VSub;
361 case Id::VSub_At: return Kind::VSub;
362 case Id::VSub_Pound: return Kind::VSub;
363 case Id::VSub_Dollar: return Kind::VSub;
364 case Id::VSub_Star: return Kind::VSub;
365 case Id::VSub_Hyphen: return Kind::VSub;
366 case Id::VSub_QMark: return Kind::VSub;
367 case Id::VSub_Dot: return Kind::VSub;
368 case Id::VTest_ColonHyphen: return Kind::VTest;
369 case Id::VTest_Hyphen: return Kind::VTest;
370 case Id::VTest_ColonEquals: return Kind::VTest;
371 case Id::VTest_Equals: return Kind::VTest;
372 case Id::VTest_ColonQMark: return Kind::VTest;
373 case Id::VTest_QMark: return Kind::VTest;
374 case Id::VTest_ColonPlus: return Kind::VTest;
375 case Id::VTest_Plus: return Kind::VTest;
376 case Id::VOp0_Q: return Kind::VOp0;
377 case Id::VOp0_E: return Kind::VOp0;
378 case Id::VOp0_P: return Kind::VOp0;
379 case Id::VOp0_A: return Kind::VOp0;
380 case Id::VOp0_a: return Kind::VOp0;
381 case Id::VOp1_Percent: return Kind::VOp1;
382 case Id::VOp1_DPercent: return Kind::VOp1;
383 case Id::VOp1_Pound: return Kind::VOp1;
384 case Id::VOp1_DPound: return Kind::VOp1;
385 case Id::VOp1_Caret: return Kind::VOp1;
386 case Id::VOp1_DCaret: return Kind::VOp1;
387 case Id::VOp1_Comma: return Kind::VOp1;
388 case Id::VOp1_DComma: return Kind::VOp1;
389 case Id::VOpYsh_Pipe: return Kind::VOpYsh;
390 case Id::VOpYsh_Space: return Kind::VOpYsh;
391 case Id::VOp2_Slash: return Kind::VOp2;
392 case Id::VOp2_Colon: return Kind::VOp2;
393 case Id::VOp2_LBracket: return Kind::VOp2;
394 case Id::VOp2_RBracket: return Kind::VOp2;
395 case Id::VOp3_At: return Kind::VOp3;
396 case Id::VOp3_Star: return Kind::VOp3;
397 case Id::Node_PostDPlus: return Kind::Node;
398 case Id::Node_PostDMinus: return Kind::Node;
399 case Id::Node_UnaryPlus: return Kind::Node;
400 case Id::Node_UnaryMinus: return Kind::Node;
401 case Id::Node_NotIn: return Kind::Node;
402 case Id::Node_IsNot: return Kind::Node;
403 case Id::KW_DLeftBracket: return Kind::KW;
404 case Id::KW_Bang: return Kind::KW;
405 case Id::KW_For: return Kind::KW;
406 case Id::KW_While: return Kind::KW;
407 case Id::KW_Until: return Kind::KW;
408 case Id::KW_Do: return Kind::KW;
409 case Id::KW_Done: return Kind::KW;
410 case Id::KW_In: return Kind::KW;
411 case Id::KW_Case: return Kind::KW;
412 case Id::KW_Esac: return Kind::KW;
413 case Id::KW_If: return Kind::KW;
414 case Id::KW_Fi: return Kind::KW;
415 case Id::KW_Then: return Kind::KW;
416 case Id::KW_Else: return Kind::KW;
417 case Id::KW_Elif: return Kind::KW;
418 case Id::KW_Function: return Kind::KW;
419 case Id::KW_Time: return Kind::KW;
420 case Id::KW_Const: return Kind::KW;
421 case Id::KW_Var: return Kind::KW;
422 case Id::KW_SetVar: return Kind::KW;
423 case Id::KW_SetGlobal: return Kind::KW;
424 case Id::KW_Call: return Kind::KW;
425 case Id::KW_Proc: return Kind::KW;
426 case Id::KW_Func: return Kind::KW;
427 case Id::ControlFlow_Break: return Kind::ControlFlow;
428 case Id::ControlFlow_Continue: return Kind::ControlFlow;
429 case Id::ControlFlow_Return: return Kind::ControlFlow;
430 case Id::ControlFlow_Exit: return Kind::ControlFlow;
431 case Id::LookAhead_FuncParens: return Kind::LookAhead;
432 case Id::Glob_LBracket: return Kind::Glob;
433 case Id::Glob_RBracket: return Kind::Glob;
434 case Id::Glob_Star: return Kind::Glob;
435 case Id::Glob_QMark: return Kind::Glob;
436 case Id::Glob_Bang: return Kind::Glob;
437 case Id::Glob_Caret: return Kind::Glob;
438 case Id::Glob_EscapedChar: return Kind::Glob;
439 case Id::Glob_BadBackslash: return Kind::Glob;
440 case Id::Glob_CleanLiterals: return Kind::Glob;
441 case Id::Glob_OtherLiteral: return Kind::Glob;
442 case Id::Format_EscapedPercent: return Kind::Format;
443 case Id::Format_Percent: return Kind::Format;
444 case Id::Format_Flag: return Kind::Format;
445 case Id::Format_Num: return Kind::Format;
446 case Id::Format_Dot: return Kind::Format;
447 case Id::Format_Type: return Kind::Format;
448 case Id::Format_Star: return Kind::Format;
449 case Id::Format_Time: return Kind::Format;
450 case Id::Format_Zero: return Kind::Format;
451 case Id::PS_Subst: return Kind::PS;
452 case Id::PS_Octal3: return Kind::PS;
453 case Id::PS_LBrace: return Kind::PS;
454 case Id::PS_RBrace: return Kind::PS;
455 case Id::PS_Literals: return Kind::PS;
456 case Id::PS_BadBackslash: return Kind::PS;
457 case Id::Range_Int: return Kind::Range;
458 case Id::Range_Char: return Kind::Range;
459 case Id::Range_Dots: return Kind::Range;
460 case Id::Range_Other: return Kind::Range;
461 case Id::J8_LBracket: return Kind::J8;
462 case Id::J8_RBracket: return Kind::J8;
463 case Id::J8_LBrace: return Kind::J8;
464 case Id::J8_RBrace: return Kind::J8;
465 case Id::J8_Comma: return Kind::J8;
466 case Id::J8_Colon: return Kind::J8;
467 case Id::J8_Null: return Kind::J8;
468 case Id::J8_Bool: return Kind::J8;
469 case Id::J8_Int: return Kind::J8;
470 case Id::J8_Float: return Kind::J8;
471 case Id::J8_String: return Kind::J8;
472 case Id::J8_Identifier: return Kind::J8;
473 case Id::J8_LParen: return Kind::J8;
474 case Id::J8_RParen: return Kind::J8;
475 case Id::J8_Operator: return Kind::J8;
476 case Id::BoolUnary_z: return Kind::BoolUnary;
477 case Id::BoolUnary_n: return Kind::BoolUnary;
478 case Id::BoolUnary_o: return Kind::BoolUnary;
479 case Id::BoolUnary_t: return Kind::BoolUnary;
480 case Id::BoolUnary_v: return Kind::BoolUnary;
481 case Id::BoolUnary_R: return Kind::BoolUnary;
482 case Id::BoolUnary_a: return Kind::BoolUnary;
483 case Id::BoolUnary_b: return Kind::BoolUnary;
484 case Id::BoolUnary_c: return Kind::BoolUnary;
485 case Id::BoolUnary_d: return Kind::BoolUnary;
486 case Id::BoolUnary_e: return Kind::BoolUnary;
487 case Id::BoolUnary_f: return Kind::BoolUnary;
488 case Id::BoolUnary_g: return Kind::BoolUnary;
489 case Id::BoolUnary_h: return Kind::BoolUnary;
490 case Id::BoolUnary_k: return Kind::BoolUnary;
491 case Id::BoolUnary_L: return Kind::BoolUnary;
492 case Id::BoolUnary_p: return Kind::BoolUnary;
493 case Id::BoolUnary_r: return Kind::BoolUnary;
494 case Id::BoolUnary_s: return Kind::BoolUnary;
495 case Id::BoolUnary_S: return Kind::BoolUnary;
496 case Id::BoolUnary_u: return Kind::BoolUnary;
497 case Id::BoolUnary_w: return Kind::BoolUnary;
498 case Id::BoolUnary_x: return Kind::BoolUnary;
499 case Id::BoolUnary_O: return Kind::BoolUnary;
500 case Id::BoolUnary_G: return Kind::BoolUnary;
501 case Id::BoolUnary_N: return Kind::BoolUnary;
502 case Id::BoolBinary_GlobEqual: return Kind::BoolBinary;
503 case Id::BoolBinary_GlobDEqual: return Kind::BoolBinary;
504 case Id::BoolBinary_GlobNEqual: return Kind::BoolBinary;
505 case Id::BoolBinary_EqualTilde: return Kind::BoolBinary;
506 case Id::BoolBinary_ef: return Kind::BoolBinary;
507 case Id::BoolBinary_nt: return Kind::BoolBinary;
508 case Id::BoolBinary_ot: return Kind::BoolBinary;
509 case Id::BoolBinary_eq: return Kind::BoolBinary;
510 case Id::BoolBinary_ne: return Kind::BoolBinary;
511 case Id::BoolBinary_gt: return Kind::BoolBinary;
512 case Id::BoolBinary_ge: return Kind::BoolBinary;
513 case Id::BoolBinary_lt: return Kind::BoolBinary;
514 case Id::BoolBinary_le: return Kind::BoolBinary;
515 case Id::BoolBinary_Equal: return Kind::BoolBinary;
516 case Id::BoolBinary_DEqual: return Kind::BoolBinary;
517 case Id::BoolBinary_NEqual: return Kind::BoolBinary;
518 }
519 FAIL(kShouldNotGetHere);
520}
521
522types_asdl::opt_group_t OptionGroupNum(BigStr* s) {
523 int length = len(s);
524 if (length == 0) return 0; // consts.NO_INDEX
525
526 const char* data = s->data_;
527 switch (data[0]) {
528 case 'o':
529 if (length == 7 && memcmp("oil:all", data, 7) == 0) return 3;
530 if (length == 11 && memcmp("oil:upgrade", data, 11) == 0) return 2;
531 break;
532 case 's':
533 if (length == 10 && memcmp("strict:all", data, 10) == 0) return 1;
534 break;
535 case 'y':
536 if (length == 7 && memcmp("ysh:all", data, 7) == 0) return 3;
537 if (length == 11 && memcmp("ysh:upgrade", data, 11) == 0) return 2;
538 break;
539 }
540
541 return 0; // consts.NO_INDEX
542}
543
544option_asdl::option_t OptionNum(BigStr* s) {
545 int length = len(s);
546 if (length == 0) return 0; // consts.NO_INDEX
547
548 const char* data = s->data_;
549 switch (data[0]) {
550 case '_':
551 if (length == 18 && memcmp("_allow_command_sub", data, 18) == 0) return 21;
552 if (length == 18 && memcmp("_allow_process_sub", data, 18) == 0) return 22;
553 if (length == 13 && memcmp("_running_trap", data, 13) == 0) return 25;
554 if (length == 12 && memcmp("_running_hay", data, 12) == 0) return 26;
555 if (length == 14 && memcmp("_no_debug_trap", data, 14) == 0) return 27;
556 break;
557 case 'a':
558 if (length == 17 && memcmp("assoc_expand_once", data, 17) == 0) return 71;
559 if (length == 6 && memcmp("autocd", data, 6) == 0) return 72;
560 break;
561 case 'c':
562 if (length == 19 && memcmp("command_sub_errexit", data, 19) == 0) return 49;
563 if (length == 7 && memcmp("cmdhist", data, 7) == 0) return 70;
564 if (length == 11 && memcmp("cdable_vars", data, 11) == 0) return 73;
565 if (length == 7 && memcmp("cdspell", data, 7) == 0) return 74;
566 if (length == 9 && memcmp("checkhash", data, 9) == 0) return 75;
567 if (length == 9 && memcmp("checkjobs", data, 9) == 0) return 76;
568 if (length == 12 && memcmp("checkwinsize", data, 12) == 0) return 77;
569 if (length == 18 && memcmp("complete_fullquote", data, 18) == 0) return 78;
570 break;
571 case 'd':
572 if (length == 13 && memcmp("dynamic_scope", data, 13) == 0) return 23;
573 if (length == 8 && memcmp("dashglob", data, 8) == 0) return 47;
574 if (length == 9 && memcmp("direxpand", data, 9) == 0) return 79;
575 if (length == 8 && memcmp("dirspell", data, 8) == 0) return 80;
576 if (length == 7 && memcmp("dotglob", data, 7) == 0) return 81;
577 break;
578 case 'e':
579 if (length == 7 && memcmp("errexit", data, 7) == 0) return 1;
580 if (length == 5 && memcmp("emacs", data, 5) == 0) return 14;
581 if (length == 7 && memcmp("extglob", data, 7) == 0) return 18;
582 if (length == 17 && memcmp("eval_unsafe_arith", data, 17) == 0) return 20;
583 if (length == 14 && memcmp("expand_aliases", data, 14) == 0) return 48;
584 if (length == 8 && memcmp("execfail", data, 8) == 0) return 82;
585 if (length == 8 && memcmp("extdebug", data, 8) == 0) return 83;
586 if (length == 8 && memcmp("extquote", data, 8) == 0) return 84;
587 break;
588 case 'f':
589 if (length == 8 && memcmp("failglob", data, 8) == 0) return 17;
590 if (length == 13 && memcmp("force_fignore", data, 13) == 0) return 85;
591 break;
592 case 'g':
593 if (length == 15 && memcmp("globasciiranges", data, 15) == 0) return 86;
594 if (length == 8 && memcmp("globstar", data, 8) == 0) return 87;
595 if (length == 10 && memcmp("gnu_errfmt", data, 10) == 0) return 88;
596 break;
597 case 'h':
598 if (length == 7 && memcmp("hashall", data, 7) == 0) return 16;
599 if (length == 10 && memcmp("histappend", data, 10) == 0) return 68;
600 if (length == 12 && memcmp("hostcomplete", data, 12) == 0) return 69;
601 if (length == 10 && memcmp("histreedit", data, 10) == 0) return 89;
602 if (length == 10 && memcmp("histverify", data, 10) == 0) return 90;
603 if (length == 9 && memcmp("huponexit", data, 9) == 0) return 91;
604 break;
605 case 'i':
606 if (length == 15 && memcmp("inherit_errexit", data, 15) == 0) return 4;
607 if (length == 11 && memcmp("interactive", data, 11) == 0) return 15;
608 if (length == 20 && memcmp("interactive_comments", data, 20) == 0) return 92;
609 break;
610 case 'l':
611 if (length == 8 && memcmp("lastpipe", data, 8) == 0) return 66;
612 if (length == 7 && memcmp("lithist", data, 7) == 0) return 93;
613 if (length == 16 && memcmp("localvar_inherit", data, 16) == 0) return 94;
614 if (length == 14 && memcmp("localvar_unset", data, 14) == 0) return 95;
615 if (length == 11 && memcmp("login_shell", data, 11) == 0) return 96;
616 break;
617 case 'm':
618 if (length == 8 && memcmp("mailwarn", data, 8) == 0) return 97;
619 break;
620 case 'n':
621 if (length == 7 && memcmp("nounset", data, 7) == 0) return 2;
622 if (length == 8 && memcmp("nullglob", data, 8) == 0) return 5;
623 if (length == 6 && memcmp("noexec", data, 6) == 0) return 7;
624 if (length == 6 && memcmp("noglob", data, 6) == 0) return 10;
625 if (length == 9 && memcmp("noclobber", data, 9) == 0) return 11;
626 if (length == 11 && memcmp("nocasematch", data, 11) == 0) return 19;
627 if (length == 23 && memcmp("no_empty_cmd_completion", data, 23) == 0) return 98;
628 if (length == 10 && memcmp("nocaseglob", data, 10) == 0) return 99;
629 break;
630 case 'p':
631 if (length == 8 && memcmp("pipefail", data, 8) == 0) return 3;
632 if (length == 5 && memcmp("posix", data, 5) == 0) return 12;
633 if (length == 8 && memcmp("parse_at", data, 8) == 0) return 37;
634 if (length == 10 && memcmp("parse_proc", data, 10) == 0) return 38;
635 if (length == 10 && memcmp("parse_func", data, 10) == 0) return 39;
636 if (length == 11 && memcmp("parse_brace", data, 11) == 0) return 40;
637 if (length == 13 && memcmp("parse_bracket", data, 13) == 0) return 41;
638 if (length == 12 && memcmp("parse_equals", data, 12) == 0) return 42;
639 if (length == 11 && memcmp("parse_paren", data, 11) == 0) return 43;
640 if (length == 16 && memcmp("parse_ysh_string", data, 16) == 0) return 44;
641 if (length == 18 && memcmp("parse_triple_quote", data, 18) == 0) return 45;
642 if (length == 16 && memcmp("process_sub_fail", data, 16) == 0) return 50;
643 if (length == 12 && memcmp("parse_at_all", data, 12) == 0) return 55;
644 if (length == 15 && memcmp("parse_backslash", data, 15) == 0) return 56;
645 if (length == 15 && memcmp("parse_backticks", data, 15) == 0) return 57;
646 if (length == 12 && memcmp("parse_dollar", data, 12) == 0) return 58;
647 if (length == 13 && memcmp("parse_ignored", data, 13) == 0) return 59;
648 if (length == 14 && memcmp("parse_sh_arith", data, 14) == 0) return 60;
649 if (length == 12 && memcmp("parse_dparen", data, 12) == 0) return 61;
650 if (length == 15 && memcmp("parse_bare_word", data, 15) == 0) return 62;
651 if (length == 8 && memcmp("progcomp", data, 8) == 0) return 67;
652 if (length == 14 && memcmp("progcomp_alias", data, 14) == 0) return 100;
653 if (length == 10 && memcmp("promptvars", data, 10) == 0) return 101;
654 break;
655 case 'r':
656 if (length == 15 && memcmp("redefine_module", data, 15) == 0) return 24;
657 if (length == 18 && memcmp("redefine_proc_func", data, 18) == 0) return 54;
658 if (length == 16 && memcmp("restricted_shell", data, 16) == 0) return 102;
659 break;
660 case 's':
661 if (length == 11 && memcmp("strict_argv", data, 11) == 0) return 28;
662 if (length == 12 && memcmp("strict_arith", data, 12) == 0) return 29;
663 if (length == 12 && memcmp("strict_array", data, 12) == 0) return 30;
664 if (length == 19 && memcmp("strict_control_flow", data, 19) == 0) return 31;
665 if (length == 14 && memcmp("strict_errexit", data, 14) == 0) return 32;
666 if (length == 14 && memcmp("strict_nameref", data, 14) == 0) return 33;
667 if (length == 16 && memcmp("strict_word_eval", data, 16) == 0) return 34;
668 if (length == 12 && memcmp("strict_tilde", data, 12) == 0) return 35;
669 if (length == 11 && memcmp("strict_glob", data, 11) == 0) return 36;
670 if (length == 16 && memcmp("simple_word_eval", data, 16) == 0) return 46;
671 if (length == 17 && memcmp("sigpipe_status_ok", data, 17) == 0) return 53;
672 if (length == 11 && memcmp("simple_echo", data, 11) == 0) return 63;
673 if (length == 19 && memcmp("simple_eval_builtin", data, 19) == 0) return 64;
674 if (length == 19 && memcmp("simple_test_builtin", data, 19) == 0) return 65;
675 if (length == 13 && memcmp("shift_verbose", data, 13) == 0) return 103;
676 if (length == 10 && memcmp("sourcepath", data, 10) == 0) return 104;
677 break;
678 case 'v':
679 if (length == 15 && memcmp("verbose_errexit", data, 15) == 0) return 6;
680 if (length == 7 && memcmp("verbose", data, 7) == 0) return 9;
681 if (length == 2 && memcmp("vi", data, 2) == 0) return 13;
682 break;
683 case 'x':
684 if (length == 6 && memcmp("xtrace", data, 6) == 0) return 8;
685 if (length == 11 && memcmp("xtrace_rich", data, 11) == 0) return 51;
686 if (length == 14 && memcmp("xtrace_details", data, 14) == 0) return 52;
687 if (length == 8 && memcmp("xpg_echo", data, 8) == 0) return 105;
688 break;
689 }
690
691 return 0; // consts.NO_INDEX
692}
693
694builtin_t LookupNormalBuiltin(BigStr* s) {
695 int length = len(s);
696 if (length == 0) return 0; // consts.NO_INDEX
697
698 const char* data = s->data_;
699 switch (data[0]) {
700 case '[':
701 if (length == 1 && memcmp("[", data, 1) == 0) return 68;
702 break;
703 case '_':
704 if (length == 5 && memcmp("__cat", data, 5) == 0) return 71;
705 break;
706 case 'a':
707 if (length == 5 && memcmp("alias", data, 5) == 0) return 47;
708 if (length == 6 && memcmp("append", data, 6) == 0) return 50;
709 break;
710 case 'b':
711 if (length == 2 && memcmp("bg", data, 2) == 0) return 34;
712 if (length == 4 && memcmp("bind", data, 4) == 0) return 49;
713 if (length == 10 && memcmp("boolstatus", data, 10) == 0) return 66;
714 break;
715 case 'c':
716 if (length == 2 && memcmp("cd", data, 2) == 0) return 24;
717 if (length == 8 && memcmp("complete", data, 8) == 0) return 36;
718 if (length == 7 && memcmp("compgen", data, 7) == 0) return 37;
719 if (length == 7 && memcmp("compopt", data, 7) == 0) return 38;
720 if (length == 10 && memcmp("compadjust", data, 10) == 0) return 39;
721 if (length == 10 && memcmp("compexport", data, 10) == 0) return 40;
722 if (length == 7 && memcmp("command", data, 7) == 0) return 42;
723 if (length == 3 && memcmp("ctx", data, 3) == 0) return 64;
724 break;
725 case 'd':
726 if (length == 4 && memcmp("dirs", data, 4) == 0) return 27;
727 break;
728 case 'e':
729 if (length == 4 && memcmp("echo", data, 4) == 0) return 20;
730 if (length == 5 && memcmp("error", data, 5) == 0) return 59;
731 break;
732 case 'f':
733 if (length == 5 && memcmp("false", data, 5) == 0) return 17;
734 if (length == 2 && memcmp("fg", data, 2) == 0) return 33;
735 if (length == 4 && memcmp("fork", data, 4) == 0) return 60;
736 if (length == 8 && memcmp("forkwait", data, 8) == 0) return 61;
737 if (length == 5 && memcmp("fopen", data, 5) == 0) return 62;
738 break;
739 case 'g':
740 if (length == 7 && memcmp("getopts", data, 7) == 0) return 41;
741 break;
742 case 'h':
743 if (length == 4 && memcmp("hash", data, 4) == 0) return 44;
744 if (length == 4 && memcmp("help", data, 4) == 0) return 45;
745 if (length == 7 && memcmp("history", data, 7) == 0) return 46;
746 if (length == 3 && memcmp("hay", data, 3) == 0) return 55;
747 if (length == 7 && memcmp("haynode", data, 7) == 0) return 56;
748 break;
749 case 'i':
750 if (length == 7 && memcmp("is-main", data, 7) == 0) return 70;
751 break;
752 case 'j':
753 if (length == 4 && memcmp("jobs", data, 4) == 0) return 32;
754 if (length == 4 && memcmp("json", data, 4) == 0) return 52;
755 if (length == 5 && memcmp("json8", data, 5) == 0) return 53;
756 break;
757 case 'm':
758 if (length == 7 && memcmp("mapfile", data, 7) == 0) return 22;
759 if (length == 6 && memcmp("module", data, 6) == 0) return 57;
760 break;
761 case 'p':
762 if (length == 6 && memcmp("printf", data, 6) == 0) return 21;
763 if (length == 5 && memcmp("pushd", data, 5) == 0) return 25;
764 if (length == 4 && memcmp("popd", data, 4) == 0) return 26;
765 if (length == 3 && memcmp("pwd", data, 3) == 0) return 28;
766 if (length == 2 && memcmp("pp", data, 2) == 0) return 54;
767 if (length == 14 && memcmp("push-registers", data, 14) == 0) return 69;
768 break;
769 case 'r':
770 if (length == 4 && memcmp("read", data, 4) == 0) return 19;
771 if (length == 9 && memcmp("readarray", data, 9) == 0) return 23;
772 if (length == 7 && memcmp("runproc", data, 7) == 0) return 65;
773 break;
774 case 's':
775 if (length == 6 && memcmp("source", data, 6) == 0) return 29;
776 if (length == 5 && memcmp("shopt", data, 5) == 0) return 35;
777 if (length == 5 && memcmp("shvar", data, 5) == 0) return 63;
778 break;
779 case 't':
780 if (length == 4 && memcmp("true", data, 4) == 0) return 16;
781 if (length == 3 && memcmp("try", data, 3) == 0) return 18;
782 if (length == 4 && memcmp("type", data, 4) == 0) return 43;
783 if (length == 4 && memcmp("test", data, 4) == 0) return 67;
784 break;
785 case 'u':
786 if (length == 5 && memcmp("umask", data, 5) == 0) return 30;
787 if (length == 7 && memcmp("unalias", data, 7) == 0) return 48;
788 if (length == 3 && memcmp("use", data, 3) == 0) return 58;
789 break;
790 case 'w':
791 if (length == 4 && memcmp("wait", data, 4) == 0) return 31;
792 if (length == 5 && memcmp("write", data, 5) == 0) return 51;
793 break;
794 }
795
796 return 0; // consts.NO_INDEX
797}
798
799builtin_t LookupAssignBuiltin(BigStr* s) {
800 int length = len(s);
801 if (length == 0) return 0; // consts.NO_INDEX
802
803 const char* data = s->data_;
804 switch (data[0]) {
805 case 'd':
806 if (length == 7 && memcmp("declare", data, 7) == 0) return 13;
807 break;
808 case 'e':
809 if (length == 6 && memcmp("export", data, 6) == 0) return 15;
810 break;
811 case 'l':
812 if (length == 5 && memcmp("local", data, 5) == 0) return 12;
813 break;
814 case 'r':
815 if (length == 8 && memcmp("readonly", data, 8) == 0) return 11;
816 break;
817 case 't':
818 if (length == 7 && memcmp("typeset", data, 7) == 0) return 14;
819 break;
820 }
821
822 return 0; // consts.NO_INDEX
823}
824
825builtin_t LookupSpecialBuiltin(BigStr* s) {
826 int length = len(s);
827 if (length == 0) return 0; // consts.NO_INDEX
828
829 const char* data = s->data_;
830 switch (data[0]) {
831 case '.':
832 if (length == 1 && memcmp(".", data, 1) == 0) return 2;
833 break;
834 case ':':
835 if (length == 1 && memcmp(":", data, 1) == 0) return 1;
836 break;
837 case 'b':
838 if (length == 7 && memcmp("builtin", data, 7) == 0) return 10;
839 break;
840 case 'e':
841 if (length == 4 && memcmp("exec", data, 4) == 0) return 3;
842 if (length == 4 && memcmp("eval", data, 4) == 0) return 4;
843 break;
844 case 's':
845 if (length == 3 && memcmp("set", data, 3) == 0) return 5;
846 if (length == 5 && memcmp("shift", data, 5) == 0) return 6;
847 break;
848 case 't':
849 if (length == 5 && memcmp("times", data, 5) == 0) return 7;
850 if (length == 4 && memcmp("trap", data, 4) == 0) return 8;
851 break;
852 case 'u':
853 if (length == 5 && memcmp("unset", data, 5) == 0) return 9;
854 break;
855 }
856
857 return 0; // consts.NO_INDEX
858}
859
860bool IsControlFlow(BigStr* s) {
861 int length = len(s);
862 if (length == 0) return false;
863
864 const char* data = s->data_;
865 switch (data[0]) {
866 case 'b':
867 if (length == 5 && memcmp("break", data, 5) == 0) return true;
868 break;
869 case 'c':
870 if (length == 8 && memcmp("continue", data, 8) == 0) return true;
871 break;
872 case 'e':
873 if (length == 4 && memcmp("exit", data, 4) == 0) return true;
874 break;
875 case 'r':
876 if (length == 6 && memcmp("return", data, 6) == 0) return true;
877 break;
878 }
879
880 return false;
881}
882
883GLOBAL_STR(kControlFlowName_307, "break");
884GLOBAL_STR(kControlFlowName_308, "continue");
885GLOBAL_STR(kControlFlowName_309, "return");
886GLOBAL_STR(kControlFlowName_310, "exit");
887
888BigStr* ControlFlowName(int i) {
889 switch (i) {
890 case 307:
891 return kControlFlowName_307;
892 break;
893 case 308:
894 return kControlFlowName_308;
895 break;
896 case 309:
897 return kControlFlowName_309;
898 break;
899 case 310:
900 return kControlFlowName_310;
901 break;
902 default:
903 FAIL(kShouldNotGetHere);
904 }
905}
906
907bool IsKeyword(BigStr* s) {
908 int length = len(s);
909 if (length == 0) return false;
910
911 const char* data = s->data_;
912 switch (data[0]) {
913 case '!':
914 if (length == 1 && memcmp("!", data, 1) == 0) return true;
915 break;
916 case '[':
917 if (length == 2 && memcmp("[[", data, 2) == 0) return true;
918 break;
919 case 'c':
920 if (length == 4 && memcmp("case", data, 4) == 0) return true;
921 if (length == 5 && memcmp("const", data, 5) == 0) return true;
922 if (length == 4 && memcmp("call", data, 4) == 0) return true;
923 break;
924 case 'd':
925 if (length == 2 && memcmp("do", data, 2) == 0) return true;
926 if (length == 4 && memcmp("done", data, 4) == 0) return true;
927 break;
928 case 'e':
929 if (length == 4 && memcmp("esac", data, 4) == 0) return true;
930 if (length == 4 && memcmp("else", data, 4) == 0) return true;
931 if (length == 4 && memcmp("elif", data, 4) == 0) return true;
932 break;
933 case 'f':
934 if (length == 3 && memcmp("for", data, 3) == 0) return true;
935 if (length == 2 && memcmp("fi", data, 2) == 0) return true;
936 if (length == 8 && memcmp("function", data, 8) == 0) return true;
937 if (length == 4 && memcmp("func", data, 4) == 0) return true;
938 break;
939 case 'i':
940 if (length == 2 && memcmp("in", data, 2) == 0) return true;
941 if (length == 2 && memcmp("if", data, 2) == 0) return true;
942 break;
943 case 'p':
944 if (length == 4 && memcmp("proc", data, 4) == 0) return true;
945 break;
946 case 's':
947 if (length == 6 && memcmp("setvar", data, 6) == 0) return true;
948 if (length == 9 && memcmp("setglobal", data, 9) == 0) return true;
949 break;
950 case 't':
951 if (length == 4 && memcmp("then", data, 4) == 0) return true;
952 if (length == 4 && memcmp("time", data, 4) == 0) return true;
953 break;
954 case 'u':
955 if (length == 5 && memcmp("until", data, 5) == 0) return true;
956 break;
957 case 'v':
958 if (length == 3 && memcmp("var", data, 3) == 0) return true;
959 break;
960 case 'w':
961 if (length == 5 && memcmp("while", data, 5) == 0) return true;
962 break;
963 case '{':
964 if (length == 1 && memcmp("{", data, 1) == 0) return true;
965 break;
966 }
967
968 return false;
969}
970
971BigStr* LookupCharC(BigStr* c) {
972 assert(len(c) == 1);
973
974 char ch = c->data_[0];
975
976 // TODO-intern: return value
977 switch (ch) {
978 case '\"':
979 return StrFromC("\"", 1);
980 break;
981 case '\'':
982 return StrFromC("\'", 1);
983 break;
984 case '/':
985 return StrFromC("/", 1);
986 break;
987 case '0':
988 return StrFromC("\0", 1);
989 break;
990 case 'E':
991 return StrFromC("\x1b", 1);
992 break;
993 case '\\':
994 return StrFromC("\\", 1);
995 break;
996 case 'a':
997 return StrFromC("\a", 1);
998 break;
999 case 'b':
1000 return StrFromC("\b", 1);
1001 break;
1002 case 'e':
1003 return StrFromC("\x1b", 1);
1004 break;
1005 case 'f':
1006 return StrFromC("\f", 1);
1007 break;
1008 case 'n':
1009 return StrFromC("\n", 1);
1010 break;
1011 case 'r':
1012 return StrFromC("\r", 1);
1013 break;
1014 case 't':
1015 return StrFromC("\t", 1);
1016 break;
1017 case 'v':
1018 return StrFromC("\v", 1);
1019 break;
1020 default:
1021 assert(0);
1022
1023 }
1024}
1025BigStr* LookupCharPrompt(BigStr* c) {
1026 assert(len(c) == 1);
1027
1028 char ch = c->data_[0];
1029
1030 // TODO-intern: return value
1031 switch (ch) {
1032 case '\\':
1033 return StrFromC("\\", 1);
1034 break;
1035 case 'a':
1036 return StrFromC("\a", 1);
1037 break;
1038 case 'e':
1039 return StrFromC("\x1b", 1);
1040 break;
1041 case 'n':
1042 return StrFromC("\n", 1);
1043 break;
1044 case 'r':
1045 return StrFromC("\r", 1);
1046 break;
1047 default:
1048 return nullptr;
1049
1050 }
1051}
1052GLOBAL_STR(kOptionName_1, "errexit");
1053GLOBAL_STR(kOptionName_2, "nounset");
1054GLOBAL_STR(kOptionName_3, "pipefail");
1055GLOBAL_STR(kOptionName_4, "inherit_errexit");
1056GLOBAL_STR(kOptionName_5, "nullglob");
1057GLOBAL_STR(kOptionName_6, "verbose_errexit");
1058GLOBAL_STR(kOptionName_7, "noexec");
1059GLOBAL_STR(kOptionName_8, "xtrace");
1060GLOBAL_STR(kOptionName_9, "verbose");
1061GLOBAL_STR(kOptionName_10, "noglob");
1062GLOBAL_STR(kOptionName_11, "noclobber");
1063GLOBAL_STR(kOptionName_12, "posix");
1064GLOBAL_STR(kOptionName_13, "vi");
1065GLOBAL_STR(kOptionName_14, "emacs");
1066GLOBAL_STR(kOptionName_15, "interactive");
1067GLOBAL_STR(kOptionName_16, "hashall");
1068GLOBAL_STR(kOptionName_17, "failglob");
1069GLOBAL_STR(kOptionName_18, "extglob");
1070GLOBAL_STR(kOptionName_19, "nocasematch");
1071GLOBAL_STR(kOptionName_20, "eval_unsafe_arith");
1072GLOBAL_STR(kOptionName_21, "_allow_command_sub");
1073GLOBAL_STR(kOptionName_22, "_allow_process_sub");
1074GLOBAL_STR(kOptionName_23, "dynamic_scope");
1075GLOBAL_STR(kOptionName_24, "redefine_module");
1076GLOBAL_STR(kOptionName_25, "_running_trap");
1077GLOBAL_STR(kOptionName_26, "_running_hay");
1078GLOBAL_STR(kOptionName_27, "_no_debug_trap");
1079GLOBAL_STR(kOptionName_28, "strict_argv");
1080GLOBAL_STR(kOptionName_29, "strict_arith");
1081GLOBAL_STR(kOptionName_30, "strict_array");
1082GLOBAL_STR(kOptionName_31, "strict_control_flow");
1083GLOBAL_STR(kOptionName_32, "strict_errexit");
1084GLOBAL_STR(kOptionName_33, "strict_nameref");
1085GLOBAL_STR(kOptionName_34, "strict_word_eval");
1086GLOBAL_STR(kOptionName_35, "strict_tilde");
1087GLOBAL_STR(kOptionName_36, "strict_glob");
1088GLOBAL_STR(kOptionName_37, "parse_at");
1089GLOBAL_STR(kOptionName_38, "parse_proc");
1090GLOBAL_STR(kOptionName_39, "parse_func");
1091GLOBAL_STR(kOptionName_40, "parse_brace");
1092GLOBAL_STR(kOptionName_41, "parse_bracket");
1093GLOBAL_STR(kOptionName_42, "parse_equals");
1094GLOBAL_STR(kOptionName_43, "parse_paren");
1095GLOBAL_STR(kOptionName_44, "parse_ysh_string");
1096GLOBAL_STR(kOptionName_45, "parse_triple_quote");
1097GLOBAL_STR(kOptionName_46, "simple_word_eval");
1098GLOBAL_STR(kOptionName_47, "dashglob");
1099GLOBAL_STR(kOptionName_48, "expand_aliases");
1100GLOBAL_STR(kOptionName_49, "command_sub_errexit");
1101GLOBAL_STR(kOptionName_50, "process_sub_fail");
1102GLOBAL_STR(kOptionName_51, "xtrace_rich");
1103GLOBAL_STR(kOptionName_52, "xtrace_details");
1104GLOBAL_STR(kOptionName_53, "sigpipe_status_ok");
1105GLOBAL_STR(kOptionName_54, "redefine_proc_func");
1106GLOBAL_STR(kOptionName_55, "parse_at_all");
1107GLOBAL_STR(kOptionName_56, "parse_backslash");
1108GLOBAL_STR(kOptionName_57, "parse_backticks");
1109GLOBAL_STR(kOptionName_58, "parse_dollar");
1110GLOBAL_STR(kOptionName_59, "parse_ignored");
1111GLOBAL_STR(kOptionName_60, "parse_sh_arith");
1112GLOBAL_STR(kOptionName_61, "parse_dparen");
1113GLOBAL_STR(kOptionName_62, "parse_bare_word");
1114GLOBAL_STR(kOptionName_63, "simple_echo");
1115GLOBAL_STR(kOptionName_64, "simple_eval_builtin");
1116GLOBAL_STR(kOptionName_65, "simple_test_builtin");
1117GLOBAL_STR(kOptionName_66, "lastpipe");
1118GLOBAL_STR(kOptionName_67, "progcomp");
1119GLOBAL_STR(kOptionName_68, "histappend");
1120GLOBAL_STR(kOptionName_69, "hostcomplete");
1121GLOBAL_STR(kOptionName_70, "cmdhist");
1122GLOBAL_STR(kOptionName_71, "assoc_expand_once");
1123GLOBAL_STR(kOptionName_72, "autocd");
1124GLOBAL_STR(kOptionName_73, "cdable_vars");
1125GLOBAL_STR(kOptionName_74, "cdspell");
1126GLOBAL_STR(kOptionName_75, "checkhash");
1127GLOBAL_STR(kOptionName_76, "checkjobs");
1128GLOBAL_STR(kOptionName_77, "checkwinsize");
1129GLOBAL_STR(kOptionName_78, "complete_fullquote");
1130GLOBAL_STR(kOptionName_79, "direxpand");
1131GLOBAL_STR(kOptionName_80, "dirspell");
1132GLOBAL_STR(kOptionName_81, "dotglob");
1133GLOBAL_STR(kOptionName_82, "execfail");
1134GLOBAL_STR(kOptionName_83, "extdebug");
1135GLOBAL_STR(kOptionName_84, "extquote");
1136GLOBAL_STR(kOptionName_85, "force_fignore");
1137GLOBAL_STR(kOptionName_86, "globasciiranges");
1138GLOBAL_STR(kOptionName_87, "globstar");
1139GLOBAL_STR(kOptionName_88, "gnu_errfmt");
1140GLOBAL_STR(kOptionName_89, "histreedit");
1141GLOBAL_STR(kOptionName_90, "histverify");
1142GLOBAL_STR(kOptionName_91, "huponexit");
1143GLOBAL_STR(kOptionName_92, "interactive_comments");
1144GLOBAL_STR(kOptionName_93, "lithist");
1145GLOBAL_STR(kOptionName_94, "localvar_inherit");
1146GLOBAL_STR(kOptionName_95, "localvar_unset");
1147GLOBAL_STR(kOptionName_96, "login_shell");
1148GLOBAL_STR(kOptionName_97, "mailwarn");
1149GLOBAL_STR(kOptionName_98, "no_empty_cmd_completion");
1150GLOBAL_STR(kOptionName_99, "nocaseglob");
1151GLOBAL_STR(kOptionName_100, "progcomp_alias");
1152GLOBAL_STR(kOptionName_101, "promptvars");
1153GLOBAL_STR(kOptionName_102, "restricted_shell");
1154GLOBAL_STR(kOptionName_103, "shift_verbose");
1155GLOBAL_STR(kOptionName_104, "sourcepath");
1156GLOBAL_STR(kOptionName_105, "xpg_echo");
1157
1158BigStr* OptionName(int i) {
1159 switch (i) {
1160 case 1:
1161 return kOptionName_1;
1162 break;
1163 case 2:
1164 return kOptionName_2;
1165 break;
1166 case 3:
1167 return kOptionName_3;
1168 break;
1169 case 4:
1170 return kOptionName_4;
1171 break;
1172 case 5:
1173 return kOptionName_5;
1174 break;
1175 case 6:
1176 return kOptionName_6;
1177 break;
1178 case 7:
1179 return kOptionName_7;
1180 break;
1181 case 8:
1182 return kOptionName_8;
1183 break;
1184 case 9:
1185 return kOptionName_9;
1186 break;
1187 case 10:
1188 return kOptionName_10;
1189 break;
1190 case 11:
1191 return kOptionName_11;
1192 break;
1193 case 12:
1194 return kOptionName_12;
1195 break;
1196 case 13:
1197 return kOptionName_13;
1198 break;
1199 case 14:
1200 return kOptionName_14;
1201 break;
1202 case 15:
1203 return kOptionName_15;
1204 break;
1205 case 16:
1206 return kOptionName_16;
1207 break;
1208 case 17:
1209 return kOptionName_17;
1210 break;
1211 case 18:
1212 return kOptionName_18;
1213 break;
1214 case 19:
1215 return kOptionName_19;
1216 break;
1217 case 20:
1218 return kOptionName_20;
1219 break;
1220 case 21:
1221 return kOptionName_21;
1222 break;
1223 case 22:
1224 return kOptionName_22;
1225 break;
1226 case 23:
1227 return kOptionName_23;
1228 break;
1229 case 24:
1230 return kOptionName_24;
1231 break;
1232 case 25:
1233 return kOptionName_25;
1234 break;
1235 case 26:
1236 return kOptionName_26;
1237 break;
1238 case 27:
1239 return kOptionName_27;
1240 break;
1241 case 28:
1242 return kOptionName_28;
1243 break;
1244 case 29:
1245 return kOptionName_29;
1246 break;
1247 case 30:
1248 return kOptionName_30;
1249 break;
1250 case 31:
1251 return kOptionName_31;
1252 break;
1253 case 32:
1254 return kOptionName_32;
1255 break;
1256 case 33:
1257 return kOptionName_33;
1258 break;
1259 case 34:
1260 return kOptionName_34;
1261 break;
1262 case 35:
1263 return kOptionName_35;
1264 break;
1265 case 36:
1266 return kOptionName_36;
1267 break;
1268 case 37:
1269 return kOptionName_37;
1270 break;
1271 case 38:
1272 return kOptionName_38;
1273 break;
1274 case 39:
1275 return kOptionName_39;
1276 break;
1277 case 40:
1278 return kOptionName_40;
1279 break;
1280 case 41:
1281 return kOptionName_41;
1282 break;
1283 case 42:
1284 return kOptionName_42;
1285 break;
1286 case 43:
1287 return kOptionName_43;
1288 break;
1289 case 44:
1290 return kOptionName_44;
1291 break;
1292 case 45:
1293 return kOptionName_45;
1294 break;
1295 case 46:
1296 return kOptionName_46;
1297 break;
1298 case 47:
1299 return kOptionName_47;
1300 break;
1301 case 48:
1302 return kOptionName_48;
1303 break;
1304 case 49:
1305 return kOptionName_49;
1306 break;
1307 case 50:
1308 return kOptionName_50;
1309 break;
1310 case 51:
1311 return kOptionName_51;
1312 break;
1313 case 52:
1314 return kOptionName_52;
1315 break;
1316 case 53:
1317 return kOptionName_53;
1318 break;
1319 case 54:
1320 return kOptionName_54;
1321 break;
1322 case 55:
1323 return kOptionName_55;
1324 break;
1325 case 56:
1326 return kOptionName_56;
1327 break;
1328 case 57:
1329 return kOptionName_57;
1330 break;
1331 case 58:
1332 return kOptionName_58;
1333 break;
1334 case 59:
1335 return kOptionName_59;
1336 break;
1337 case 60:
1338 return kOptionName_60;
1339 break;
1340 case 61:
1341 return kOptionName_61;
1342 break;
1343 case 62:
1344 return kOptionName_62;
1345 break;
1346 case 63:
1347 return kOptionName_63;
1348 break;
1349 case 64:
1350 return kOptionName_64;
1351 break;
1352 case 65:
1353 return kOptionName_65;
1354 break;
1355 case 66:
1356 return kOptionName_66;
1357 break;
1358 case 67:
1359 return kOptionName_67;
1360 break;
1361 case 68:
1362 return kOptionName_68;
1363 break;
1364 case 69:
1365 return kOptionName_69;
1366 break;
1367 case 70:
1368 return kOptionName_70;
1369 break;
1370 case 71:
1371 return kOptionName_71;
1372 break;
1373 case 72:
1374 return kOptionName_72;
1375 break;
1376 case 73:
1377 return kOptionName_73;
1378 break;
1379 case 74:
1380 return kOptionName_74;
1381 break;
1382 case 75:
1383 return kOptionName_75;
1384 break;
1385 case 76:
1386 return kOptionName_76;
1387 break;
1388 case 77:
1389 return kOptionName_77;
1390 break;
1391 case 78:
1392 return kOptionName_78;
1393 break;
1394 case 79:
1395 return kOptionName_79;
1396 break;
1397 case 80:
1398 return kOptionName_80;
1399 break;
1400 case 81:
1401 return kOptionName_81;
1402 break;
1403 case 82:
1404 return kOptionName_82;
1405 break;
1406 case 83:
1407 return kOptionName_83;
1408 break;
1409 case 84:
1410 return kOptionName_84;
1411 break;
1412 case 85:
1413 return kOptionName_85;
1414 break;
1415 case 86:
1416 return kOptionName_86;
1417 break;
1418 case 87:
1419 return kOptionName_87;
1420 break;
1421 case 88:
1422 return kOptionName_88;
1423 break;
1424 case 89:
1425 return kOptionName_89;
1426 break;
1427 case 90:
1428 return kOptionName_90;
1429 break;
1430 case 91:
1431 return kOptionName_91;
1432 break;
1433 case 92:
1434 return kOptionName_92;
1435 break;
1436 case 93:
1437 return kOptionName_93;
1438 break;
1439 case 94:
1440 return kOptionName_94;
1441 break;
1442 case 95:
1443 return kOptionName_95;
1444 break;
1445 case 96:
1446 return kOptionName_96;
1447 break;
1448 case 97:
1449 return kOptionName_97;
1450 break;
1451 case 98:
1452 return kOptionName_98;
1453 break;
1454 case 99:
1455 return kOptionName_99;
1456 break;
1457 case 100:
1458 return kOptionName_100;
1459 break;
1460 case 101:
1461 return kOptionName_101;
1462 break;
1463 case 102:
1464 return kOptionName_102;
1465 break;
1466 case 103:
1467 return kOptionName_103;
1468 break;
1469 case 104:
1470 return kOptionName_104;
1471 break;
1472 case 105:
1473 return kOptionName_105;
1474 break;
1475 default:
1476 FAIL(kShouldNotGetHere);
1477 }
1478}
1479
1480int _IFS_EDGE[8][6] = {
1481 { -1, -1, -1, -1, -1, -1 },
1482 { -1, -1, -1, -1, -1, -1 },
1483 { -1, (1<<16)|5, (4<<16)|3, (6<<16)|5, (7<<16)|5, (8<<16)|5 },
1484 { -1, (3<<16)|5, (4<<16)|5, (6<<16)|2, (7<<16)|2, (8<<16)|5 },
1485 { -1, (5<<16)|5, (4<<16)|3, (6<<16)|2, (6<<16)|2, (8<<16)|2 },
1486 { -1, (5<<16)|5, (4<<16)|3, (6<<16)|2, (7<<16)|2, (8<<16)|2 },
1487 { -1, (3<<16)|1, (4<<16)|1, (6<<16)|5, (7<<16)|1, (8<<16)|1 },
1488 { -1, (6<<16)|4, (6<<16)|4, (6<<16)|4, (6<<16)|4, (8<<16)|4 },
1489
1490};
1491
1492// Note: all of these are integers, e.g. state_i, emit_i, char_kind_i
1493using runtime_asdl::state_t;
1494using runtime_asdl::emit_t;
1495using runtime_asdl::char_kind_t;
1496
1497Tuple2<state_t, emit_t> IfsEdge(state_t state, runtime_asdl::char_kind_t ch) {
1498 int cell = _IFS_EDGE[state][ch];
1499 state_t new_state = cell >> 16;
1500 emit_t emit = cell & 0xFFFF;
1501 return Tuple2<state_t, emit_t>(new_state, emit);
1502}
1503
1504GLOBAL_STR(kBUILTIN_NAMES_0, ":");
1505GLOBAL_STR(kBUILTIN_NAMES_1, ".");
1506GLOBAL_STR(kBUILTIN_NAMES_2, "exec");
1507GLOBAL_STR(kBUILTIN_NAMES_3, "eval");
1508GLOBAL_STR(kBUILTIN_NAMES_4, "set");
1509GLOBAL_STR(kBUILTIN_NAMES_5, "shift");
1510GLOBAL_STR(kBUILTIN_NAMES_6, "times");
1511GLOBAL_STR(kBUILTIN_NAMES_7, "trap");
1512GLOBAL_STR(kBUILTIN_NAMES_8, "unset");
1513GLOBAL_STR(kBUILTIN_NAMES_9, "builtin");
1514GLOBAL_STR(kBUILTIN_NAMES_10, "readonly");
1515GLOBAL_STR(kBUILTIN_NAMES_11, "local");
1516GLOBAL_STR(kBUILTIN_NAMES_12, "declare");
1517GLOBAL_STR(kBUILTIN_NAMES_13, "typeset");
1518GLOBAL_STR(kBUILTIN_NAMES_14, "export");
1519GLOBAL_STR(kBUILTIN_NAMES_15, "true");
1520GLOBAL_STR(kBUILTIN_NAMES_16, "false");
1521GLOBAL_STR(kBUILTIN_NAMES_17, "try");
1522GLOBAL_STR(kBUILTIN_NAMES_18, "read");
1523GLOBAL_STR(kBUILTIN_NAMES_19, "echo");
1524GLOBAL_STR(kBUILTIN_NAMES_20, "printf");
1525GLOBAL_STR(kBUILTIN_NAMES_21, "mapfile");
1526GLOBAL_STR(kBUILTIN_NAMES_22, "readarray");
1527GLOBAL_STR(kBUILTIN_NAMES_23, "cd");
1528GLOBAL_STR(kBUILTIN_NAMES_24, "pushd");
1529GLOBAL_STR(kBUILTIN_NAMES_25, "popd");
1530GLOBAL_STR(kBUILTIN_NAMES_26, "dirs");
1531GLOBAL_STR(kBUILTIN_NAMES_27, "pwd");
1532GLOBAL_STR(kBUILTIN_NAMES_28, "source");
1533GLOBAL_STR(kBUILTIN_NAMES_29, "umask");
1534GLOBAL_STR(kBUILTIN_NAMES_30, "wait");
1535GLOBAL_STR(kBUILTIN_NAMES_31, "jobs");
1536GLOBAL_STR(kBUILTIN_NAMES_32, "fg");
1537GLOBAL_STR(kBUILTIN_NAMES_33, "bg");
1538GLOBAL_STR(kBUILTIN_NAMES_34, "shopt");
1539GLOBAL_STR(kBUILTIN_NAMES_35, "complete");
1540GLOBAL_STR(kBUILTIN_NAMES_36, "compgen");
1541GLOBAL_STR(kBUILTIN_NAMES_37, "compopt");
1542GLOBAL_STR(kBUILTIN_NAMES_38, "compadjust");
1543GLOBAL_STR(kBUILTIN_NAMES_39, "compexport");
1544GLOBAL_STR(kBUILTIN_NAMES_40, "getopts");
1545GLOBAL_STR(kBUILTIN_NAMES_41, "command");
1546GLOBAL_STR(kBUILTIN_NAMES_42, "type");
1547GLOBAL_STR(kBUILTIN_NAMES_43, "hash");
1548GLOBAL_STR(kBUILTIN_NAMES_44, "help");
1549GLOBAL_STR(kBUILTIN_NAMES_45, "history");
1550GLOBAL_STR(kBUILTIN_NAMES_46, "alias");
1551GLOBAL_STR(kBUILTIN_NAMES_47, "unalias");
1552GLOBAL_STR(kBUILTIN_NAMES_48, "bind");
1553GLOBAL_STR(kBUILTIN_NAMES_49, "append");
1554GLOBAL_STR(kBUILTIN_NAMES_50, "write");
1555GLOBAL_STR(kBUILTIN_NAMES_51, "json");
1556GLOBAL_STR(kBUILTIN_NAMES_52, "json8");
1557GLOBAL_STR(kBUILTIN_NAMES_53, "pp");
1558GLOBAL_STR(kBUILTIN_NAMES_54, "hay");
1559GLOBAL_STR(kBUILTIN_NAMES_55, "haynode");
1560GLOBAL_STR(kBUILTIN_NAMES_56, "module");
1561GLOBAL_STR(kBUILTIN_NAMES_57, "use");
1562GLOBAL_STR(kBUILTIN_NAMES_58, "error");
1563GLOBAL_STR(kBUILTIN_NAMES_59, "fork");
1564GLOBAL_STR(kBUILTIN_NAMES_60, "forkwait");
1565GLOBAL_STR(kBUILTIN_NAMES_61, "fopen");
1566GLOBAL_STR(kBUILTIN_NAMES_62, "shvar");
1567GLOBAL_STR(kBUILTIN_NAMES_63, "ctx");
1568GLOBAL_STR(kBUILTIN_NAMES_64, "runproc");
1569GLOBAL_STR(kBUILTIN_NAMES_65, "boolstatus");
1570GLOBAL_STR(kBUILTIN_NAMES_66, "test");
1571GLOBAL_STR(kBUILTIN_NAMES_67, "[");
1572GLOBAL_STR(kBUILTIN_NAMES_68, "push-registers");
1573GLOBAL_STR(kBUILTIN_NAMES_69, "is-main");
1574GLOBAL_STR(kBUILTIN_NAMES_70, "__cat");
1575GLOBAL_LIST(BUILTIN_NAMES, BigStr*, 71, {kBUILTIN_NAMES_0 COMMA kBUILTIN_NAMES_1 COMMA kBUILTIN_NAMES_2 COMMA kBUILTIN_NAMES_3 COMMA kBUILTIN_NAMES_4 COMMA kBUILTIN_NAMES_5 COMMA kBUILTIN_NAMES_6 COMMA kBUILTIN_NAMES_7 COMMA kBUILTIN_NAMES_8 COMMA kBUILTIN_NAMES_9 COMMA kBUILTIN_NAMES_10 COMMA kBUILTIN_NAMES_11 COMMA kBUILTIN_NAMES_12 COMMA kBUILTIN_NAMES_13 COMMA kBUILTIN_NAMES_14 COMMA kBUILTIN_NAMES_15 COMMA kBUILTIN_NAMES_16 COMMA kBUILTIN_NAMES_17 COMMA kBUILTIN_NAMES_18 COMMA kBUILTIN_NAMES_19 COMMA kBUILTIN_NAMES_20 COMMA kBUILTIN_NAMES_21 COMMA kBUILTIN_NAMES_22 COMMA kBUILTIN_NAMES_23 COMMA kBUILTIN_NAMES_24 COMMA kBUILTIN_NAMES_25 COMMA kBUILTIN_NAMES_26 COMMA kBUILTIN_NAMES_27 COMMA kBUILTIN_NAMES_28 COMMA kBUILTIN_NAMES_29 COMMA kBUILTIN_NAMES_30 COMMA kBUILTIN_NAMES_31 COMMA kBUILTIN_NAMES_32 COMMA kBUILTIN_NAMES_33 COMMA kBUILTIN_NAMES_34 COMMA kBUILTIN_NAMES_35 COMMA kBUILTIN_NAMES_36 COMMA kBUILTIN_NAMES_37 COMMA kBUILTIN_NAMES_38 COMMA kBUILTIN_NAMES_39 COMMA kBUILTIN_NAMES_40 COMMA kBUILTIN_NAMES_41 COMMA kBUILTIN_NAMES_42 COMMA kBUILTIN_NAMES_43 COMMA kBUILTIN_NAMES_44 COMMA kBUILTIN_NAMES_45 COMMA kBUILTIN_NAMES_46 COMMA kBUILTIN_NAMES_47 COMMA kBUILTIN_NAMES_48 COMMA kBUILTIN_NAMES_49 COMMA kBUILTIN_NAMES_50 COMMA kBUILTIN_NAMES_51 COMMA kBUILTIN_NAMES_52 COMMA kBUILTIN_NAMES_53 COMMA kBUILTIN_NAMES_54 COMMA kBUILTIN_NAMES_55 COMMA kBUILTIN_NAMES_56 COMMA kBUILTIN_NAMES_57 COMMA kBUILTIN_NAMES_58 COMMA kBUILTIN_NAMES_59 COMMA kBUILTIN_NAMES_60 COMMA kBUILTIN_NAMES_61 COMMA kBUILTIN_NAMES_62 COMMA kBUILTIN_NAMES_63 COMMA kBUILTIN_NAMES_64 COMMA kBUILTIN_NAMES_65 COMMA kBUILTIN_NAMES_66 COMMA kBUILTIN_NAMES_67 COMMA kBUILTIN_NAMES_68 COMMA kBUILTIN_NAMES_69 COMMA kBUILTIN_NAMES_70});
1576
1577GLOBAL_STR(kOSH_KEYWORD_NAMES_0, "[[");
1578GLOBAL_STR(kOSH_KEYWORD_NAMES_1, "!");
1579GLOBAL_STR(kOSH_KEYWORD_NAMES_2, "for");
1580GLOBAL_STR(kOSH_KEYWORD_NAMES_3, "while");
1581GLOBAL_STR(kOSH_KEYWORD_NAMES_4, "until");
1582GLOBAL_STR(kOSH_KEYWORD_NAMES_5, "do");
1583GLOBAL_STR(kOSH_KEYWORD_NAMES_6, "done");
1584GLOBAL_STR(kOSH_KEYWORD_NAMES_7, "in");
1585GLOBAL_STR(kOSH_KEYWORD_NAMES_8, "case");
1586GLOBAL_STR(kOSH_KEYWORD_NAMES_9, "esac");
1587GLOBAL_STR(kOSH_KEYWORD_NAMES_10, "if");
1588GLOBAL_STR(kOSH_KEYWORD_NAMES_11, "fi");
1589GLOBAL_STR(kOSH_KEYWORD_NAMES_12, "then");
1590GLOBAL_STR(kOSH_KEYWORD_NAMES_13, "else");
1591GLOBAL_STR(kOSH_KEYWORD_NAMES_14, "elif");
1592GLOBAL_STR(kOSH_KEYWORD_NAMES_15, "function");
1593GLOBAL_STR(kOSH_KEYWORD_NAMES_16, "time");
1594GLOBAL_STR(kOSH_KEYWORD_NAMES_17, "const");
1595GLOBAL_STR(kOSH_KEYWORD_NAMES_18, "var");
1596GLOBAL_STR(kOSH_KEYWORD_NAMES_19, "setvar");
1597GLOBAL_STR(kOSH_KEYWORD_NAMES_20, "setglobal");
1598GLOBAL_STR(kOSH_KEYWORD_NAMES_21, "call");
1599GLOBAL_STR(kOSH_KEYWORD_NAMES_22, "proc");
1600GLOBAL_STR(kOSH_KEYWORD_NAMES_23, "func");
1601GLOBAL_STR(kOSH_KEYWORD_NAMES_24, "{");
1602GLOBAL_LIST(OSH_KEYWORD_NAMES, BigStr*, 25, {kOSH_KEYWORD_NAMES_0 COMMA kOSH_KEYWORD_NAMES_1 COMMA kOSH_KEYWORD_NAMES_2 COMMA kOSH_KEYWORD_NAMES_3 COMMA kOSH_KEYWORD_NAMES_4 COMMA kOSH_KEYWORD_NAMES_5 COMMA kOSH_KEYWORD_NAMES_6 COMMA kOSH_KEYWORD_NAMES_7 COMMA kOSH_KEYWORD_NAMES_8 COMMA kOSH_KEYWORD_NAMES_9 COMMA kOSH_KEYWORD_NAMES_10 COMMA kOSH_KEYWORD_NAMES_11 COMMA kOSH_KEYWORD_NAMES_12 COMMA kOSH_KEYWORD_NAMES_13 COMMA kOSH_KEYWORD_NAMES_14 COMMA kOSH_KEYWORD_NAMES_15 COMMA kOSH_KEYWORD_NAMES_16 COMMA kOSH_KEYWORD_NAMES_17 COMMA kOSH_KEYWORD_NAMES_18 COMMA kOSH_KEYWORD_NAMES_19 COMMA kOSH_KEYWORD_NAMES_20 COMMA kOSH_KEYWORD_NAMES_21 COMMA kOSH_KEYWORD_NAMES_22 COMMA kOSH_KEYWORD_NAMES_23 COMMA kOSH_KEYWORD_NAMES_24});
1603
1604GLOBAL_STR(kSET_OPTION_NAMES_0, "emacs");
1605GLOBAL_STR(kSET_OPTION_NAMES_1, "errexit");
1606GLOBAL_STR(kSET_OPTION_NAMES_2, "hashall");
1607GLOBAL_STR(kSET_OPTION_NAMES_3, "noclobber");
1608GLOBAL_STR(kSET_OPTION_NAMES_4, "noexec");
1609GLOBAL_STR(kSET_OPTION_NAMES_5, "noglob");
1610GLOBAL_STR(kSET_OPTION_NAMES_6, "nounset");
1611GLOBAL_STR(kSET_OPTION_NAMES_7, "pipefail");
1612GLOBAL_STR(kSET_OPTION_NAMES_8, "posix");
1613GLOBAL_STR(kSET_OPTION_NAMES_9, "verbose");
1614GLOBAL_STR(kSET_OPTION_NAMES_10, "vi");
1615GLOBAL_STR(kSET_OPTION_NAMES_11, "xtrace");
1616GLOBAL_LIST(SET_OPTION_NAMES, BigStr*, 12, {kSET_OPTION_NAMES_0 COMMA kSET_OPTION_NAMES_1 COMMA kSET_OPTION_NAMES_2 COMMA kSET_OPTION_NAMES_3 COMMA kSET_OPTION_NAMES_4 COMMA kSET_OPTION_NAMES_5 COMMA kSET_OPTION_NAMES_6 COMMA kSET_OPTION_NAMES_7 COMMA kSET_OPTION_NAMES_8 COMMA kSET_OPTION_NAMES_9 COMMA kSET_OPTION_NAMES_10 COMMA kSET_OPTION_NAMES_11});
1617
1618GLOBAL_STR(kSHOPT_OPTION_NAMES_0, "_allow_command_sub");
1619GLOBAL_STR(kSHOPT_OPTION_NAMES_1, "_allow_process_sub");
1620GLOBAL_STR(kSHOPT_OPTION_NAMES_2, "_no_debug_trap");
1621GLOBAL_STR(kSHOPT_OPTION_NAMES_3, "_running_hay");
1622GLOBAL_STR(kSHOPT_OPTION_NAMES_4, "_running_trap");
1623GLOBAL_STR(kSHOPT_OPTION_NAMES_5, "assoc_expand_once");
1624GLOBAL_STR(kSHOPT_OPTION_NAMES_6, "autocd");
1625GLOBAL_STR(kSHOPT_OPTION_NAMES_7, "cdable_vars");
1626GLOBAL_STR(kSHOPT_OPTION_NAMES_8, "cdspell");
1627GLOBAL_STR(kSHOPT_OPTION_NAMES_9, "checkhash");
1628GLOBAL_STR(kSHOPT_OPTION_NAMES_10, "checkjobs");
1629GLOBAL_STR(kSHOPT_OPTION_NAMES_11, "checkwinsize");
1630GLOBAL_STR(kSHOPT_OPTION_NAMES_12, "cmdhist");
1631GLOBAL_STR(kSHOPT_OPTION_NAMES_13, "command_sub_errexit");
1632GLOBAL_STR(kSHOPT_OPTION_NAMES_14, "complete_fullquote");
1633GLOBAL_STR(kSHOPT_OPTION_NAMES_15, "dashglob");
1634GLOBAL_STR(kSHOPT_OPTION_NAMES_16, "direxpand");
1635GLOBAL_STR(kSHOPT_OPTION_NAMES_17, "dirspell");
1636GLOBAL_STR(kSHOPT_OPTION_NAMES_18, "dotglob");
1637GLOBAL_STR(kSHOPT_OPTION_NAMES_19, "dynamic_scope");
1638GLOBAL_STR(kSHOPT_OPTION_NAMES_20, "eval_unsafe_arith");
1639GLOBAL_STR(kSHOPT_OPTION_NAMES_21, "execfail");
1640GLOBAL_STR(kSHOPT_OPTION_NAMES_22, "expand_aliases");
1641GLOBAL_STR(kSHOPT_OPTION_NAMES_23, "extdebug");
1642GLOBAL_STR(kSHOPT_OPTION_NAMES_24, "extglob");
1643GLOBAL_STR(kSHOPT_OPTION_NAMES_25, "extquote");
1644GLOBAL_STR(kSHOPT_OPTION_NAMES_26, "failglob");
1645GLOBAL_STR(kSHOPT_OPTION_NAMES_27, "force_fignore");
1646GLOBAL_STR(kSHOPT_OPTION_NAMES_28, "globasciiranges");
1647GLOBAL_STR(kSHOPT_OPTION_NAMES_29, "globstar");
1648GLOBAL_STR(kSHOPT_OPTION_NAMES_30, "gnu_errfmt");
1649GLOBAL_STR(kSHOPT_OPTION_NAMES_31, "histappend");
1650GLOBAL_STR(kSHOPT_OPTION_NAMES_32, "histreedit");
1651GLOBAL_STR(kSHOPT_OPTION_NAMES_33, "histverify");
1652GLOBAL_STR(kSHOPT_OPTION_NAMES_34, "hostcomplete");
1653GLOBAL_STR(kSHOPT_OPTION_NAMES_35, "huponexit");
1654GLOBAL_STR(kSHOPT_OPTION_NAMES_36, "inherit_errexit");
1655GLOBAL_STR(kSHOPT_OPTION_NAMES_37, "interactive_comments");
1656GLOBAL_STR(kSHOPT_OPTION_NAMES_38, "lastpipe");
1657GLOBAL_STR(kSHOPT_OPTION_NAMES_39, "lithist");
1658GLOBAL_STR(kSHOPT_OPTION_NAMES_40, "localvar_inherit");
1659GLOBAL_STR(kSHOPT_OPTION_NAMES_41, "localvar_unset");
1660GLOBAL_STR(kSHOPT_OPTION_NAMES_42, "login_shell");
1661GLOBAL_STR(kSHOPT_OPTION_NAMES_43, "mailwarn");
1662GLOBAL_STR(kSHOPT_OPTION_NAMES_44, "no_empty_cmd_completion");
1663GLOBAL_STR(kSHOPT_OPTION_NAMES_45, "nocaseglob");
1664GLOBAL_STR(kSHOPT_OPTION_NAMES_46, "nocasematch");
1665GLOBAL_STR(kSHOPT_OPTION_NAMES_47, "nullglob");
1666GLOBAL_STR(kSHOPT_OPTION_NAMES_48, "parse_at");
1667GLOBAL_STR(kSHOPT_OPTION_NAMES_49, "parse_at_all");
1668GLOBAL_STR(kSHOPT_OPTION_NAMES_50, "parse_backslash");
1669GLOBAL_STR(kSHOPT_OPTION_NAMES_51, "parse_backticks");
1670GLOBAL_STR(kSHOPT_OPTION_NAMES_52, "parse_bare_word");
1671GLOBAL_STR(kSHOPT_OPTION_NAMES_53, "parse_brace");
1672GLOBAL_STR(kSHOPT_OPTION_NAMES_54, "parse_bracket");
1673GLOBAL_STR(kSHOPT_OPTION_NAMES_55, "parse_dollar");
1674GLOBAL_STR(kSHOPT_OPTION_NAMES_56, "parse_dparen");
1675GLOBAL_STR(kSHOPT_OPTION_NAMES_57, "parse_equals");
1676GLOBAL_STR(kSHOPT_OPTION_NAMES_58, "parse_func");
1677GLOBAL_STR(kSHOPT_OPTION_NAMES_59, "parse_ignored");
1678GLOBAL_STR(kSHOPT_OPTION_NAMES_60, "parse_paren");
1679GLOBAL_STR(kSHOPT_OPTION_NAMES_61, "parse_proc");
1680GLOBAL_STR(kSHOPT_OPTION_NAMES_62, "parse_sh_arith");
1681GLOBAL_STR(kSHOPT_OPTION_NAMES_63, "parse_triple_quote");
1682GLOBAL_STR(kSHOPT_OPTION_NAMES_64, "parse_ysh_string");
1683GLOBAL_STR(kSHOPT_OPTION_NAMES_65, "process_sub_fail");
1684GLOBAL_STR(kSHOPT_OPTION_NAMES_66, "progcomp");
1685GLOBAL_STR(kSHOPT_OPTION_NAMES_67, "progcomp_alias");
1686GLOBAL_STR(kSHOPT_OPTION_NAMES_68, "promptvars");
1687GLOBAL_STR(kSHOPT_OPTION_NAMES_69, "redefine_module");
1688GLOBAL_STR(kSHOPT_OPTION_NAMES_70, "redefine_proc_func");
1689GLOBAL_STR(kSHOPT_OPTION_NAMES_71, "restricted_shell");
1690GLOBAL_STR(kSHOPT_OPTION_NAMES_72, "shift_verbose");
1691GLOBAL_STR(kSHOPT_OPTION_NAMES_73, "sigpipe_status_ok");
1692GLOBAL_STR(kSHOPT_OPTION_NAMES_74, "simple_echo");
1693GLOBAL_STR(kSHOPT_OPTION_NAMES_75, "simple_eval_builtin");
1694GLOBAL_STR(kSHOPT_OPTION_NAMES_76, "simple_test_builtin");
1695GLOBAL_STR(kSHOPT_OPTION_NAMES_77, "simple_word_eval");
1696GLOBAL_STR(kSHOPT_OPTION_NAMES_78, "sourcepath");
1697GLOBAL_STR(kSHOPT_OPTION_NAMES_79, "strict_argv");
1698GLOBAL_STR(kSHOPT_OPTION_NAMES_80, "strict_arith");
1699GLOBAL_STR(kSHOPT_OPTION_NAMES_81, "strict_array");
1700GLOBAL_STR(kSHOPT_OPTION_NAMES_82, "strict_control_flow");
1701GLOBAL_STR(kSHOPT_OPTION_NAMES_83, "strict_errexit");
1702GLOBAL_STR(kSHOPT_OPTION_NAMES_84, "strict_glob");
1703GLOBAL_STR(kSHOPT_OPTION_NAMES_85, "strict_nameref");
1704GLOBAL_STR(kSHOPT_OPTION_NAMES_86, "strict_tilde");
1705GLOBAL_STR(kSHOPT_OPTION_NAMES_87, "strict_word_eval");
1706GLOBAL_STR(kSHOPT_OPTION_NAMES_88, "verbose_errexit");
1707GLOBAL_STR(kSHOPT_OPTION_NAMES_89, "xpg_echo");
1708GLOBAL_STR(kSHOPT_OPTION_NAMES_90, "xtrace_details");
1709GLOBAL_STR(kSHOPT_OPTION_NAMES_91, "xtrace_rich");
1710GLOBAL_LIST(SHOPT_OPTION_NAMES, BigStr*, 92, {kSHOPT_OPTION_NAMES_0 COMMA kSHOPT_OPTION_NAMES_1 COMMA kSHOPT_OPTION_NAMES_2 COMMA kSHOPT_OPTION_NAMES_3 COMMA kSHOPT_OPTION_NAMES_4 COMMA kSHOPT_OPTION_NAMES_5 COMMA kSHOPT_OPTION_NAMES_6 COMMA kSHOPT_OPTION_NAMES_7 COMMA kSHOPT_OPTION_NAMES_8 COMMA kSHOPT_OPTION_NAMES_9 COMMA kSHOPT_OPTION_NAMES_10 COMMA kSHOPT_OPTION_NAMES_11 COMMA kSHOPT_OPTION_NAMES_12 COMMA kSHOPT_OPTION_NAMES_13 COMMA kSHOPT_OPTION_NAMES_14 COMMA kSHOPT_OPTION_NAMES_15 COMMA kSHOPT_OPTION_NAMES_16 COMMA kSHOPT_OPTION_NAMES_17 COMMA kSHOPT_OPTION_NAMES_18 COMMA kSHOPT_OPTION_NAMES_19 COMMA kSHOPT_OPTION_NAMES_20 COMMA kSHOPT_OPTION_NAMES_21 COMMA kSHOPT_OPTION_NAMES_22 COMMA kSHOPT_OPTION_NAMES_23 COMMA kSHOPT_OPTION_NAMES_24 COMMA kSHOPT_OPTION_NAMES_25 COMMA kSHOPT_OPTION_NAMES_26 COMMA kSHOPT_OPTION_NAMES_27 COMMA kSHOPT_OPTION_NAMES_28 COMMA kSHOPT_OPTION_NAMES_29 COMMA kSHOPT_OPTION_NAMES_30 COMMA kSHOPT_OPTION_NAMES_31 COMMA kSHOPT_OPTION_NAMES_32 COMMA kSHOPT_OPTION_NAMES_33 COMMA kSHOPT_OPTION_NAMES_34 COMMA kSHOPT_OPTION_NAMES_35 COMMA kSHOPT_OPTION_NAMES_36 COMMA kSHOPT_OPTION_NAMES_37 COMMA kSHOPT_OPTION_NAMES_38 COMMA kSHOPT_OPTION_NAMES_39 COMMA kSHOPT_OPTION_NAMES_40 COMMA kSHOPT_OPTION_NAMES_41 COMMA kSHOPT_OPTION_NAMES_42 COMMA kSHOPT_OPTION_NAMES_43 COMMA kSHOPT_OPTION_NAMES_44 COMMA kSHOPT_OPTION_NAMES_45 COMMA kSHOPT_OPTION_NAMES_46 COMMA kSHOPT_OPTION_NAMES_47 COMMA kSHOPT_OPTION_NAMES_48 COMMA kSHOPT_OPTION_NAMES_49 COMMA kSHOPT_OPTION_NAMES_50 COMMA kSHOPT_OPTION_NAMES_51 COMMA kSHOPT_OPTION_NAMES_52 COMMA kSHOPT_OPTION_NAMES_53 COMMA kSHOPT_OPTION_NAMES_54 COMMA kSHOPT_OPTION_NAMES_55 COMMA kSHOPT_OPTION_NAMES_56 COMMA kSHOPT_OPTION_NAMES_57 COMMA kSHOPT_OPTION_NAMES_58 COMMA kSHOPT_OPTION_NAMES_59 COMMA kSHOPT_OPTION_NAMES_60 COMMA kSHOPT_OPTION_NAMES_61 COMMA kSHOPT_OPTION_NAMES_62 COMMA kSHOPT_OPTION_NAMES_63 COMMA kSHOPT_OPTION_NAMES_64 COMMA kSHOPT_OPTION_NAMES_65 COMMA kSHOPT_OPTION_NAMES_66 COMMA kSHOPT_OPTION_NAMES_67 COMMA kSHOPT_OPTION_NAMES_68 COMMA kSHOPT_OPTION_NAMES_69 COMMA kSHOPT_OPTION_NAMES_70 COMMA kSHOPT_OPTION_NAMES_71 COMMA kSHOPT_OPTION_NAMES_72 COMMA kSHOPT_OPTION_NAMES_73 COMMA kSHOPT_OPTION_NAMES_74 COMMA kSHOPT_OPTION_NAMES_75 COMMA kSHOPT_OPTION_NAMES_76 COMMA kSHOPT_OPTION_NAMES_77 COMMA kSHOPT_OPTION_NAMES_78 COMMA kSHOPT_OPTION_NAMES_79 COMMA kSHOPT_OPTION_NAMES_80 COMMA kSHOPT_OPTION_NAMES_81 COMMA kSHOPT_OPTION_NAMES_82 COMMA kSHOPT_OPTION_NAMES_83 COMMA kSHOPT_OPTION_NAMES_84 COMMA kSHOPT_OPTION_NAMES_85 COMMA kSHOPT_OPTION_NAMES_86 COMMA kSHOPT_OPTION_NAMES_87 COMMA kSHOPT_OPTION_NAMES_88 COMMA kSHOPT_OPTION_NAMES_89 COMMA kSHOPT_OPTION_NAMES_90 COMMA kSHOPT_OPTION_NAMES_91});
1711
1712} // namespace consts
1713