From cb5371a7dcfde196db07f5a2a3f144888b73d522 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Thu, 6 Aug 2020 10:32:05 +0800 Subject: remove support for escape new line symbol, binary operator expressions can now be written multiline without escape new line symbol. --- src/MoonP/moon_compiler.cpp | 2 +- src/MoonP/moon_parser.cpp | 11 +++++------ src/MoonP/moon_parser.h | 1 - 3 files changed, 6 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/MoonP/moon_compiler.cpp b/src/MoonP/moon_compiler.cpp index 6ce4e48..f517e27 100644 --- a/src/MoonP/moon_compiler.cpp +++ b/src/MoonP/moon_compiler.cpp @@ -49,7 +49,7 @@ inline std::string s(std::string_view sv) { } const std::string_view version() { - return "0.4.6"sv; + return "0.4.7"sv; } // name of table stored in lua registry diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp index df7d810..43e6887 100644 --- a/src/MoonP/moon_parser.cpp +++ b/src/MoonP/moon_parser.cpp @@ -43,8 +43,7 @@ MoonParser::MoonParser() { multi_line_close = expr("]]"); multi_line_content = *(not_(multi_line_close) >> Any); MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; - EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; - space_one = set(" \t") | and_(set("-\\")) >> (MultiLineComment | EscapeNewLine); + space_one = set(" \t") | MultiLineComment; Space = *space_one >> -Comment; SpaceBreak = Space >> Break; White = Space >> *(Break >> Space); @@ -316,7 +315,7 @@ MoonParser::MoonParser() { unary_exp = *(Space >> unary_operator) >> expo_exp; BackcallOperator = expr("|>"); - backcall_value = Space >> BackcallOperator >> *SpaceBreak >> unary_exp; + backcall_value = White >> BackcallOperator >> *SpaceBreak >> unary_exp; backcall_exp = unary_exp >> *backcall_value; BinaryOperator = @@ -332,7 +331,7 @@ MoonParser::MoonParser() { expr(">>") | expr("//") | set("+-*/%><|&~"); - exp_op_value = Space >> BinaryOperator >> *SpaceBreak >> backcall_exp; + exp_op_value = White >> BinaryOperator >> *SpaceBreak >> backcall_exp; Exp = Seperator >> backcall_exp >> *exp_op_value; ChainValue = Seperator >> (Chain | Callable) >> -existential_op >> -InvokeArgs; @@ -522,8 +521,8 @@ MoonParser::MoonParser() { fn_arrow_back = expr('<') >> set("-="); Backcall = -FnArgsDef >> Space >> fn_arrow_back >> Space >> ChainValue; - ExpList = Seperator >> Exp >> *(sym(',') >> White >> Exp); - ExpListLow = Seperator >> Exp >> *((sym(',') | sym(';')) >> White >> Exp); + ExpList = Seperator >> Exp >> *(White >> expr(',') >> White >> Exp); + ExpListLow = Seperator >> Exp >> *(White >> set(",;") >> White >> Exp); ArgLine = CheckIndent >> Exp >> *(sym(',') >> Exp); ArgBlock = ArgLine >> *(sym(',') >> SpaceBreak >> ArgLine) >> PopIndent; diff --git a/src/MoonP/moon_parser.h b/src/MoonP/moon_parser.h index c6a03f8..d7fa24b 100644 --- a/src/MoonP/moon_parser.h +++ b/src/MoonP/moon_parser.h @@ -111,7 +111,6 @@ private: rule multi_line_content; rule MultiLineComment; rule Indent; - rule EscapeNewLine; rule space_one; rule Space; rule SpaceBreak; -- cgit v1.2.3-55-g6feb