OILS / _gen / frontend / consts.cc View on Github | oils.pub

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