diff options
Diffstat (limited to '')
| -rw-r--r-- | src/yuescript/yue_parser.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp index 5d2b4c9..c818098 100644 --- a/src/yuescript/yue_parser.cpp +++ b/src/yuescript/yue_parser.cpp | |||
| @@ -286,7 +286,9 @@ YueParser::YueParser() { | |||
| 286 | import_name = ColonImportName | Variable; | 286 | import_name = ColonImportName | Variable; |
| 287 | import_name_list = Seperator >> *space_break >> space >> import_name >> *((+space_break | space >> ',' >> *space_break) >> space >> import_name); | 287 | import_name_list = Seperator >> *space_break >> space >> import_name >> *((+space_break | space >> ',' >> *space_break) >> space >> import_name); |
| 288 | ImportFrom = import_name_list >> *space_break >> space >> key("from") >> space >> (ImportLiteral | not_(String) >> Exp); | 288 | ImportFrom = import_name_list >> *space_break >> space >> key("from") >> space >> (ImportLiteral | not_(String) >> Exp); |
| 289 | FromImport = key("from") >> space >> (ImportLiteral | not_(String) >> Exp) >> *space_break >> space >> key("import") >> space >> import_name_list; | 289 | from_import_name_list_line = import_name >> *(space >> ',' >> space >> import_name); |
| 290 | from_import_name_in_block = +space_break >> advance_match >> ensure(space >> from_import_name_list_line >> *(-(space >> ',') >> +space_break >> check_indent_match >> space >> from_import_name_list_line), pop_indent); | ||
| 291 | FromImport = key("from") >> space >> (ImportLiteral | not_(String) >> Exp) >> *space_break >> space >> key("import") >> space >> Seperator >> (from_import_name_list_line >> -(space >> ',') >> -from_import_name_in_block | from_import_name_in_block); | ||
| 290 | 292 | ||
| 291 | ImportLiteralInner = (range('a', 'z') | range('A', 'Z') | set("_-") | larger(255)) >> *(alpha_num | '-' | larger(255)); | 293 | ImportLiteralInner = (range('a', 'z') | range('A', 'Z') | set("_-") | larger(255)) >> *(alpha_num | '-' | larger(255)); |
| 292 | import_literal_chain = Seperator >> ImportLiteralInner >> *('.' >> ImportLiteralInner); | 294 | import_literal_chain = Seperator >> ImportLiteralInner >> *('.' >> ImportLiteralInner); |
| @@ -653,6 +655,14 @@ YueParser::YueParser() { | |||
| 653 | SpreadExp | | 655 | SpreadExp | |
| 654 | NormalDef; | 656 | NormalDef; |
| 655 | 657 | ||
| 658 | table_value_list = table_value >> *(space >> ',' >> space >> table_value); | ||
| 659 | |||
| 660 | table_lit_line = ( | ||
| 661 | push_indent_match >> (space >> table_value_list >> pop_indent | pop_indent) | ||
| 662 | ) | ( | ||
| 663 | space | ||
| 664 | ); | ||
| 665 | |||
| 656 | table_lit_lines = space_break >> table_lit_line >> *(-(space >> ',') >> space_break >> table_lit_line) >> -(space >> ','); | 666 | table_lit_lines = space_break >> table_lit_line >> *(-(space >> ',') >> space_break >> table_lit_line) >> -(space >> ','); |
| 657 | 667 | ||
| 658 | TableLit = | 668 | TableLit = |
| @@ -662,14 +672,6 @@ YueParser::YueParser() { | |||
| 662 | -table_lit_lines >> | 672 | -table_lit_lines >> |
| 663 | white >> '}'; | 673 | white >> '}'; |
| 664 | 674 | ||
| 665 | table_value_list = table_value >> *(space >> ',' >> space >> table_value); | ||
| 666 | |||
| 667 | table_lit_line = ( | ||
| 668 | push_indent_match >> (space >> table_value_list >> pop_indent | pop_indent) | ||
| 669 | ) | ( | ||
| 670 | space | ||
| 671 | ); | ||
| 672 | |||
| 673 | table_block_inner = Seperator >> key_value_line >> *(+space_break >> key_value_line); | 675 | table_block_inner = Seperator >> key_value_line >> *(+space_break >> key_value_line); |
| 674 | TableBlock = +space_break >> advance_match >> ensure(table_block_inner, pop_indent); | 676 | TableBlock = +space_break >> advance_match >> ensure(table_block_inner, pop_indent); |
| 675 | TableBlockIndent = '*' >> Seperator >> disable_arg_table_block_rule( | 677 | TableBlockIndent = '*' >> Seperator >> disable_arg_table_block_rule( |
