aboutsummaryrefslogtreecommitdiff
path: root/src/yuescript/yue_parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuescript/yue_parser.cpp')
-rw-r--r--src/yuescript/yue_parser.cpp20
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(