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.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp
index f530776..a3e70c6 100644
--- a/src/yuescript/yue_parser.cpp
+++ b/src/yuescript/yue_parser.cpp
@@ -465,7 +465,7 @@ YueParser::YueParser() {
465 and_(expr('[')) >> LuaString | 465 and_(expr('[')) >> LuaString |
466 and_(expr('{')) >> TableLit); 466 and_(expr('{')) >> TableLit);
467 467
468 TableValue = KeyValue | Exp; 468 TableValue = KeyValueDef | Exp;
469 469
470 table_lit_lines = SpaceBreak >> TableLitLine >> *(-sym(',') >> SpaceBreak >> TableLitLine) >> -sym(','); 470 table_lit_lines = SpaceBreak >> TableLitLine >> *(-sym(',') >> SpaceBreak >> TableLitLine) >> -sym(',');
471 471
@@ -536,14 +536,19 @@ YueParser::YueParser() {
536 Space >> LuaString 536 Space >> LuaString
537 ) >> 537 ) >>
538 symx(':') >> not_(':') >> 538 symx(':') >> not_(':') >>
539 (Exp | TableBlock | +(SpaceBreak) >> Exp); 539 (Exp | TableBlock | +SpaceBreak >> Exp);
540
541 default_pair = (sym(':') >> Variable >> not_('#') >> Seperator | KeyName >> symx(':') >> Seperator >> Exp) >> sym('=') >> Exp;
540 542
541 meta_variable_pair = sym(':') >> Variable >> expr('#'); 543 meta_variable_pair = sym(':') >> Variable >> expr('#');
542 544
543 meta_normal_pair = Space >> -(Name | symx('[') >> Exp >> sym(']')) >> expr("#:") >> 545 meta_normal_pair = Space >> -(Name | symx('[') >> Exp >> sym(']')) >> expr("#:") >>
544 (Exp | TableBlock | +(SpaceBreak) >> Exp); 546 (Exp | TableBlock | +(SpaceBreak) >> Exp);
545 547
548 meta_default_pair = (sym(':') >> Variable >> expr('#') >> Seperator | -Name >> expr("#:") >> Seperator >> Exp) >> sym('=') >> Exp;
549
546 KeyValue = variable_pair | normal_pair | meta_variable_pair | meta_normal_pair; 550 KeyValue = variable_pair | normal_pair | meta_variable_pair | meta_normal_pair;
551 KeyValueDef = (variable_pair | normal_pair | meta_variable_pair | meta_normal_pair) >> not_(sym('=')) | default_pair | meta_default_pair;
547 552
548 KeyValueList = KeyValue >> *(sym(',') >> KeyValue); 553 KeyValueList = KeyValue >> *(sym(',') >> KeyValue);
549 KeyValueLine = CheckIndent >> (KeyValueList >> -sym(',') | TableBlockIndent | Space >> expr('*') >> (Exp | TableBlock)); 554 KeyValueLine = CheckIndent >> (KeyValueList >> -sym(',') | TableBlockIndent | Space >> expr('*') >> (Exp | TableBlock));