diff options
Diffstat (limited to 'src/yuescript/yue_parser.cpp')
-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( |