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)); |
