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

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