diff options
author | Li Jin <dragon-fly@qq.com> | 2020-05-14 10:39:00 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2020-05-14 10:39:00 +0800 |
commit | 5440b846a04802626dd5c4ebc8d19e52eb5afc99 (patch) | |
tree | ad5d462b7030fcf3799f51433c149babc63b99e2 /src/MoonP/moon_parser.cpp | |
parent | 6402a8896c78440aee03cc4b7bb315fc236e6ff8 (diff) | |
download | yuescript-5440b846a04802626dd5c4ebc8d19e52eb5afc99.tar.gz yuescript-5440b846a04802626dd5c4ebc8d19e52eb5afc99.tar.bz2 yuescript-5440b846a04802626dd5c4ebc8d19e52eb5afc99.zip |
fix issue of unary and binary operator "~".
Diffstat (limited to 'src/MoonP/moon_parser.cpp')
-rw-r--r-- | src/MoonP/moon_parser.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp index 5b537a1..2d71567 100644 --- a/src/MoonP/moon_parser.cpp +++ b/src/MoonP/moon_parser.cpp | |||
@@ -44,7 +44,8 @@ MoonParser::MoonParser() { | |||
44 | multi_line_content = *(not_(multi_line_close) >> Any); | 44 | multi_line_content = *(not_(multi_line_close) >> Any); |
45 | MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; | 45 | MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; |
46 | EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; | 46 | EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; |
47 | Space = *(set(" \t") | and_(set("-\\")) >> (MultiLineComment | EscapeNewLine)) >> -Comment; | 47 | space_one = set(" \t") | and_(set("-\\")) >> (MultiLineComment | EscapeNewLine); |
48 | Space = *space_one >> -Comment; | ||
48 | SpaceBreak = Space >> Break; | 49 | SpaceBreak = Space >> Break; |
49 | White = Space >> *(Break >> Space); | 50 | White = Space >> *(Break >> Space); |
50 | EmptyLine = SpaceBreak; | 51 | EmptyLine = SpaceBreak; |
@@ -303,7 +304,7 @@ MoonParser::MoonParser() { | |||
303 | expr("<<") | | 304 | expr("<<") | |
304 | expr(">>") | | 305 | expr(">>") | |
305 | expr("//") | | 306 | expr("//") | |
306 | set("+-*/%^><|&"); | 307 | set("+-*/%^><|&~"); |
307 | 308 | ||
308 | BackcallOperator = expr("|>"); | 309 | BackcallOperator = expr("|>"); |
309 | 310 | ||
@@ -512,16 +513,16 @@ MoonParser::MoonParser() { | |||
512 | ); | 513 | ); |
513 | 514 | ||
514 | InvokeArgs = | 515 | InvokeArgs = |
515 | not_(expr('-')) >> Seperator >> | 516 | not_(set("-~")) >> Seperator >> |
516 | ( | 517 | ( |
517 | Exp >> *(sym(',') >> Exp) >> -(invoke_args_with_table | TableBlock) | | 518 | Exp >> *(sym(',') >> Exp) >> -(invoke_args_with_table | TableBlock) | |
518 | TableBlock | 519 | TableBlock |
519 | ); | 520 | ); |
520 | 521 | ||
521 | const_value = (expr("nil") | expr("true") | expr("false")) >> not_(AlphaNum); | 522 | const_value = (expr("nil") | expr("true") | expr("false")) >> not_(AlphaNum); |
522 | minus_exp = expr('-') >> not_(set(" \t")) >> Exp; | 523 | minus_exp = expr('-') >> not_(space_one) >> Exp; |
523 | sharp_exp = expr('#') >> Exp; | 524 | sharp_exp = expr('#') >> Exp; |
524 | tilde_exp = expr('~') >> Exp; | 525 | tilde_exp = expr('~') >> not_(space_one) >> Exp; |
525 | not_exp = expr("not") >> not_(AlphaNum) >> Exp; | 526 | not_exp = expr("not") >> not_(AlphaNum) >> Exp; |
526 | unary_exp = minus_exp | sharp_exp | tilde_exp | not_exp; | 527 | unary_exp = minus_exp | sharp_exp | tilde_exp | not_exp; |
527 | 528 | ||