aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2023-01-19 18:06:03 +0800
committerLi Jin <dragon-fly@qq.com>2023-01-19 18:06:03 +0800
commit2fad28df04f2c8f015ccf90e16e74c47ad174bde (patch)
tree11249f34e5acdefb1094d998fbb3074e3fa0aa94
parentee9f984341a3e5b52ae97573d97e20cde57ada94 (diff)
downloadyuescript-2fad28df04f2c8f015ccf90e16e74c47ad174bde.tar.gz
yuescript-2fad28df04f2c8f015ccf90e16e74c47ad174bde.tar.bz2
yuescript-2fad28df04f2c8f015ccf90e16e74c47ad174bde.zip
cleanup.
-rw-r--r--src/yuescript/yue_parser.cpp36
-rw-r--r--src/yuescript/yue_parser.h2
2 files changed, 19 insertions, 19 deletions
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp
index e78b331..e62417c 100644
--- a/src/yuescript/yue_parser.cpp
+++ b/src/yuescript/yue_parser.cpp
@@ -47,8 +47,8 @@ YueParser::YueParser() {
47 space = -(and_(set(" \t-\\")) >> *space_one >> -comment); 47 space = -(and_(set(" \t-\\")) >> *space_one >> -comment);
48 space_break = space >> line_break; 48 space_break = space >> line_break;
49 white = space >> *(line_break >> space); 49 white = space >> *(line_break >> space);
50 empty_line = space_break;
51 alpha_num = sel({range('a', 'z'), range('A', 'Z'), range('0', '9'), '_'}); 50 alpha_num = sel({range('a', 'z'), range('A', 'Z'), range('0', '9'), '_'});
51 not_alpha_num = not_(alpha_num);
52 Name = sel({range('a', 'z'), range('A', 'Z'), '_'}) >> *alpha_num; 52 Name = sel({range('a', 'z'), range('A', 'Z'), '_'}) >> *alpha_num;
53 num_expo = set("eE") >> -set("+-") >> num_char; 53 num_expo = set("eE") >> -set("+-") >> num_char;
54 num_expo_hex = set("pP") >> -set("+-") >> num_char; 54 num_expo_hex = set("pP") >> -set("+-") >> num_char;
@@ -86,7 +86,7 @@ YueParser::YueParser() {
86 86
87 #define ensure(patt, finally) ((patt) >> (finally) | (finally) >> cut) 87 #define ensure(patt, finally) ((patt) >> (finally) | (finally) >> cut)
88 88
89 #define key(str) (str >> not_(alpha_num)) 89 #define key(str) (str >> not_alpha_num)
90 90
91 #define disable_do_rule(patt) ( \ 91 #define disable_do_rule(patt) ( \
92 disable_do >> ( \ 92 disable_do >> ( \
@@ -291,7 +291,7 @@ YueParser::YueParser() {
291 291
292 ShortTabAppending = "[]" >> space >> Assign; 292 ShortTabAppending = "[]" >> space >> Assign;
293 293
294 BreakLoop = sel({"break", "continue"}) >> not_(alpha_num); 294 BreakLoop = sel({"break", "continue"}) >> not_alpha_num;
295 295
296 Return = key("return") >> -(space >> (TableBlock | ExpListLow)); 296 Return = key("return") >> -(space >> (TableBlock | ExpListLow));
297 297
@@ -302,8 +302,8 @@ YueParser::YueParser() {
302 switch_else = key("else") >> space >> body; 302 switch_else = key("else") >> space >> body;
303 303
304 switch_block = 304 switch_block =
305 *(line_break >> *empty_line >> check_indent_match >> space >> SwitchCase) >> 305 *(line_break >> *space_break >> check_indent_match >> space >> SwitchCase) >>
306 -(line_break >> *empty_line >> check_indent_match >> space >> switch_else); 306 -(line_break >> *space_break >> check_indent_match >> space >> switch_else);
307 307
308 exp_not_tab = not_(SimpleTable | TableLit) >> space >> Exp; 308 exp_not_tab = not_(SimpleTable | TableLit) >> space >> Exp;
309 309
@@ -314,22 +314,22 @@ YueParser::YueParser() {
314 Switch = key("switch") >> space >> Exp >> 314 Switch = key("switch") >> space >> Exp >>
315 space >> Seperator >> ( 315 space >> Seperator >> (
316 SwitchCase >> space >> ( 316 SwitchCase >> space >> (
317 line_break >> *empty_line >> check_indent_match >> space >> SwitchCase >> switch_block | 317 line_break >> *space_break >> check_indent_match >> space >> SwitchCase >> switch_block |
318 *(space >> SwitchCase) >> -(space >> switch_else) 318 *(space >> SwitchCase) >> -(space >> switch_else)
319 ) | 319 ) |
320 space_break >> *empty_line >> advance_match >> space >> SwitchCase >> switch_block >> pop_indent 320 +space_break >> advance_match >> space >> SwitchCase >> switch_block >> pop_indent
321 ) >> switch_block; 321 ) >> switch_block;
322 322
323 Assignment = ExpList >> space >> Assign; 323 Assignment = ExpList >> space >> Assign;
324 IfCond = disable_chain_rule(disable_arg_table_block_rule(Assignment | Exp)); 324 IfCond = disable_chain_rule(disable_arg_table_block_rule(Assignment | Exp));
325 if_else_if = -(line_break >> *empty_line >> check_indent_match) >> space >> key("elseif") >> space >> IfCond >> space >> body_with("then"); 325 if_else_if = -(line_break >> *space_break >> check_indent_match) >> space >> key("elseif") >> space >> IfCond >> space >> body_with("then");
326 if_else = -(line_break >> *empty_line >> check_indent_match) >> space >> key("else") >> space >> body; 326 if_else = -(line_break >> *space_break >> check_indent_match) >> space >> key("else") >> space >> body;
327 IfType = sel({"if", "unless"}) >> not_(alpha_num); 327 IfType = sel({"if", "unless"}) >> not_alpha_num;
328 If = seq({IfType, space, IfCond, space, opt_body_with("then"), *if_else_if, -if_else}); 328 If = seq({IfType, space, IfCond, space, opt_body_with("then"), *if_else_if, -if_else});
329 329
330 WhileType = sel({"while", "until"}) >> not_(alpha_num); 330 WhileType = sel({"while", "until"}) >> not_alpha_num;
331 While = WhileType >> space >> disable_do_chain_arg_table_block_rule(Exp) >> space >> opt_body_with("do"); 331 While = WhileType >> space >> disable_do_chain_arg_table_block_rule(Exp) >> space >> opt_body_with("do");
332 Repeat = seq({key("repeat"), space, Body, line_break, *empty_line, check_indent_match, space, key("until"), space, Exp}); 332 Repeat = seq({key("repeat"), space, Body, line_break, *space_break, check_indent_match, space, key("until"), space, Exp});
333 333
334 ForStepValue = ',' >> space >> Exp; 334 ForStepValue = ',' >> space >> Exp;
335 for_args = Variable >> space >> '=' >> space >> Exp >> space >> ',' >> space >> Exp >> space >> -ForStepValue; 335 for_args = Variable >> space >> '=' >> space >> Exp >> space >> ',' >> space >> Exp >> space >> -ForStepValue;
@@ -386,7 +386,7 @@ YueParser::YueParser() {
386 return true; 386 return true;
387 }); 387 });
388 388
389 CatchBlock = line_break >> *empty_line >> check_indent_match >> space >> key("catch") >> space >> Variable >> space >> in_block; 389 CatchBlock = line_break >> *space_break >> check_indent_match >> space >> key("catch") >> space >> Variable >> space >> in_block;
390 Try = key("try") >> space >> (in_block | Exp) >> -CatchBlock; 390 Try = key("try") >> space >> (in_block | Exp) >> -CatchBlock;
391 391
392 Comprehension = '[' >> not_('[') >> space >> Exp >> space >> CompInner >> space >> ']'; 392 Comprehension = '[' >> not_('[') >> space >> Exp >> space >> CompInner >> space >> ']';
@@ -424,7 +424,7 @@ YueParser::YueParser() {
424 '-' >> not_(set(">=") | space_one), 424 '-' >> not_(set(">=") | space_one),
425 '#', 425 '#',
426 '~' >> not_('=' | space_one), 426 '~' >> not_('=' | space_one),
427 "not" >> not_(alpha_num) 427 "not" >> not_alpha_num
428 }); 428 });
429 UnaryExp = *(UnaryOperator >> space) >> expo_exp; 429 UnaryExp = *(UnaryOperator >> space) >> expo_exp;
430 430
@@ -433,8 +433,8 @@ YueParser::YueParser() {
433 pipe_exp = UnaryExp >> *(space >> pipe_value); 433 pipe_exp = UnaryExp >> *(space >> pipe_value);
434 434
435 BinaryOperator = sel({ 435 BinaryOperator = sel({
436 "or" >> not_(alpha_num), 436 "or" >> not_alpha_num,
437 "and" >> not_(alpha_num), 437 "and" >> not_alpha_num,
438 "<=", ">=", "~=", "!=", "==", 438 "<=", ">=", "~=", "!=", "==",
439 "..", "<<", ">>", "//", 439 "..", "<<", ">>", "//",
440 set("+-*/%><|&~") 440 set("+-*/%><|&~")
@@ -595,7 +595,7 @@ YueParser::YueParser() {
595 white, '}' 595 white, '}'
596 }); 596 });
597 597
598 table_value_list = table_value >> *(space >> ',' >> space >> table_value); 598 table_value_list = table_value >> *seq({space, ',', space, table_value});
599 599
600 table_lit_line = ( 600 table_lit_line = (
601 push_indent_match >> (space >> table_value_list >> pop_indent | pop_indent) 601 push_indent_match >> (space >> table_value_list >> pop_indent | pop_indent)
@@ -762,7 +762,7 @@ YueParser::YueParser() {
762 leading_spaces_error 762 leading_spaces_error
763 }); 763 });
764 764
765 ConstValue = sel({"nil", "true", "false"}) >> not_(alpha_num); 765 ConstValue = sel({"nil", "true", "false"}) >> not_alpha_num;
766 766
767 SimpleValue = sel({ 767 SimpleValue = sel({
768 TableLit, ConstValue, If, Switch, Try, With, 768 TableLit, ConstValue, If, Switch, Try, With,
diff --git a/src/yuescript/yue_parser.h b/src/yuescript/yue_parser.h
index e98b711..f3b3f4f 100644
--- a/src/yuescript/yue_parser.h
+++ b/src/yuescript/yue_parser.h
@@ -140,8 +140,8 @@ private:
140 rule space_one; 140 rule space_one;
141 rule space; 141 rule space;
142 rule space_break; 142 rule space_break;
143 rule empty_line;
144 rule alpha_num; 143 rule alpha_num;
144 rule not_alpha_num;
145 rule cut; 145 rule cut;
146 rule check_indent_match; 146 rule check_indent_match;
147 rule check_indent; 147 rule check_indent;