Skip to content

Commit 92b269c

Browse files
committed
fixes #286
1 parent 330f549 commit 92b269c

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

moonscript/parse.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ local build_grammar = wrap_env(debug_grammar, function(root)
183183
ClassBlock = SpaceBreak ^ 1 * Advance * Ct(ClassLine * (SpaceBreak ^ 1 * ClassLine) ^ 0) * PopIndent,
184184
ClassLine = CheckIndent * ((KeyValueList / mark("props") + Statement / mark("stm") + Exp / mark("stm")) * sym(",") ^ -1),
185185
Export = key("export") * (Cc("class") * ClassDecl + op("*") + op("^") + Ct(NameList) * (sym("=") * Ct(ExpListLow)) ^ -1) / mark("export"),
186-
KeyValue = (sym(":") * -SomeSpace * Name * lpeg.Cp()) / self_assign + Ct((KeyName + sym("[") * Exp * sym("]") + DoubleString + SingleString) * symx(":") * (Exp + TableBlock + SpaceBreak ^ 1 * Exp)),
186+
KeyValue = (sym(":") * -SomeSpace * Name * lpeg.Cp()) / self_assign + Ct((KeyName + sym("[") * Exp * sym("]") + Space * DoubleString + Space * SingleString) * symx(":") * (Exp + TableBlock + SpaceBreak ^ 1 * Exp)),
187187
KeyValueList = KeyValue * (sym(",") * KeyValue) ^ 0,
188188
KeyValueLine = CheckIndent * KeyValueList * sym(",") ^ -1,
189189
FnArgsDef = sym("(") * Ct(FnArgDefList ^ -1) * (key("using") * Ct(NameList + Space * "nil") + Ct("")) * sym(")") + Ct("") * Ct(""),

moonscript/parse.moon

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,13 @@ build_grammar = wrap_env debug_grammar, (root) ->
280280
op"*" + op"^" +
281281
Ct(NameList) * (sym"=" * Ct(ExpListLow))^-1) / mark"export"
282282

283-
KeyValue: (sym":" * -SomeSpace * Name * lpeg.Cp!) / self_assign + Ct((KeyName + sym"[" * Exp * sym"]" + DoubleString + SingleString) * symx":" * (Exp + TableBlock + SpaceBreak^1 * Exp))
283+
KeyValue: (sym":" * -SomeSpace * Name * lpeg.Cp!) / self_assign +
284+
Ct(
285+
(KeyName + sym"[" * Exp * sym"]" +Space * DoubleString + Space * SingleString) *
286+
symx":" *
287+
(Exp + TableBlock + SpaceBreak^1 * Exp)
288+
)
289+
284290
KeyValueList: KeyValue * (sym"," * KeyValue)^0
285291
KeyValueLine: CheckIndent * KeyValueList * sym","^-1
286292

spec/inputs/tables.moon

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,22 @@ thing what:
140140
"more"
141141
okay: 123 -- a anon table
142142

143+
144+
--
145+
146+
k = { "hello": "world" }
147+
k = { 'hello': 'world' }
148+
k = { "hello": 'world', "hat": "zat" }
149+
150+
please "hello": "world"
151+
k = "hello": "world", "one": "zone"
152+
153+
f = "one", "two": three, "four"
154+
f = "two": three, "four"
155+
f = { "one", "two": three, "four" }
156+
157+
158+
j = "one", "two": three, "four": five, 6, 7
159+
160+
143161
nil

spec/outputs/tables.lua

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,4 +171,36 @@ thing({
171171
local _ = {
172172
okay = 123
173173
}
174+
local k = {
175+
["hello"] = "world"
176+
}
177+
k = {
178+
['hello'] = 'world'
179+
}
180+
k = {
181+
["hello"] = 'world',
182+
["hat"] = "zat"
183+
}
184+
please({
185+
["hello"] = "world"
186+
})
187+
k = {
188+
["hello"] = "world",
189+
["one"] = "zone"
190+
}
191+
local f = "one", {
192+
["two"] = three
193+
}, "four"
194+
f = {
195+
["two"] = three
196+
}, "four"
197+
f = {
198+
"one",
199+
["two"] = three,
200+
"four"
201+
}
202+
local j = "one", {
203+
["two"] = three,
204+
["four"] = five
205+
}, 6, 7
174206
return nil

0 commit comments

Comments
 (0)