reworking parser for more permissive non-comma-separated array elements.

This commit is contained in:
Jeremy Ashkenas 2010-06-09 00:37:23 -04:00
parent e37056192b
commit 676e893c14
4 changed files with 119 additions and 124 deletions

View File

@ -408,17 +408,13 @@
return [];
}), o("Expression", function() {
return [$1];
}), o("INDENT Expression", function() {
return [$2];
}), o("ArgList , Expression", function() {
return $1.concat([$3]);
}), o("ArgList TERMINATOR Expression", function() {
return $1.concat([$3]);
}), o("ArgList , TERMINATOR Expression", function() {
}), o("ArgList OptComma TERMINATOR Expression", function() {
return $1.concat([$4]);
}), o("ArgList , INDENT Expression", function() {
return $1.concat([$4]);
}), o("ArgList OptComma OUTDENT")
}), o("ArgList OptComma INDENT ArgList OptComma OUTDENT", function() {
return $1.concat($4);
})
],
// Just simple, comma-separated, required arguments (no fancy syntax). We need
// this to be separate from the **ArgList** for use in **Switch** blocks, where

File diff suppressed because one or more lines are too long

View File

@ -363,12 +363,9 @@ grammar: {
ArgList: [
o "", -> []
o "Expression", -> [$1]
o "INDENT Expression", -> [$2]
o "ArgList , Expression", -> $1.concat [$3]
o "ArgList TERMINATOR Expression", -> $1.concat [$3]
o "ArgList , TERMINATOR Expression", -> $1.concat [$4]
o "ArgList , INDENT Expression", -> $1.concat [$4]
o "ArgList OptComma OUTDENT"
o "ArgList OptComma TERMINATOR Expression", -> $1.concat [$4]
o "ArgList OptComma INDENT ArgList OptComma OUTDENT", -> $1.concat $4
]
# Just simple, comma-separated, required arguments (no fancy syntax). We need

View File

@ -99,3 +99,11 @@ obj: {
ok obj.is()
ok not obj.not()
# Funky indentation within non-comma-seperated arrays.
result: [['a']
{b: 'c'}]
ok result[0][0] is 'a'
ok result[1]['b'] is 'c'