aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2020-02-20 15:59:22 +0800
committerLi Jin <dragon-fly@qq.com>2020-02-20 15:59:22 +0800
commit2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87 (patch)
treeae3ea9264e26f84c39be5142eabc231f3bad513a
parenta4bbfc61a8973ad029bd7d7908bf2c24398c0715 (diff)
downloadyuescript-2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87.tar.gz
yuescript-2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87.tar.bz2
yuescript-2e9e28ceb3444e0aaf0ff7c704800b9cdc25dc87.zip
fix comments issue.
-rw-r--r--spec/inputs/whitespace.moon29
-rw-r--r--src/MoonP/moon_parser.cpp8
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
102v = -> 102v = ->
103 a, 103 a, -- v1
104 b, 104 b, -- v2
105 c 105 c -- v3
106 106
107v1, v2, 107v1, 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
113a, b, 113a, b,
114 c, d, 114 c, d,
115e, f = 1, 115e, 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
123for a, 123for 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
130for i = 1, 131for i = 1, -- initial
131 10, 132 10, -- stop
132 -1 133 -1 -- step
133 print i 134 print i
134 135
135local a, 136local 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;