From d2c99c490a404d47aa33a3160fa312dd3df547b8 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Tue, 11 Sep 2012 21:54:10 -0700 Subject: [PATCH] start of removing seq args to node(..) --- packages/jsparse/parser.js | 2 +- packages/jsparse/parserlib.js | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/jsparse/parser.js b/packages/jsparse/parser.js index f67d644b36..ebc29f741c 100644 --- a/packages/jsparse/parser.js +++ b/packages/jsparse/parser.js @@ -124,7 +124,7 @@ var parse = function (tokenizer) { var primaryOrFunctionExpression = expecting('expression', - or(node('this', seq(token('this'))), + or(node('this', token('this')), // XXXX remove unnecessary seqs in node(...) args node('identifier', seq(tokenClass('IDENTIFIER'))), node('number', seq(tokenClass('NUMBER'))), node('boolean', seq(tokenClass('BOOLEAN'))), diff --git a/packages/jsparse/parserlib.js b/packages/jsparse/parserlib.js index 2325767f9b..8ccf623ca9 100644 --- a/packages/jsparse/parserlib.js +++ b/packages/jsparse/parserlib.js @@ -163,6 +163,8 @@ var node = function (name, childrenParser) { var children = childrenParser.parse(t); if (! children) return null; + if (! isArray(children)) + children = [children]; return new ParseNode(name, children); }); }; @@ -246,6 +248,7 @@ var unary = function (name, termParser, opParser) { // `x` => ["x"] // `x,y` => ["x", ",", "y"] // `x,y,z` => ["x", ",", "y", ",", "z"] +// Unpacks. var list = function (itemParser, sepParser) { var push = function(array, newThing) { if (isArray(newThing)) @@ -277,6 +280,7 @@ var list = function (itemParser, sepParser) { }); }; +// Unpacks arrays (nested seqs). var seq = function (/*parsers*/) { var args = arguments; if (! args.length)