aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/inputs/whitespace.moon39
-rw-r--r--src/MoonP/moon_compiler.cpp2
-rw-r--r--src/MoonP/moon_parser.cpp10
3 files changed, 38 insertions, 13 deletions
diff --git a/spec/inputs/whitespace.moon b/spec/inputs/whitespace.moon
index 0422443..06b8773 100644
--- a/spec/inputs/whitespace.moon
+++ b/spec/inputs/whitespace.moon
@@ -99,16 +99,41 @@ c(one, two,
99 99
100-- 100--
101 101
102f = -> 102v = ->
103 a, 103 a,
104 b, 104 b,
105 c 105 c
106 106
107a, 107v1, v2,
108 b, 108 v3 = ->
109 c = 1, 109 a;
110 2, 110 b,
111 f 111 c
112 :abc 112
113a, b,
114 c, d,
115e, f = 1,
116 f2
117 :abc;
118 3,
119 4,
120 f5 abc;
121 6
122
123for a,
124 b,
125 c in pairs tb
126 print a,
127 b,
128 c
129
130for i = 1,
131 10,
132 -1
133 print i
134
135local a,
136 b,
137 c
113 138
114nil 139nil
diff --git a/src/MoonP/moon_compiler.cpp b/src/MoonP/moon_compiler.cpp
index 4596542..e6d010c 100644
--- a/src/MoonP/moon_compiler.cpp
+++ b/src/MoonP/moon_compiler.cpp
@@ -32,7 +32,7 @@ inline std::string s(std::string_view sv) {
32} 32}
33 33
34const char* moonScriptVersion() { 34const char* moonScriptVersion() {
35 return "0.5.0-r0.1.2"; 35 return "0.5.0-r0.1.3";
36} 36}
37 37
38class MoonCompiler { 38class MoonCompiler {
diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp
index 0b59776..8d7fdc5 100644
--- a/src/MoonP/moon_parser.cpp
+++ b/src/MoonP/moon_parser.cpp
@@ -198,8 +198,8 @@ MoonParser::MoonParser() {
198 198
199 While = key("while") >> DisableDo >> ensure(Exp, PopDo) >> -key("do") >> Body; 199 While = key("while") >> DisableDo >> ensure(Exp, PopDo) >> -key("do") >> Body;
200 200
201 for_step_value = sym(',') >> Exp; 201 for_step_value = sym(',') >> White >> Exp;
202 for_args = Space >> Variable >> sym('=') >> Exp >> sym(',') >> Exp >> -for_step_value; 202 for_args = Space >> Variable >> sym('=') >> Exp >> sym(',') >> White >> Exp >> -for_step_value;
203 203
204 For = key("for") >> DisableDo >> 204 For = key("for") >> DisableDo >>
205 ensure(for_args, PopDo) >> 205 ensure(for_args, PopDo) >>
@@ -238,7 +238,7 @@ MoonParser::MoonParser() {
238 CompInner = Seperator >> (CompForEach | CompFor) >> *CompClause; 238 CompInner = Seperator >> (CompForEach | CompFor) >> *CompClause;
239 star_exp = sym('*') >> Exp; 239 star_exp = sym('*') >> Exp;
240 CompForEach = key("for") >> AssignableNameList >> key("in") >> (star_exp | Exp); 240 CompForEach = key("for") >> AssignableNameList >> key("in") >> (star_exp | Exp);
241 CompFor = key("for") >> Space >> Variable >> sym('=') >> Exp >> sym(',') >> Exp >> -for_step_value; 241 CompFor = key("for") >> Space >> Variable >> sym('=') >> Exp >> sym(',') >> White >> Exp >> -for_step_value;
242 CompClause = CompFor | CompForEach | key("when") >> Exp; 242 CompClause = CompFor | CompForEach | key("when") >> Exp;
243 243
244 Assign = sym('=') >> Seperator >> (With | If | Switch | TableBlock | Exp >> *((sym(',') | sym(';')) >> White >> Exp)); 244 Assign = sym('=') >> Seperator >> (With | If | Switch | TableBlock | Exp >> *((sym(',') | sym(';')) >> White >> Exp));
@@ -430,9 +430,9 @@ MoonParser::MoonParser() {
430 fn_arrow = expr("->") | expr("=>"); 430 fn_arrow = expr("->") | expr("=>");
431 FunLit = -FnArgsDef >> Space >> fn_arrow >> -Body; 431 FunLit = -FnArgsDef >> Space >> fn_arrow >> -Body;
432 432
433 NameList = Seperator >> Space >> Variable >> *(sym(',') >> Space >> Variable); 433 NameList = Seperator >> Space >> Variable >> *(sym(',') >> White >> Variable);
434 NameOrDestructure = Space >> Variable | TableLit; 434 NameOrDestructure = Space >> Variable | TableLit;
435 AssignableNameList = Seperator >> NameOrDestructure >> *(sym(',') >> NameOrDestructure); 435 AssignableNameList = Seperator >> NameOrDestructure >> *(sym(',') >> White >> NameOrDestructure);
436 436
437 Backcall = -FnArgsDef >> Space >> symx("<-") >> Space >> ChainValue; 437 Backcall = -FnArgsDef >> Space >> symx("<-") >> Space >> ChainValue;
438 438