fixing allowing empty functions like () ->

This commit is contained in:
Jeremy Ashkenas 2010-02-15 18:03:00 -05:00
parent 3f6eceac77
commit e7291f57ba
4 changed files with 89 additions and 83 deletions

View File

@ -118,13 +118,13 @@
return new OpNode('!!', $2); return new OpNode('!!', $2);
}), o("- Expression", (function() { }), o("- Expression", (function() {
return new OpNode('-', $2); return new OpNode('-', $2);
})), { }), {
prec: 'UMINUS' prec: 'UMINUS'
}, o("+ Expression", (function() { }), o("+ Expression", (function() {
return new OpNode('+', $2); return new OpNode('+', $2);
})), { }), {
prec: 'UPLUS' prec: 'UPLUS'
}, o("NOT Expression", function() { }), o("NOT Expression", function() {
return new OpNode('not', $2); return new OpNode('not', $2);
}), o("~ Expression", function() { }), o("~ Expression", function() {
return new OpNode('~', $2); return new OpNode('~', $2);
@ -230,7 +230,9 @@
}) })
], ],
// The parameters to a function definition. // The parameters to a function definition.
ParamList: [o("Param", function() { ParamList: [o("", function() {
return [];
}), o("Param", function() {
return [$1]; return [$1];
}), o("ParamList , Param", function() { }), o("ParamList , Param", function() {
return $1.concat([$3]); return $1.concat([$3]);

File diff suppressed because one or more lines are too long

View File

@ -137,8 +137,8 @@ grammar: {
Operation: [ Operation: [
o "! Expression", -> new OpNode('!', $2) o "! Expression", -> new OpNode('!', $2)
o "!! Expression", -> new OpNode('!!', $2) o "!! Expression", -> new OpNode('!!', $2)
o "- Expression", (-> new OpNode('-', $2)), {prec: 'UMINUS'} o("- Expression", (-> new OpNode('-', $2)), {prec: 'UMINUS'})
o "+ Expression", (-> new OpNode('+', $2)), {prec: 'UPLUS'} o("+ Expression", (-> new OpNode('+', $2)), {prec: 'UPLUS'})
o "NOT Expression", -> new OpNode('not', $2) o "NOT Expression", -> new OpNode('not', $2)
o "~ Expression", -> new OpNode('~', $2) o "~ Expression", -> new OpNode('~', $2)
o "-- Expression", -> new OpNode('--', $2) o "-- Expression", -> new OpNode('--', $2)
@ -210,6 +210,7 @@ grammar: {
# The parameters to a function definition. # The parameters to a function definition.
ParamList: [ ParamList: [
o "", -> []
o "Param", -> [$1] o "Param", -> [$1]
o "ParamList , Param", -> $1.concat [$3] o "ParamList , Param", -> $1.concat [$3]
] ]

View File

@ -11,6 +11,7 @@ puts y.x.name is 'x'
# The empty function should not cause a syntax error. # The empty function should not cause a syntax error.
-> ->
() ->
obj: { obj: {