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