diff options
author | Li Jin <dragon-fly@qq.com> | 2020-02-20 15:59:22 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2020-02-20 15:59:22 +0800 |
commit | 2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87 (patch) | |
tree | ae3ea9264e26f84c39be5142eabc231f3bad513a | |
parent | a4bbfc61a8973ad029bd7d7908bf2c24398c0715 (diff) | |
download | yuescript-2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87.tar.gz yuescript-2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87.tar.bz2 yuescript-2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87.zip |
fix comments issue.
-rw-r--r-- | spec/inputs/whitespace.moon | 29 | ||||
-rw-r--r-- | src/MoonP/moon_parser.cpp | 8 |
2 files changed, 19 insertions, 18 deletions
diff --git a/spec/inputs/whitespace.moon b/spec/inputs/whitespace.moon index 06b8773..06ce4eb 100644 --- a/spec/inputs/whitespace.moon +++ b/spec/inputs/whitespace.moon | |||
@@ -100,36 +100,37 @@ c(one, two, | |||
100 | -- | 100 | -- |
101 | 101 | ||
102 | v = -> | 102 | v = -> |
103 | a, | 103 | a, -- v1 |
104 | b, | 104 | b, -- v2 |
105 | c | 105 | c -- v3 |
106 | 106 | ||
107 | v1, v2, | 107 | v1, v2, |
108 | v3 = -> | 108 | v3 = -> |
109 | a; | 109 | a; -- end of function for v1 |
110 | b, | 110 | b, -- v2 |
111 | c | 111 | c -- v3 |
112 | 112 | ||
113 | a, b, | 113 | a, b, |
114 | c, d, | 114 | c, d, |
115 | e, f = 1, | 115 | e, f = 1, |
116 | f2 | 116 | f2 |
117 | :abc; | 117 | :abc; -- arg2 |
118 | 3, | 118 | 3, |
119 | 4, | 119 | 4, |
120 | f5 abc; | 120 | f5 abc; -- arg5 |
121 | 6 | 121 | 6 |
122 | 122 | ||
123 | for a, | 123 | for a, -- destruct 1 |
124 | b, | 124 | b, -- destruct 2 |
125 | c in pairs tb | 125 | --[[destruct 3]] c |
126 | in pairs tb | ||
126 | print a, | 127 | print a, |
127 | b, | 128 | b, |
128 | c | 129 | c |
129 | 130 | ||
130 | for i = 1, | 131 | for i = 1, -- initial |
131 | 10, | 132 | 10, -- stop |
132 | -1 | 133 | -1 -- step |
133 | print i | 134 | print i |
134 | 135 | ||
135 | local a, | 136 | local a, |
diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp index 8d7fdc5..39551d2 100644 --- a/src/MoonP/moon_parser.cpp +++ b/src/MoonP/moon_parser.cpp | |||
@@ -36,7 +36,6 @@ MoonParser::MoonParser() { | |||
36 | plain_space = *set(" \t"); | 36 | plain_space = *set(" \t"); |
37 | Break = nl(-expr('\r') >> '\n'); | 37 | Break = nl(-expr('\r') >> '\n'); |
38 | Any = Break | any(); | 38 | Any = Break | any(); |
39 | White = *(set(" \t") | Break); | ||
40 | Stop = Break | eof(); | 39 | Stop = Break | eof(); |
41 | Indent = plain_space; | 40 | Indent = plain_space; |
42 | Comment = "--" >> *(not_(set("\r\n")) >> Any) >> and_(Stop); | 41 | Comment = "--" >> *(not_(set("\r\n")) >> Any) >> and_(Stop); |
@@ -45,8 +44,9 @@ MoonParser::MoonParser() { | |||
45 | multi_line_content = *(not_(multi_line_close) >> Any); | 44 | multi_line_content = *(not_(multi_line_close) >> Any); |
46 | MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; | 45 | MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; |
47 | EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; | 46 | EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; |
48 | Space = *(set(" \t") | MultiLineComment | EscapeNewLine) >> -Comment; | 47 | Space = *(set(" \t") | and_(set("-\\")) >> (MultiLineComment | EscapeNewLine)) >> -Comment; |
49 | SpaceBreak = Space >> Break; | 48 | SpaceBreak = Space >> Break; |
49 | White = Space >> *(Break >> Space); | ||
50 | EmptyLine = SpaceBreak; | 50 | EmptyLine = SpaceBreak; |
51 | AlphaNum = range('a', 'z') | range('A', 'Z') | range('0', '9') | '_'; | 51 | AlphaNum = range('a', 'z') | range('A', 'Z') | range('0', '9') | '_'; |
52 | Name = (range('a', 'z') | range('A', 'Z') | '_') >> *AlphaNum; | 52 | Name = (range('a', 'z') | range('A', 'Z') | '_') >> *AlphaNum; |
@@ -207,7 +207,7 @@ MoonParser::MoonParser() { | |||
207 | 207 | ||
208 | for_in = star_exp | ExpList; | 208 | for_in = star_exp | ExpList; |
209 | 209 | ||
210 | ForEach = key("for") >> AssignableNameList >> key("in") >> | 210 | ForEach = key("for") >> AssignableNameList >> White >> key("in") >> |
211 | DisableDo >> ensure(for_in, PopDo) >> | 211 | DisableDo >> ensure(for_in, PopDo) >> |
212 | -key("do") >> Body; | 212 | -key("do") >> Body; |
213 | 213 | ||
@@ -233,7 +233,7 @@ MoonParser::MoonParser() { | |||
233 | 233 | ||
234 | Comprehension = sym('[') >> Exp >> CompInner >> sym(']'); | 234 | Comprehension = sym('[') >> Exp >> CompInner >> sym(']'); |
235 | comp_value = sym(',') >> Exp; | 235 | comp_value = sym(',') >> Exp; |
236 | TblComprehension = sym('{') >> (Exp >> -comp_value) >> CompInner >> sym('}'); | 236 | TblComprehension = sym('{') >> Exp >> -comp_value >> CompInner >> sym('}'); |
237 | 237 | ||
238 | CompInner = Seperator >> (CompForEach | CompFor) >> *CompClause; | 238 | CompInner = Seperator >> (CompForEach | CompFor) >> *CompClause; |
239 | star_exp = sym('*') >> Exp; | 239 | star_exp = sym('*') >> Exp; |