diff options
-rw-r--r-- | spec/inputs/whitespace.moon | 39 | ||||
-rw-r--r-- | src/MoonP/moon_compiler.cpp | 2 | ||||
-rw-r--r-- | src/MoonP/moon_parser.cpp | 10 |
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 | ||
102 | f = -> | 102 | v = -> |
103 | a, | 103 | a, |
104 | b, | 104 | b, |
105 | c | 105 | c |
106 | 106 | ||
107 | a, | 107 | v1, v2, |
108 | b, | 108 | v3 = -> |
109 | c = 1, | 109 | a; |
110 | 2, | 110 | b, |
111 | f | 111 | c |
112 | :abc | 112 | |
113 | a, b, | ||
114 | c, d, | ||
115 | e, f = 1, | ||
116 | f2 | ||
117 | :abc; | ||
118 | 3, | ||
119 | 4, | ||
120 | f5 abc; | ||
121 | 6 | ||
122 | |||
123 | for a, | ||
124 | b, | ||
125 | c in pairs tb | ||
126 | print a, | ||
127 | b, | ||
128 | c | ||
129 | |||
130 | for i = 1, | ||
131 | 10, | ||
132 | -1 | ||
133 | print i | ||
134 | |||
135 | local a, | ||
136 | b, | ||
137 | c | ||
113 | 138 | ||
114 | nil | 139 | nil |
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 | ||
34 | const char* moonScriptVersion() { | 34 | const char* moonScriptVersion() { |
35 | return "0.5.0-r0.1.2"; | 35 | return "0.5.0-r0.1.3"; |
36 | } | 36 | } |
37 | 37 | ||
38 | class MoonCompiler { | 38 | class 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 | ||