From aa57156b2c711bf4781d097d4748e9bc57f937b8 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Sun, 2 Feb 2020 22:27:42 +0800 Subject: add MultiLineComment support in EscapeNewLine. --- spec/inputs/syntax.moon | 22 ++++++++++++++++++++++ src/MoonP/moon_parser.cpp | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/spec/inputs/syntax.moon b/spec/inputs/syntax.moon index 3ac9991..abee3e3 100644 --- a/spec/inputs/syntax.moon +++ b/spec/inputs/syntax.moon @@ -280,3 +280,25 @@ It's OK. func --[[port]] 3000, --[[ip]] "192.168.1.1" +f = -> + a,b, \ + c,d, \ + e,f + +with obj + invoke \ + --[[arg1]] \func!, + --[[arg2]] 123, + --[[arg3]] "abc" + +invokeA \ + invokeB \ + invokeC 123 + +123 \ + |> invokeC \ + |> invokeB \ + |> invokeA + +nil + diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp index b2aba20..358b660 100644 --- a/src/MoonP/moon_parser.cpp +++ b/src/MoonP/moon_parser.cpp @@ -37,13 +37,13 @@ MoonParser::MoonParser() { Any = Break | any(); White = *(set(" \t") | Break); Stop = Break | eof(); + Indent = plain_space; Comment = "--" >> *(not_(set("\r\n")) >> Any) >> and_(Stop); multi_line_open = expr("--[["); multi_line_close = expr("]]"); multi_line_content = *(not_(multi_line_close) >> Any); MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; - Indent = plain_space; - EscapeNewLine = expr('\\') >> plain_space >> -Comment >> Break; + EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; Space = *(set(" \t") | MultiLineComment | EscapeNewLine) >> -Comment; SomeSpace = +set(" \t") >> -Comment; SpaceBreak = Space >> Break; -- cgit v1.2.3-55-g6feb