@weborigami/language 0.0.51 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@
12
12
  //
13
13
 
14
14
  import * as ops from "../runtime/ops.js";
15
- import { makeFunctionCall, makePipeline, makeTemplate } from "./parserHelpers.js";
15
+ import { makeArray, makeFunctionCall, makeObject, makePipeline, makeTemplate } from "./parserHelpers.js";
16
16
 
17
17
  // If a parse result is an object that will be evaluated at runtime, attach the
18
18
  // location of the source code that produced it for debugging and error messages.
@@ -193,45 +193,47 @@ function peg$parse(input, options) {
193
193
  var peg$FAILED = {};
194
194
  var peg$source = options.grammarSource;
195
195
 
196
- var peg$startRuleFunctions = { __: peg$parse__, absoluteFilePath: peg$parseabsoluteFilePath, args: peg$parseargs, array: peg$parsearray, assignment: peg$parseassignment, assignmentOrShorthand: peg$parseassignmentOrShorthand, callTarget: peg$parsecallTarget, closingBrace: peg$parseclosingBrace, closingBracket: peg$parseclosingBracket, closingParen: peg$parseclosingParen, comment: peg$parsecomment, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, escapedChar: peg$parseescapedChar, expr: peg$parseexpr, expression: peg$parseexpression, float: peg$parsefloat, functionComposition: peg$parsefunctionComposition, group: peg$parsegroup, host: peg$parsehost, identifier: peg$parseidentifier, identifierChar: peg$parseidentifierChar, identifierList: peg$parseidentifierList, implicitParensArgs: peg$parseimplicitParensArgs, inlineSpace: peg$parseinlineSpace, integer: peg$parseinteger, lambda: peg$parselambda, leadingSlashPath: peg$parseleadingSlashPath, list: peg$parselist, multiLineComment: peg$parsemultiLineComment, newLine: peg$parsenewLine, number: peg$parsenumber, object: peg$parseobject, objectProperties: peg$parseobjectProperties, objectProperty: peg$parseobjectProperty, objectPropertyOrShorthand: peg$parseobjectPropertyOrShorthand, parameterizedLambda: peg$parseparameterizedLambda, parensArgs: peg$parseparensArgs, pipeline: peg$parsepipeline, path: peg$parsepath, pathKey: peg$parsepathKey, protocolCall: peg$parseprotocolCall, protocol: peg$parseprotocol, reservedProtocol: peg$parsereservedProtocol, scopeReference: peg$parsescopeReference, separator: peg$parseseparator, shebang: peg$parseshebang, sign: peg$parsesign, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, step: peg$parsestep, start: peg$parsestart, string: peg$parsestring, templateDocument: peg$parsetemplateDocument, templateDocumentChar: peg$parsetemplateDocumentChar, templateDocumentContents: peg$parsetemplateDocumentContents, templateDocumentText: peg$parsetemplateDocumentText, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralContents: peg$parsetemplateLiteralContents, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, tree: peg$parsetree, treeAssignments: peg$parsetreeAssignments, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
196
+ var peg$startRuleFunctions = { __: peg$parse__, absoluteFilePath: peg$parseabsoluteFilePath, args: peg$parseargs, array: peg$parsearray, arrayEntries: peg$parsearrayEntries, arrayEntry: peg$parsearrayEntry, callTarget: peg$parsecallTarget, closingBrace: peg$parseclosingBrace, closingBracket: peg$parseclosingBracket, closingParen: peg$parseclosingParen, comment: peg$parsecomment, digits: peg$parsedigits, doubleArrow: peg$parsedoubleArrow, doubleQuoteString: peg$parsedoubleQuoteString, doubleQuoteStringChar: peg$parsedoubleQuoteStringChar, ellipsis: peg$parseellipsis, escapedChar: peg$parseescapedChar, expr: peg$parseexpr, expression: peg$parseexpression, float: peg$parsefloat, functionComposition: peg$parsefunctionComposition, group: peg$parsegroup, host: peg$parsehost, identifier: peg$parseidentifier, identifierChar: peg$parseidentifierChar, identifierList: peg$parseidentifierList, implicitParensArgs: peg$parseimplicitParensArgs, inlineSpace: peg$parseinlineSpace, integer: peg$parseinteger, lambda: peg$parselambda, leadingSlashPath: peg$parseleadingSlashPath, list: peg$parselist, multiLineComment: peg$parsemultiLineComment, newLine: peg$parsenewLine, number: peg$parsenumber, object: peg$parseobject, objectEntries: peg$parseobjectEntries, objectEntry: peg$parseobjectEntry, objectProperty: peg$parseobjectProperty, parameterizedLambda: peg$parseparameterizedLambda, parensArgs: peg$parseparensArgs, pipeline: peg$parsepipeline, path: peg$parsepath, pathKey: peg$parsepathKey, protocolCall: peg$parseprotocolCall, protocol: peg$parseprotocol, reservedProtocol: peg$parsereservedProtocol, scopeReference: peg$parsescopeReference, separator: peg$parseseparator, shebang: peg$parseshebang, sign: peg$parsesign, singleArrow: peg$parsesingleArrow, singleLineComment: peg$parsesingleLineComment, singleQuoteString: peg$parsesingleQuoteString, singleQuoteStringChar: peg$parsesingleQuoteStringChar, spread: peg$parsespread, step: peg$parsestep, start: peg$parsestart, string: peg$parsestring, templateDocument: peg$parsetemplateDocument, templateDocumentChar: peg$parsetemplateDocumentChar, templateDocumentContents: peg$parsetemplateDocumentContents, templateDocumentText: peg$parsetemplateDocumentText, templateLiteral: peg$parsetemplateLiteral, templateLiteralChar: peg$parsetemplateLiteralChar, templateLiteralContents: peg$parsetemplateLiteralContents, templateLiteralText: peg$parsetemplateLiteralText, templateSubstitution: peg$parsetemplateSubstitution, textChar: peg$parsetextChar, tree: peg$parsetree, treeAssignment: peg$parsetreeAssignment, treeEntries: peg$parsetreeEntries, treeEntry: peg$parsetreeEntry, whitespaceWithNewLine: peg$parsewhitespaceWithNewLine };
197
197
  var peg$startRuleFunction = peg$parse__;
198
198
 
199
199
  var peg$c0 = "//";
200
200
  var peg$c1 = "[";
201
- var peg$c2 = "=";
202
- var peg$c3 = "}";
203
- var peg$c4 = "]";
204
- var peg$c5 = ")";
205
- var peg$c6 = "\u21D2";
206
- var peg$c7 = "=>";
207
- var peg$c8 = "\"";
208
- var peg$c9 = "\\";
209
- var peg$c10 = ".";
210
- var peg$c11 = "(";
211
- var peg$c12 = ":";
212
- var peg$c13 = "-";
213
- var peg$c14 = ">";
214
- var peg$c15 = "/";
215
- var peg$c16 = "/*";
216
- var peg$c17 = "*/";
217
- var peg$c18 = "\n";
218
- var peg$c19 = "\r\n";
219
- var peg$c20 = "\r";
220
- var peg$c21 = "{";
221
- var peg$c22 = "https";
222
- var peg$c23 = "http";
223
- var peg$c24 = "new";
224
- var peg$c25 = "package";
225
- var peg$c26 = "treehttps";
226
- var peg$c27 = "treehttp";
227
- var peg$c28 = "tree";
228
- var peg$c29 = ",";
229
- var peg$c30 = "#!";
230
- var peg$c31 = "\u2192";
231
- var peg$c32 = "->";
232
- var peg$c33 = "'";
233
- var peg$c34 = "${";
234
- var peg$c35 = "`";
201
+ var peg$c2 = "}";
202
+ var peg$c3 = "]";
203
+ var peg$c4 = ")";
204
+ var peg$c5 = "\u21D2";
205
+ var peg$c6 = "=>";
206
+ var peg$c7 = "\"";
207
+ var peg$c8 = "...";
208
+ var peg$c9 = "\u2026";
209
+ var peg$c10 = "\\";
210
+ var peg$c11 = ".";
211
+ var peg$c12 = "(";
212
+ var peg$c13 = ":";
213
+ var peg$c14 = "-";
214
+ var peg$c15 = ">";
215
+ var peg$c16 = "=";
216
+ var peg$c17 = "/";
217
+ var peg$c18 = "/*";
218
+ var peg$c19 = "*/";
219
+ var peg$c20 = "\n";
220
+ var peg$c21 = "\r\n";
221
+ var peg$c22 = "\r";
222
+ var peg$c23 = "{";
223
+ var peg$c24 = "https";
224
+ var peg$c25 = "http";
225
+ var peg$c26 = "new";
226
+ var peg$c27 = "package";
227
+ var peg$c28 = "treehttps";
228
+ var peg$c29 = "treehttp";
229
+ var peg$c30 = "tree";
230
+ var peg$c31 = ",";
231
+ var peg$c32 = "#!";
232
+ var peg$c33 = "\u2192";
233
+ var peg$c34 = "->";
234
+ var peg$c35 = "'";
235
+ var peg$c36 = "${";
236
+ var peg$c37 = "`";
235
237
 
236
238
  var peg$r0 = /^[0-9]/;
237
239
  var peg$r1 = /^[^(){}[\]<>\-=,\/:`"'\\ \u2192\u21D2\t\n\r]/;
@@ -244,19 +246,19 @@ function peg$parse(input, options) {
244
246
  var peg$e2 = peg$otherExpectation("function arguments");
245
247
  var peg$e3 = peg$otherExpectation("array");
246
248
  var peg$e4 = peg$literalExpectation("[", false);
247
- var peg$e5 = peg$otherExpectation("tree assignment");
248
- var peg$e6 = peg$literalExpectation("=", false);
249
- var peg$e7 = peg$otherExpectation("function call");
250
- var peg$e8 = peg$literalExpectation("}", false);
251
- var peg$e9 = peg$anyExpectation();
252
- var peg$e10 = peg$literalExpectation("]", false);
253
- var peg$e11 = peg$literalExpectation(")", false);
254
- var peg$e12 = peg$otherExpectation("comment");
255
- var peg$e13 = peg$classExpectation([["0", "9"]], false, false);
256
- var peg$e14 = peg$literalExpectation("\u21D2", false);
257
- var peg$e15 = peg$literalExpectation("=>", false);
258
- var peg$e16 = peg$otherExpectation("double quote string");
259
- var peg$e17 = peg$literalExpectation("\"", false);
249
+ var peg$e5 = peg$otherExpectation("function call");
250
+ var peg$e6 = peg$literalExpectation("}", false);
251
+ var peg$e7 = peg$anyExpectation();
252
+ var peg$e8 = peg$literalExpectation("]", false);
253
+ var peg$e9 = peg$literalExpectation(")", false);
254
+ var peg$e10 = peg$otherExpectation("comment");
255
+ var peg$e11 = peg$classExpectation([["0", "9"]], false, false);
256
+ var peg$e12 = peg$literalExpectation("\u21D2", false);
257
+ var peg$e13 = peg$literalExpectation("=>", false);
258
+ var peg$e14 = peg$otherExpectation("double quote string");
259
+ var peg$e15 = peg$literalExpectation("\"", false);
260
+ var peg$e16 = peg$literalExpectation("...", false);
261
+ var peg$e17 = peg$literalExpectation("\u2026", false);
260
262
  var peg$e18 = peg$otherExpectation("backslash-escaped character");
261
263
  var peg$e19 = peg$literalExpectation("\\", false);
262
264
  var peg$e20 = peg$otherExpectation("Origami expression");
@@ -275,48 +277,50 @@ function peg$parse(input, options) {
275
277
  var peg$e33 = peg$classExpectation([" ", "\t"], false, false);
276
278
  var peg$e34 = peg$otherExpectation("integer");
277
279
  var peg$e35 = peg$otherExpectation("lambda function");
278
- var peg$e36 = peg$otherExpectation("path with a leading slash");
279
- var peg$e37 = peg$literalExpectation("/", false);
280
- var peg$e38 = peg$otherExpectation("list");
281
- var peg$e39 = peg$literalExpectation("/*", false);
282
- var peg$e40 = peg$literalExpectation("*/", false);
283
- var peg$e41 = peg$literalExpectation("\n", false);
284
- var peg$e42 = peg$literalExpectation("\r\n", false);
285
- var peg$e43 = peg$literalExpectation("\r", false);
286
- var peg$e44 = peg$otherExpectation("number");
287
- var peg$e45 = peg$otherExpectation("object literal");
288
- var peg$e46 = peg$literalExpectation("{", false);
289
- var peg$e47 = peg$otherExpectation("object property");
290
- var peg$e48 = peg$otherExpectation("function arguments in parentheses");
291
- var peg$e49 = peg$otherExpectation("slash-separated path");
292
- var peg$e50 = peg$otherExpectation("path element");
293
- var peg$e51 = peg$otherExpectation("function call using protocol: syntax");
294
- var peg$e52 = peg$otherExpectation("protocol");
295
- var peg$e53 = peg$otherExpectation("reserved protocol");
296
- var peg$e54 = peg$literalExpectation("https", false);
297
- var peg$e55 = peg$literalExpectation("http", false);
298
- var peg$e56 = peg$literalExpectation("new", false);
299
- var peg$e57 = peg$literalExpectation("package", false);
300
- var peg$e58 = peg$literalExpectation("treehttps", false);
301
- var peg$e59 = peg$literalExpectation("treehttp", false);
302
- var peg$e60 = peg$literalExpectation("tree", false);
303
- var peg$e61 = peg$otherExpectation("scope reference");
304
- var peg$e62 = peg$literalExpectation(",", false);
305
- var peg$e63 = peg$literalExpectation("#!", false);
306
- var peg$e64 = peg$classExpectation(["\n", "\r"], true, false);
307
- var peg$e65 = peg$classExpectation(["+", "-"], false, false);
308
- var peg$e66 = peg$literalExpectation("\u2192", false);
309
- var peg$e67 = peg$literalExpectation("->", false);
310
- var peg$e68 = peg$otherExpectation("single quote string");
311
- var peg$e69 = peg$literalExpectation("'", false);
312
- var peg$e70 = peg$otherExpectation("string");
313
- var peg$e71 = peg$otherExpectation("template");
314
- var peg$e72 = peg$literalExpectation("${", false);
315
- var peg$e73 = peg$otherExpectation("template text");
316
- var peg$e74 = peg$otherExpectation("template literal");
317
- var peg$e75 = peg$literalExpectation("`", false);
318
- var peg$e76 = peg$otherExpectation("template substitution");
319
- var peg$e77 = peg$otherExpectation("tree literal");
280
+ var peg$e36 = peg$literalExpectation("=", false);
281
+ var peg$e37 = peg$otherExpectation("path with a leading slash");
282
+ var peg$e38 = peg$literalExpectation("/", false);
283
+ var peg$e39 = peg$otherExpectation("list");
284
+ var peg$e40 = peg$literalExpectation("/*", false);
285
+ var peg$e41 = peg$literalExpectation("*/", false);
286
+ var peg$e42 = peg$literalExpectation("\n", false);
287
+ var peg$e43 = peg$literalExpectation("\r\n", false);
288
+ var peg$e44 = peg$literalExpectation("\r", false);
289
+ var peg$e45 = peg$otherExpectation("number");
290
+ var peg$e46 = peg$otherExpectation("object literal");
291
+ var peg$e47 = peg$literalExpectation("{", false);
292
+ var peg$e48 = peg$otherExpectation("object property");
293
+ var peg$e49 = peg$otherExpectation("function arguments in parentheses");
294
+ var peg$e50 = peg$otherExpectation("slash-separated path");
295
+ var peg$e51 = peg$otherExpectation("path element");
296
+ var peg$e52 = peg$otherExpectation("function call using protocol: syntax");
297
+ var peg$e53 = peg$otherExpectation("protocol");
298
+ var peg$e54 = peg$otherExpectation("reserved protocol");
299
+ var peg$e55 = peg$literalExpectation("https", false);
300
+ var peg$e56 = peg$literalExpectation("http", false);
301
+ var peg$e57 = peg$literalExpectation("new", false);
302
+ var peg$e58 = peg$literalExpectation("package", false);
303
+ var peg$e59 = peg$literalExpectation("treehttps", false);
304
+ var peg$e60 = peg$literalExpectation("treehttp", false);
305
+ var peg$e61 = peg$literalExpectation("tree", false);
306
+ var peg$e62 = peg$otherExpectation("scope reference");
307
+ var peg$e63 = peg$literalExpectation(",", false);
308
+ var peg$e64 = peg$literalExpectation("#!", false);
309
+ var peg$e65 = peg$classExpectation(["\n", "\r"], true, false);
310
+ var peg$e66 = peg$classExpectation(["+", "-"], false, false);
311
+ var peg$e67 = peg$literalExpectation("\u2192", false);
312
+ var peg$e68 = peg$literalExpectation("->", false);
313
+ var peg$e69 = peg$otherExpectation("single quote string");
314
+ var peg$e70 = peg$literalExpectation("'", false);
315
+ var peg$e71 = peg$otherExpectation("string");
316
+ var peg$e72 = peg$otherExpectation("template");
317
+ var peg$e73 = peg$literalExpectation("${", false);
318
+ var peg$e74 = peg$otherExpectation("template text");
319
+ var peg$e75 = peg$otherExpectation("template literal");
320
+ var peg$e76 = peg$literalExpectation("`", false);
321
+ var peg$e77 = peg$otherExpectation("template substitution");
322
+ var peg$e78 = peg$otherExpectation("tree literal");
323
+ var peg$e79 = peg$otherExpectation("tree assignment");
320
324
 
321
325
  var peg$f0 = function() { return ""; };
322
326
  var peg$f1 = function(path) {
@@ -325,73 +329,71 @@ function peg$parse(input, options) {
325
329
  var peg$f2 = function(path) {
326
330
  return annotate([ops.traverse, ...path], location());
327
331
  };
328
- var peg$f3 = function(list) {
329
- return annotate([ops.array, ...(list ?? [])], location());
332
+ var peg$f3 = function(entries) {
333
+ return annotate(makeArray(entries ?? []), location());
330
334
  };
331
- var peg$f4 = function(key) {
332
- return annotate([key, [ops.inherited, key]], location());
333
- };
334
- var peg$f5 = function() {
335
+ var peg$f4 = function() {
335
336
  error("Expected right curly brace");
336
337
  };
337
- var peg$f6 = function() {
338
+ var peg$f5 = function() {
338
339
  error("Expected right bracket");
339
340
  };
340
- var peg$f7 = function() {
341
+ var peg$f6 = function() {
341
342
  error("Expected right parenthesis");
342
343
  };
343
- var peg$f8 = function(chars) { return chars.join(""); };
344
- var peg$f9 = function() {
344
+ var peg$f7 = function(chars) { return chars.join(""); };
345
+ var peg$f8 = function() {
345
346
  return parseFloat(text());
346
347
  };
347
- var peg$f10 = function(target, chain, end) {
348
+ var peg$f9 = function(target, chain, end) {
348
349
  if (end) {
349
350
  chain.push(end);
350
351
  }
351
352
  return annotate(makeFunctionCall(target, chain), location());
352
353
  };
353
- var peg$f11 = function() { return text(); };
354
- var peg$f12 = function(chars) { return chars.join(""); };
355
- var peg$f13 = function() {
354
+ var peg$f10 = function() { return text(); };
355
+ var peg$f11 = function(chars) { return chars.join(""); };
356
+ var peg$f12 = function() {
356
357
  return parseInt(text());
357
358
  };
358
- var peg$f14 = function(expr) {
359
+ var peg$f13 = function(expr) {
359
360
  return annotate([ops.lambda, null, expr], location());
360
361
  };
361
- var peg$f15 = function() { return annotate([""], location()); };
362
- var peg$f16 = function() { return null; };
363
- var peg$f17 = function(properties) {
364
- return annotate([ops.object, ...(properties ?? [])], location());
362
+ var peg$f14 = function() { return annotate([""], location()); };
363
+ var peg$f15 = function() { return null; };
364
+ var peg$f16 = function(entries) {
365
+ return annotate(makeObject(entries ?? [], ops.object), location());
365
366
  };
366
- var peg$f18 = function(key) {
367
+ var peg$f17 = function(key) {
367
368
  return annotate([key, [ops.scope, key]], location());
368
369
  };
369
- var peg$f19 = function(parameters, expr) {
370
+ var peg$f18 = function(parameters, expr) {
370
371
  return annotate([ops.lambda, parameters ?? [], expr], location());
371
372
  };
372
- var peg$f20 = function(list) {
373
+ var peg$f19 = function(list) {
373
374
  return list ?? annotate([undefined], location());
374
375
  };
375
- var peg$f21 = function(steps) {
376
+ var peg$f20 = function(steps) {
376
377
  return annotate(makePipeline(steps), location());
377
378
  };
378
- var peg$f22 = function(key) { return key.join(""); };
379
- var peg$f23 = function(protocol, host, path) {
379
+ var peg$f21 = function(key) { return key.join(""); };
380
+ var peg$f22 = function(protocol, host, path) {
380
381
  return annotate([protocol, host, ...(path ?? [])], location());
381
382
  };
382
- var peg$f24 = function() { return ops.https; };
383
- var peg$f25 = function() { return ops.http; };
384
- var peg$f26 = function() { return ops.constructor; };
385
- var peg$f27 = function() { return [ops.scope, "@package"] };
386
- var peg$f28 = function() { return ops.treeHttps; };
387
- var peg$f29 = function() { return ops.treeHttp; };
388
- var peg$f30 = function() { return ops.treeHttps; };
389
- var peg$f31 = function(key) {
383
+ var peg$f23 = function() { return ops.https; };
384
+ var peg$f24 = function() { return ops.http; };
385
+ var peg$f25 = function() { return ops.constructor; };
386
+ var peg$f26 = function() { return [ops.scope, "@package"] };
387
+ var peg$f27 = function() { return ops.treeHttps; };
388
+ var peg$f28 = function() { return ops.treeHttp; };
389
+ var peg$f29 = function() { return ops.treeHttps; };
390
+ var peg$f30 = function(key) {
390
391
  return annotate([ops.scope, key], location());
391
392
  };
393
+ var peg$f31 = function() { return null; };
392
394
  var peg$f32 = function() { return null; };
393
- var peg$f33 = function() { return null; };
394
- var peg$f34 = function(chars) { return chars.join(""); };
395
+ var peg$f33 = function(chars) { return chars.join(""); };
396
+ var peg$f34 = function(expr) { return [ops.spread, expr]; };
395
397
  var peg$f35 = function(contents) {
396
398
  return annotate([ops.lambda, null, contents], location());
397
399
  };
@@ -403,8 +405,11 @@ function peg$parse(input, options) {
403
405
  return annotate(makeTemplate(parts), location());
404
406
  };
405
407
  var peg$f39 = function(chars) { return chars.join(""); };
406
- var peg$f40 = function(assignments) {
407
- return annotate([ops.tree, ...(assignments ?? [])], location());
408
+ var peg$f40 = function(entries) {
409
+ return annotate(makeObject(entries ?? [], ops.tree), location());
410
+ };
411
+ var peg$f41 = function(key) {
412
+ return annotate([key, [ops.inherited, key]], location());
408
413
  };
409
414
  var peg$currPos = options.peg$currPos | 0;
410
415
  var peg$savedPos = peg$currPos;
@@ -677,7 +682,7 @@ function peg$parse(input, options) {
677
682
  }
678
683
  if (s1 !== peg$FAILED) {
679
684
  s2 = peg$parse__();
680
- s3 = peg$parselist();
685
+ s3 = peg$parsearrayEntries();
681
686
  if (s3 === peg$FAILED) {
682
687
  s3 = null;
683
688
  }
@@ -703,59 +708,55 @@ function peg$parse(input, options) {
703
708
  return s0;
704
709
  }
705
710
 
706
- function peg$parseassignment() {
707
- var s0, s1, s2, s3, s4, s5;
711
+ function peg$parsearrayEntries() {
712
+ var s0, s1, s2, s3, s4;
708
713
 
709
- peg$silentFails++;
710
714
  s0 = peg$currPos;
711
- s1 = peg$parseidentifier();
712
- if (s1 !== peg$FAILED) {
713
- s2 = peg$parse__();
714
- if (input.charCodeAt(peg$currPos) === 61) {
715
- s3 = peg$c2;
716
- peg$currPos++;
717
- } else {
718
- s3 = peg$FAILED;
719
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
720
- }
721
- if (s3 !== peg$FAILED) {
722
- s4 = peg$parse__();
723
- s5 = peg$parsepipeline();
724
- if (s5 !== peg$FAILED) {
725
- s0 = [ s1, s5 ];
715
+ s1 = peg$currPos;
716
+ s2 = [];
717
+ s3 = peg$parsearrayEntry();
718
+ while (s3 !== peg$FAILED) {
719
+ s2.push(s3);
720
+ s3 = peg$currPos;
721
+ s4 = peg$parseseparator();
722
+ if (s4 !== peg$FAILED) {
723
+ s4 = peg$parsearrayEntry();
724
+ if (s4 === peg$FAILED) {
725
+ peg$currPos = s3;
726
+ s3 = peg$FAILED;
726
727
  } else {
727
- peg$currPos = s0;
728
- s0 = peg$FAILED;
728
+ s3 = s4;
729
729
  }
730
730
  } else {
731
- peg$currPos = s0;
732
- s0 = peg$FAILED;
731
+ s3 = s4;
732
+ }
733
+ }
734
+ if (s2.length < 1) {
735
+ peg$currPos = s1;
736
+ s1 = peg$FAILED;
737
+ } else {
738
+ s1 = s2;
739
+ }
740
+ if (s1 !== peg$FAILED) {
741
+ s2 = peg$parseseparator();
742
+ if (s2 === peg$FAILED) {
743
+ s2 = null;
733
744
  }
745
+ s0 = s1;
734
746
  } else {
735
747
  peg$currPos = s0;
736
748
  s0 = peg$FAILED;
737
749
  }
738
- peg$silentFails--;
739
- if (s0 === peg$FAILED) {
740
- s1 = peg$FAILED;
741
- if (peg$silentFails === 0) { peg$fail(peg$e5); }
742
- }
743
750
 
744
751
  return s0;
745
752
  }
746
753
 
747
- function peg$parseassignmentOrShorthand() {
748
- var s0, s1;
754
+ function peg$parsearrayEntry() {
755
+ var s0;
749
756
 
750
- s0 = peg$parseassignment();
757
+ s0 = peg$parsespread();
751
758
  if (s0 === peg$FAILED) {
752
- s0 = peg$currPos;
753
- s1 = peg$parseidentifier();
754
- if (s1 !== peg$FAILED) {
755
- peg$savedPos = s0;
756
- s1 = peg$f4(s1);
757
- }
758
- s0 = s1;
759
+ s0 = peg$parsepipeline();
759
760
  }
760
761
 
761
762
  return s0;
@@ -793,7 +794,7 @@ function peg$parse(input, options) {
793
794
  peg$silentFails--;
794
795
  if (s0 === peg$FAILED) {
795
796
  s1 = peg$FAILED;
796
- if (peg$silentFails === 0) { peg$fail(peg$e7); }
797
+ if (peg$silentFails === 0) { peg$fail(peg$e5); }
797
798
  }
798
799
 
799
800
  return s0;
@@ -803,11 +804,11 @@ function peg$parse(input, options) {
803
804
  var s0, s1;
804
805
 
805
806
  if (input.charCodeAt(peg$currPos) === 125) {
806
- s0 = peg$c3;
807
+ s0 = peg$c2;
807
808
  peg$currPos++;
808
809
  } else {
809
810
  s0 = peg$FAILED;
810
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
811
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
811
812
  }
812
813
  if (s0 === peg$FAILED) {
813
814
  s0 = peg$currPos;
@@ -816,13 +817,13 @@ function peg$parse(input, options) {
816
817
  peg$currPos++;
817
818
  } else {
818
819
  s1 = peg$FAILED;
819
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
820
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
820
821
  }
821
822
  if (s1 === peg$FAILED) {
822
823
  s1 = null;
823
824
  }
824
825
  peg$savedPos = s0;
825
- s1 = peg$f5();
826
+ s1 = peg$f4();
826
827
  s0 = s1;
827
828
  }
828
829
 
@@ -833,11 +834,11 @@ function peg$parse(input, options) {
833
834
  var s0, s1;
834
835
 
835
836
  if (input.charCodeAt(peg$currPos) === 93) {
836
- s0 = peg$c4;
837
+ s0 = peg$c3;
837
838
  peg$currPos++;
838
839
  } else {
839
840
  s0 = peg$FAILED;
840
- if (peg$silentFails === 0) { peg$fail(peg$e10); }
841
+ if (peg$silentFails === 0) { peg$fail(peg$e8); }
841
842
  }
842
843
  if (s0 === peg$FAILED) {
843
844
  s0 = peg$currPos;
@@ -846,13 +847,13 @@ function peg$parse(input, options) {
846
847
  peg$currPos++;
847
848
  } else {
848
849
  s1 = peg$FAILED;
849
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
850
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
850
851
  }
851
852
  if (s1 === peg$FAILED) {
852
853
  s1 = null;
853
854
  }
854
855
  peg$savedPos = s0;
855
- s1 = peg$f6();
856
+ s1 = peg$f5();
856
857
  s0 = s1;
857
858
  }
858
859
 
@@ -863,11 +864,11 @@ function peg$parse(input, options) {
863
864
  var s0, s1;
864
865
 
865
866
  if (input.charCodeAt(peg$currPos) === 41) {
866
- s0 = peg$c5;
867
+ s0 = peg$c4;
867
868
  peg$currPos++;
868
869
  } else {
869
870
  s0 = peg$FAILED;
870
- if (peg$silentFails === 0) { peg$fail(peg$e11); }
871
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
871
872
  }
872
873
  if (s0 === peg$FAILED) {
873
874
  s0 = peg$currPos;
@@ -876,13 +877,13 @@ function peg$parse(input, options) {
876
877
  peg$currPos++;
877
878
  } else {
878
879
  s1 = peg$FAILED;
879
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
880
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
880
881
  }
881
882
  if (s1 === peg$FAILED) {
882
883
  s1 = null;
883
884
  }
884
885
  peg$savedPos = s0;
885
- s1 = peg$f7();
886
+ s1 = peg$f6();
886
887
  s0 = s1;
887
888
  }
888
889
 
@@ -900,7 +901,7 @@ function peg$parse(input, options) {
900
901
  peg$silentFails--;
901
902
  if (s0 === peg$FAILED) {
902
903
  s1 = peg$FAILED;
903
- if (peg$silentFails === 0) { peg$fail(peg$e12); }
904
+ if (peg$silentFails === 0) { peg$fail(peg$e10); }
904
905
  }
905
906
 
906
907
  return s0;
@@ -916,7 +917,7 @@ function peg$parse(input, options) {
916
917
  peg$currPos++;
917
918
  } else {
918
919
  s2 = peg$FAILED;
919
- if (peg$silentFails === 0) { peg$fail(peg$e13); }
920
+ if (peg$silentFails === 0) { peg$fail(peg$e11); }
920
921
  }
921
922
  if (s2 !== peg$FAILED) {
922
923
  while (s2 !== peg$FAILED) {
@@ -926,7 +927,7 @@ function peg$parse(input, options) {
926
927
  peg$currPos++;
927
928
  } else {
928
929
  s2 = peg$FAILED;
929
- if (peg$silentFails === 0) { peg$fail(peg$e13); }
930
+ if (peg$silentFails === 0) { peg$fail(peg$e11); }
930
931
  }
931
932
  }
932
933
  } else {
@@ -946,19 +947,19 @@ function peg$parse(input, options) {
946
947
  var s0;
947
948
 
948
949
  if (input.charCodeAt(peg$currPos) === 8658) {
949
- s0 = peg$c6;
950
+ s0 = peg$c5;
950
951
  peg$currPos++;
951
952
  } else {
952
953
  s0 = peg$FAILED;
953
- if (peg$silentFails === 0) { peg$fail(peg$e14); }
954
+ if (peg$silentFails === 0) { peg$fail(peg$e12); }
954
955
  }
955
956
  if (s0 === peg$FAILED) {
956
- if (input.substr(peg$currPos, 2) === peg$c7) {
957
- s0 = peg$c7;
957
+ if (input.substr(peg$currPos, 2) === peg$c6) {
958
+ s0 = peg$c6;
958
959
  peg$currPos += 2;
959
960
  } else {
960
961
  s0 = peg$FAILED;
961
- if (peg$silentFails === 0) { peg$fail(peg$e15); }
962
+ if (peg$silentFails === 0) { peg$fail(peg$e13); }
962
963
  }
963
964
  }
964
965
 
@@ -971,11 +972,11 @@ function peg$parse(input, options) {
971
972
  peg$silentFails++;
972
973
  s0 = peg$currPos;
973
974
  if (input.charCodeAt(peg$currPos) === 34) {
974
- s1 = peg$c8;
975
+ s1 = peg$c7;
975
976
  peg$currPos++;
976
977
  } else {
977
978
  s1 = peg$FAILED;
978
- if (peg$silentFails === 0) { peg$fail(peg$e17); }
979
+ if (peg$silentFails === 0) { peg$fail(peg$e15); }
979
980
  }
980
981
  if (s1 !== peg$FAILED) {
981
982
  s2 = [];
@@ -985,15 +986,15 @@ function peg$parse(input, options) {
985
986
  s3 = peg$parsedoubleQuoteStringChar();
986
987
  }
987
988
  if (input.charCodeAt(peg$currPos) === 34) {
988
- s3 = peg$c8;
989
+ s3 = peg$c7;
989
990
  peg$currPos++;
990
991
  } else {
991
992
  s3 = peg$FAILED;
992
- if (peg$silentFails === 0) { peg$fail(peg$e17); }
993
+ if (peg$silentFails === 0) { peg$fail(peg$e15); }
993
994
  }
994
995
  if (s3 !== peg$FAILED) {
995
996
  peg$savedPos = s0;
996
- s0 = peg$f8(s2);
997
+ s0 = peg$f7(s2);
997
998
  } else {
998
999
  peg$currPos = s0;
999
1000
  s0 = peg$FAILED;
@@ -1005,7 +1006,7 @@ function peg$parse(input, options) {
1005
1006
  peg$silentFails--;
1006
1007
  if (s0 === peg$FAILED) {
1007
1008
  s1 = peg$FAILED;
1008
- if (peg$silentFails === 0) { peg$fail(peg$e16); }
1009
+ if (peg$silentFails === 0) { peg$fail(peg$e14); }
1009
1010
  }
1010
1011
 
1011
1012
  return s0;
@@ -1018,11 +1019,11 @@ function peg$parse(input, options) {
1018
1019
  s1 = peg$currPos;
1019
1020
  peg$silentFails++;
1020
1021
  if (input.charCodeAt(peg$currPos) === 34) {
1021
- s2 = peg$c8;
1022
+ s2 = peg$c7;
1022
1023
  peg$currPos++;
1023
1024
  } else {
1024
1025
  s2 = peg$FAILED;
1025
- if (peg$silentFails === 0) { peg$fail(peg$e17); }
1026
+ if (peg$silentFails === 0) { peg$fail(peg$e15); }
1026
1027
  }
1027
1028
  if (s2 === peg$FAILED) {
1028
1029
  s2 = peg$parsenewLine();
@@ -1050,13 +1051,36 @@ function peg$parse(input, options) {
1050
1051
  return s0;
1051
1052
  }
1052
1053
 
1054
+ function peg$parseellipsis() {
1055
+ var s0;
1056
+
1057
+ if (input.substr(peg$currPos, 3) === peg$c8) {
1058
+ s0 = peg$c8;
1059
+ peg$currPos += 3;
1060
+ } else {
1061
+ s0 = peg$FAILED;
1062
+ if (peg$silentFails === 0) { peg$fail(peg$e16); }
1063
+ }
1064
+ if (s0 === peg$FAILED) {
1065
+ if (input.charCodeAt(peg$currPos) === 8230) {
1066
+ s0 = peg$c9;
1067
+ peg$currPos++;
1068
+ } else {
1069
+ s0 = peg$FAILED;
1070
+ if (peg$silentFails === 0) { peg$fail(peg$e17); }
1071
+ }
1072
+ }
1073
+
1074
+ return s0;
1075
+ }
1076
+
1053
1077
  function peg$parseescapedChar() {
1054
1078
  var s0, s1, s2;
1055
1079
 
1056
1080
  peg$silentFails++;
1057
1081
  s0 = peg$currPos;
1058
1082
  if (input.charCodeAt(peg$currPos) === 92) {
1059
- s1 = peg$c9;
1083
+ s1 = peg$c10;
1060
1084
  peg$currPos++;
1061
1085
  } else {
1062
1086
  s1 = peg$FAILED;
@@ -1068,7 +1092,7 @@ function peg$parse(input, options) {
1068
1092
  peg$currPos++;
1069
1093
  } else {
1070
1094
  s2 = peg$FAILED;
1071
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
1095
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
1072
1096
  }
1073
1097
  if (s2 !== peg$FAILED) {
1074
1098
  s0 = s2;
@@ -1138,7 +1162,7 @@ function peg$parse(input, options) {
1138
1162
  s2 = null;
1139
1163
  }
1140
1164
  if (input.charCodeAt(peg$currPos) === 46) {
1141
- s3 = peg$c10;
1165
+ s3 = peg$c11;
1142
1166
  peg$currPos++;
1143
1167
  } else {
1144
1168
  s3 = peg$FAILED;
@@ -1148,7 +1172,7 @@ function peg$parse(input, options) {
1148
1172
  s4 = peg$parsedigits();
1149
1173
  if (s4 !== peg$FAILED) {
1150
1174
  peg$savedPos = s0;
1151
- s0 = peg$f9();
1175
+ s0 = peg$f8();
1152
1176
  } else {
1153
1177
  peg$currPos = s0;
1154
1178
  s0 = peg$FAILED;
@@ -1184,7 +1208,7 @@ function peg$parse(input, options) {
1184
1208
  s3 = null;
1185
1209
  }
1186
1210
  peg$savedPos = s0;
1187
- s0 = peg$f10(s1, s2, s3);
1211
+ s0 = peg$f9(s1, s2, s3);
1188
1212
  } else {
1189
1213
  peg$currPos = s0;
1190
1214
  s0 = peg$FAILED;
@@ -1204,7 +1228,7 @@ function peg$parse(input, options) {
1204
1228
  peg$silentFails++;
1205
1229
  s0 = peg$currPos;
1206
1230
  if (input.charCodeAt(peg$currPos) === 40) {
1207
- s1 = peg$c11;
1231
+ s1 = peg$c12;
1208
1232
  peg$currPos++;
1209
1233
  } else {
1210
1234
  s1 = peg$FAILED;
@@ -1248,7 +1272,7 @@ function peg$parse(input, options) {
1248
1272
  if (s1 !== peg$FAILED) {
1249
1273
  s2 = peg$currPos;
1250
1274
  if (input.charCodeAt(peg$currPos) === 58) {
1251
- s3 = peg$c12;
1275
+ s3 = peg$c13;
1252
1276
  peg$currPos++;
1253
1277
  } else {
1254
1278
  s3 = peg$FAILED;
@@ -1271,7 +1295,7 @@ function peg$parse(input, options) {
1271
1295
  s2 = null;
1272
1296
  }
1273
1297
  peg$savedPos = s0;
1274
- s0 = peg$f11();
1298
+ s0 = peg$f10();
1275
1299
  } else {
1276
1300
  peg$currPos = s0;
1277
1301
  s0 = peg$FAILED;
@@ -1302,7 +1326,7 @@ function peg$parse(input, options) {
1302
1326
  }
1303
1327
  if (s1 !== peg$FAILED) {
1304
1328
  peg$savedPos = s0;
1305
- s1 = peg$f12(s1);
1329
+ s1 = peg$f11(s1);
1306
1330
  }
1307
1331
  s0 = s1;
1308
1332
  peg$silentFails--;
@@ -1327,7 +1351,7 @@ function peg$parse(input, options) {
1327
1351
  if (s0 === peg$FAILED) {
1328
1352
  s0 = peg$currPos;
1329
1353
  if (input.charCodeAt(peg$currPos) === 45) {
1330
- s1 = peg$c13;
1354
+ s1 = peg$c14;
1331
1355
  peg$currPos++;
1332
1356
  } else {
1333
1357
  s1 = peg$FAILED;
@@ -1337,7 +1361,7 @@ function peg$parse(input, options) {
1337
1361
  s2 = peg$currPos;
1338
1362
  peg$silentFails++;
1339
1363
  if (input.charCodeAt(peg$currPos) === 62) {
1340
- s3 = peg$c14;
1364
+ s3 = peg$c15;
1341
1365
  peg$currPos++;
1342
1366
  } else {
1343
1367
  s3 = peg$FAILED;
@@ -1473,7 +1497,7 @@ function peg$parse(input, options) {
1473
1497
  s2 = peg$parsedigits();
1474
1498
  if (s2 !== peg$FAILED) {
1475
1499
  peg$savedPos = s0;
1476
- s0 = peg$f13();
1500
+ s0 = peg$f12();
1477
1501
  } else {
1478
1502
  peg$currPos = s0;
1479
1503
  s0 = peg$FAILED;
@@ -1493,18 +1517,18 @@ function peg$parse(input, options) {
1493
1517
  peg$silentFails++;
1494
1518
  s0 = peg$currPos;
1495
1519
  if (input.charCodeAt(peg$currPos) === 61) {
1496
- s1 = peg$c2;
1520
+ s1 = peg$c16;
1497
1521
  peg$currPos++;
1498
1522
  } else {
1499
1523
  s1 = peg$FAILED;
1500
- if (peg$silentFails === 0) { peg$fail(peg$e6); }
1524
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
1501
1525
  }
1502
1526
  if (s1 !== peg$FAILED) {
1503
1527
  s2 = peg$parse__();
1504
1528
  s3 = peg$parsepipeline();
1505
1529
  if (s3 !== peg$FAILED) {
1506
1530
  peg$savedPos = s0;
1507
- s0 = peg$f14(s3);
1531
+ s0 = peg$f13(s3);
1508
1532
  } else {
1509
1533
  peg$currPos = s0;
1510
1534
  s0 = peg$FAILED;
@@ -1528,11 +1552,11 @@ function peg$parse(input, options) {
1528
1552
  peg$silentFails++;
1529
1553
  s0 = peg$currPos;
1530
1554
  if (input.charCodeAt(peg$currPos) === 47) {
1531
- s1 = peg$c15;
1555
+ s1 = peg$c17;
1532
1556
  peg$currPos++;
1533
1557
  } else {
1534
1558
  s1 = peg$FAILED;
1535
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
1559
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
1536
1560
  }
1537
1561
  if (s1 !== peg$FAILED) {
1538
1562
  s2 = peg$parsepath();
@@ -1544,22 +1568,22 @@ function peg$parse(input, options) {
1544
1568
  if (s0 === peg$FAILED) {
1545
1569
  s0 = peg$currPos;
1546
1570
  if (input.charCodeAt(peg$currPos) === 47) {
1547
- s1 = peg$c15;
1571
+ s1 = peg$c17;
1548
1572
  peg$currPos++;
1549
1573
  } else {
1550
1574
  s1 = peg$FAILED;
1551
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
1575
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
1552
1576
  }
1553
1577
  if (s1 !== peg$FAILED) {
1554
1578
  peg$savedPos = s0;
1555
- s1 = peg$f15();
1579
+ s1 = peg$f14();
1556
1580
  }
1557
1581
  s0 = s1;
1558
1582
  }
1559
1583
  peg$silentFails--;
1560
1584
  if (s0 === peg$FAILED) {
1561
1585
  s1 = peg$FAILED;
1562
- if (peg$silentFails === 0) { peg$fail(peg$e36); }
1586
+ if (peg$silentFails === 0) { peg$fail(peg$e37); }
1563
1587
  }
1564
1588
 
1565
1589
  return s0;
@@ -1608,7 +1632,7 @@ function peg$parse(input, options) {
1608
1632
  peg$silentFails--;
1609
1633
  if (s0 === peg$FAILED) {
1610
1634
  s1 = peg$FAILED;
1611
- if (peg$silentFails === 0) { peg$fail(peg$e38); }
1635
+ if (peg$silentFails === 0) { peg$fail(peg$e39); }
1612
1636
  }
1613
1637
 
1614
1638
  return s0;
@@ -1618,24 +1642,24 @@ function peg$parse(input, options) {
1618
1642
  var s0, s1, s2, s3, s4, s5;
1619
1643
 
1620
1644
  s0 = peg$currPos;
1621
- if (input.substr(peg$currPos, 2) === peg$c16) {
1622
- s1 = peg$c16;
1645
+ if (input.substr(peg$currPos, 2) === peg$c18) {
1646
+ s1 = peg$c18;
1623
1647
  peg$currPos += 2;
1624
1648
  } else {
1625
1649
  s1 = peg$FAILED;
1626
- if (peg$silentFails === 0) { peg$fail(peg$e39); }
1650
+ if (peg$silentFails === 0) { peg$fail(peg$e40); }
1627
1651
  }
1628
1652
  if (s1 !== peg$FAILED) {
1629
1653
  s2 = [];
1630
1654
  s3 = peg$currPos;
1631
1655
  s4 = peg$currPos;
1632
1656
  peg$silentFails++;
1633
- if (input.substr(peg$currPos, 2) === peg$c17) {
1634
- s5 = peg$c17;
1657
+ if (input.substr(peg$currPos, 2) === peg$c19) {
1658
+ s5 = peg$c19;
1635
1659
  peg$currPos += 2;
1636
1660
  } else {
1637
1661
  s5 = peg$FAILED;
1638
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
1662
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
1639
1663
  }
1640
1664
  peg$silentFails--;
1641
1665
  if (s5 === peg$FAILED) {
@@ -1650,7 +1674,7 @@ function peg$parse(input, options) {
1650
1674
  peg$currPos++;
1651
1675
  } else {
1652
1676
  s5 = peg$FAILED;
1653
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
1677
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
1654
1678
  }
1655
1679
  if (s5 !== peg$FAILED) {
1656
1680
  s4 = [s4, s5];
@@ -1668,12 +1692,12 @@ function peg$parse(input, options) {
1668
1692
  s3 = peg$currPos;
1669
1693
  s4 = peg$currPos;
1670
1694
  peg$silentFails++;
1671
- if (input.substr(peg$currPos, 2) === peg$c17) {
1672
- s5 = peg$c17;
1695
+ if (input.substr(peg$currPos, 2) === peg$c19) {
1696
+ s5 = peg$c19;
1673
1697
  peg$currPos += 2;
1674
1698
  } else {
1675
1699
  s5 = peg$FAILED;
1676
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
1700
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
1677
1701
  }
1678
1702
  peg$silentFails--;
1679
1703
  if (s5 === peg$FAILED) {
@@ -1688,7 +1712,7 @@ function peg$parse(input, options) {
1688
1712
  peg$currPos++;
1689
1713
  } else {
1690
1714
  s5 = peg$FAILED;
1691
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
1715
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
1692
1716
  }
1693
1717
  if (s5 !== peg$FAILED) {
1694
1718
  s4 = [s4, s5];
@@ -1702,16 +1726,16 @@ function peg$parse(input, options) {
1702
1726
  s3 = peg$FAILED;
1703
1727
  }
1704
1728
  }
1705
- if (input.substr(peg$currPos, 2) === peg$c17) {
1706
- s3 = peg$c17;
1729
+ if (input.substr(peg$currPos, 2) === peg$c19) {
1730
+ s3 = peg$c19;
1707
1731
  peg$currPos += 2;
1708
1732
  } else {
1709
1733
  s3 = peg$FAILED;
1710
- if (peg$silentFails === 0) { peg$fail(peg$e40); }
1734
+ if (peg$silentFails === 0) { peg$fail(peg$e41); }
1711
1735
  }
1712
1736
  if (s3 !== peg$FAILED) {
1713
1737
  peg$savedPos = s0;
1714
- s0 = peg$f16();
1738
+ s0 = peg$f15();
1715
1739
  } else {
1716
1740
  peg$currPos = s0;
1717
1741
  s0 = peg$FAILED;
@@ -1728,27 +1752,27 @@ function peg$parse(input, options) {
1728
1752
  var s0;
1729
1753
 
1730
1754
  if (input.charCodeAt(peg$currPos) === 10) {
1731
- s0 = peg$c18;
1755
+ s0 = peg$c20;
1732
1756
  peg$currPos++;
1733
1757
  } else {
1734
1758
  s0 = peg$FAILED;
1735
- if (peg$silentFails === 0) { peg$fail(peg$e41); }
1759
+ if (peg$silentFails === 0) { peg$fail(peg$e42); }
1736
1760
  }
1737
1761
  if (s0 === peg$FAILED) {
1738
- if (input.substr(peg$currPos, 2) === peg$c19) {
1739
- s0 = peg$c19;
1762
+ if (input.substr(peg$currPos, 2) === peg$c21) {
1763
+ s0 = peg$c21;
1740
1764
  peg$currPos += 2;
1741
1765
  } else {
1742
1766
  s0 = peg$FAILED;
1743
- if (peg$silentFails === 0) { peg$fail(peg$e42); }
1767
+ if (peg$silentFails === 0) { peg$fail(peg$e43); }
1744
1768
  }
1745
1769
  if (s0 === peg$FAILED) {
1746
1770
  if (input.charCodeAt(peg$currPos) === 13) {
1747
- s0 = peg$c20;
1771
+ s0 = peg$c22;
1748
1772
  peg$currPos++;
1749
1773
  } else {
1750
1774
  s0 = peg$FAILED;
1751
- if (peg$silentFails === 0) { peg$fail(peg$e43); }
1775
+ if (peg$silentFails === 0) { peg$fail(peg$e44); }
1752
1776
  }
1753
1777
  }
1754
1778
  }
@@ -1767,7 +1791,7 @@ function peg$parse(input, options) {
1767
1791
  peg$silentFails--;
1768
1792
  if (s0 === peg$FAILED) {
1769
1793
  s1 = peg$FAILED;
1770
- if (peg$silentFails === 0) { peg$fail(peg$e44); }
1794
+ if (peg$silentFails === 0) { peg$fail(peg$e45); }
1771
1795
  }
1772
1796
 
1773
1797
  return s0;
@@ -1779,29 +1803,29 @@ function peg$parse(input, options) {
1779
1803
  peg$silentFails++;
1780
1804
  s0 = peg$currPos;
1781
1805
  if (input.charCodeAt(peg$currPos) === 123) {
1782
- s1 = peg$c21;
1806
+ s1 = peg$c23;
1783
1807
  peg$currPos++;
1784
1808
  } else {
1785
1809
  s1 = peg$FAILED;
1786
- if (peg$silentFails === 0) { peg$fail(peg$e46); }
1810
+ if (peg$silentFails === 0) { peg$fail(peg$e47); }
1787
1811
  }
1788
1812
  if (s1 !== peg$FAILED) {
1789
1813
  s2 = peg$parse__();
1790
- s3 = peg$parseobjectProperties();
1814
+ s3 = peg$parseobjectEntries();
1791
1815
  if (s3 === peg$FAILED) {
1792
1816
  s3 = null;
1793
1817
  }
1794
1818
  s4 = peg$parse__();
1795
1819
  if (input.charCodeAt(peg$currPos) === 125) {
1796
- s5 = peg$c3;
1820
+ s5 = peg$c2;
1797
1821
  peg$currPos++;
1798
1822
  } else {
1799
1823
  s5 = peg$FAILED;
1800
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
1824
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
1801
1825
  }
1802
1826
  if (s5 !== peg$FAILED) {
1803
1827
  peg$savedPos = s0;
1804
- s0 = peg$f17(s3);
1828
+ s0 = peg$f16(s3);
1805
1829
  } else {
1806
1830
  peg$currPos = s0;
1807
1831
  s0 = peg$FAILED;
@@ -1813,25 +1837,25 @@ function peg$parse(input, options) {
1813
1837
  peg$silentFails--;
1814
1838
  if (s0 === peg$FAILED) {
1815
1839
  s1 = peg$FAILED;
1816
- if (peg$silentFails === 0) { peg$fail(peg$e45); }
1840
+ if (peg$silentFails === 0) { peg$fail(peg$e46); }
1817
1841
  }
1818
1842
 
1819
1843
  return s0;
1820
1844
  }
1821
1845
 
1822
- function peg$parseobjectProperties() {
1846
+ function peg$parseobjectEntries() {
1823
1847
  var s0, s1, s2, s3, s4;
1824
1848
 
1825
1849
  s0 = peg$currPos;
1826
1850
  s1 = peg$currPos;
1827
1851
  s2 = [];
1828
- s3 = peg$parseobjectPropertyOrShorthand();
1852
+ s3 = peg$parseobjectEntry();
1829
1853
  while (s3 !== peg$FAILED) {
1830
1854
  s2.push(s3);
1831
1855
  s3 = peg$currPos;
1832
1856
  s4 = peg$parseseparator();
1833
1857
  if (s4 !== peg$FAILED) {
1834
- s4 = peg$parseobjectPropertyOrShorthand();
1858
+ s4 = peg$parseobjectEntry();
1835
1859
  if (s4 === peg$FAILED) {
1836
1860
  peg$currPos = s3;
1837
1861
  s3 = peg$FAILED;
@@ -1862,6 +1886,26 @@ function peg$parse(input, options) {
1862
1886
  return s0;
1863
1887
  }
1864
1888
 
1889
+ function peg$parseobjectEntry() {
1890
+ var s0, s1;
1891
+
1892
+ s0 = peg$parsespread();
1893
+ if (s0 === peg$FAILED) {
1894
+ s0 = peg$parseobjectProperty();
1895
+ if (s0 === peg$FAILED) {
1896
+ s0 = peg$currPos;
1897
+ s1 = peg$parseidentifier();
1898
+ if (s1 !== peg$FAILED) {
1899
+ peg$savedPos = s0;
1900
+ s1 = peg$f17(s1);
1901
+ }
1902
+ s0 = s1;
1903
+ }
1904
+ }
1905
+
1906
+ return s0;
1907
+ }
1908
+
1865
1909
  function peg$parseobjectProperty() {
1866
1910
  var s0, s1, s2, s3, s4, s5;
1867
1911
 
@@ -1871,7 +1915,7 @@ function peg$parse(input, options) {
1871
1915
  if (s1 !== peg$FAILED) {
1872
1916
  s2 = peg$parse__();
1873
1917
  if (input.charCodeAt(peg$currPos) === 58) {
1874
- s3 = peg$c12;
1918
+ s3 = peg$c13;
1875
1919
  peg$currPos++;
1876
1920
  } else {
1877
1921
  s3 = peg$FAILED;
@@ -1897,24 +1941,7 @@ function peg$parse(input, options) {
1897
1941
  peg$silentFails--;
1898
1942
  if (s0 === peg$FAILED) {
1899
1943
  s1 = peg$FAILED;
1900
- if (peg$silentFails === 0) { peg$fail(peg$e47); }
1901
- }
1902
-
1903
- return s0;
1904
- }
1905
-
1906
- function peg$parseobjectPropertyOrShorthand() {
1907
- var s0, s1;
1908
-
1909
- s0 = peg$parseobjectProperty();
1910
- if (s0 === peg$FAILED) {
1911
- s0 = peg$currPos;
1912
- s1 = peg$parseidentifier();
1913
- if (s1 !== peg$FAILED) {
1914
- peg$savedPos = s0;
1915
- s1 = peg$f18(s1);
1916
- }
1917
- s0 = s1;
1944
+ if (peg$silentFails === 0) { peg$fail(peg$e48); }
1918
1945
  }
1919
1946
 
1920
1947
  return s0;
@@ -1925,7 +1952,7 @@ function peg$parse(input, options) {
1925
1952
 
1926
1953
  s0 = peg$currPos;
1927
1954
  if (input.charCodeAt(peg$currPos) === 40) {
1928
- s1 = peg$c11;
1955
+ s1 = peg$c12;
1929
1956
  peg$currPos++;
1930
1957
  } else {
1931
1958
  s1 = peg$FAILED;
@@ -1939,11 +1966,11 @@ function peg$parse(input, options) {
1939
1966
  }
1940
1967
  s4 = peg$parse__();
1941
1968
  if (input.charCodeAt(peg$currPos) === 41) {
1942
- s5 = peg$c5;
1969
+ s5 = peg$c4;
1943
1970
  peg$currPos++;
1944
1971
  } else {
1945
1972
  s5 = peg$FAILED;
1946
- if (peg$silentFails === 0) { peg$fail(peg$e11); }
1973
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
1947
1974
  }
1948
1975
  if (s5 !== peg$FAILED) {
1949
1976
  s6 = peg$parse__();
@@ -1953,7 +1980,7 @@ function peg$parse(input, options) {
1953
1980
  s9 = peg$parsepipeline();
1954
1981
  if (s9 !== peg$FAILED) {
1955
1982
  peg$savedPos = s0;
1956
- s0 = peg$f19(s3, s9);
1983
+ s0 = peg$f18(s3, s9);
1957
1984
  } else {
1958
1985
  peg$currPos = s0;
1959
1986
  s0 = peg$FAILED;
@@ -1980,7 +2007,7 @@ function peg$parse(input, options) {
1980
2007
  peg$silentFails++;
1981
2008
  s0 = peg$currPos;
1982
2009
  if (input.charCodeAt(peg$currPos) === 40) {
1983
- s1 = peg$c11;
2010
+ s1 = peg$c12;
1984
2011
  peg$currPos++;
1985
2012
  } else {
1986
2013
  s1 = peg$FAILED;
@@ -1994,15 +2021,15 @@ function peg$parse(input, options) {
1994
2021
  }
1995
2022
  s4 = peg$parse__();
1996
2023
  if (input.charCodeAt(peg$currPos) === 41) {
1997
- s5 = peg$c5;
2024
+ s5 = peg$c4;
1998
2025
  peg$currPos++;
1999
2026
  } else {
2000
2027
  s5 = peg$FAILED;
2001
- if (peg$silentFails === 0) { peg$fail(peg$e11); }
2028
+ if (peg$silentFails === 0) { peg$fail(peg$e9); }
2002
2029
  }
2003
2030
  if (s5 !== peg$FAILED) {
2004
2031
  peg$savedPos = s0;
2005
- s0 = peg$f20(s3);
2032
+ s0 = peg$f19(s3);
2006
2033
  } else {
2007
2034
  peg$currPos = s0;
2008
2035
  s0 = peg$FAILED;
@@ -2014,7 +2041,7 @@ function peg$parse(input, options) {
2014
2041
  peg$silentFails--;
2015
2042
  if (s0 === peg$FAILED) {
2016
2043
  s1 = peg$FAILED;
2017
- if (peg$silentFails === 0) { peg$fail(peg$e48); }
2044
+ if (peg$silentFails === 0) { peg$fail(peg$e49); }
2018
2045
  }
2019
2046
 
2020
2047
  return s0;
@@ -2068,7 +2095,7 @@ function peg$parse(input, options) {
2068
2095
  }
2069
2096
  if (s1 !== peg$FAILED) {
2070
2097
  peg$savedPos = s0;
2071
- s1 = peg$f21(s1);
2098
+ s1 = peg$f20(s1);
2072
2099
  }
2073
2100
  s0 = s1;
2074
2101
 
@@ -2086,11 +2113,11 @@ function peg$parse(input, options) {
2086
2113
  s1.push(s2);
2087
2114
  s2 = peg$currPos;
2088
2115
  if (input.charCodeAt(peg$currPos) === 47) {
2089
- s3 = peg$c15;
2116
+ s3 = peg$c17;
2090
2117
  peg$currPos++;
2091
2118
  } else {
2092
2119
  s3 = peg$FAILED;
2093
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2120
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2094
2121
  }
2095
2122
  if (s3 !== peg$FAILED) {
2096
2123
  s3 = peg$parsepathKey();
@@ -2107,7 +2134,7 @@ function peg$parse(input, options) {
2107
2134
  }
2108
2135
  peg$silentFails--;
2109
2136
  s1 = peg$FAILED;
2110
- if (peg$silentFails === 0) { peg$fail(peg$e49); }
2137
+ if (peg$silentFails === 0) { peg$fail(peg$e50); }
2111
2138
 
2112
2139
  return s0;
2113
2140
  }
@@ -2124,11 +2151,11 @@ function peg$parse(input, options) {
2124
2151
  s2 = peg$parseidentifierChar();
2125
2152
  }
2126
2153
  peg$savedPos = s0;
2127
- s1 = peg$f22(s1);
2154
+ s1 = peg$f21(s1);
2128
2155
  s0 = s1;
2129
2156
  peg$silentFails--;
2130
2157
  s1 = peg$FAILED;
2131
- if (peg$silentFails === 0) { peg$fail(peg$e50); }
2158
+ if (peg$silentFails === 0) { peg$fail(peg$e51); }
2132
2159
 
2133
2160
  return s0;
2134
2161
  }
@@ -2141,7 +2168,7 @@ function peg$parse(input, options) {
2141
2168
  s1 = peg$parseprotocol();
2142
2169
  if (s1 !== peg$FAILED) {
2143
2170
  if (input.charCodeAt(peg$currPos) === 58) {
2144
- s2 = peg$c12;
2171
+ s2 = peg$c13;
2145
2172
  peg$currPos++;
2146
2173
  } else {
2147
2174
  s2 = peg$FAILED;
@@ -2150,11 +2177,11 @@ function peg$parse(input, options) {
2150
2177
  if (s2 !== peg$FAILED) {
2151
2178
  s3 = [];
2152
2179
  if (input.charCodeAt(peg$currPos) === 47) {
2153
- s4 = peg$c15;
2180
+ s4 = peg$c17;
2154
2181
  peg$currPos++;
2155
2182
  } else {
2156
2183
  s4 = peg$FAILED;
2157
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2184
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2158
2185
  }
2159
2186
  while (s4 !== peg$FAILED) {
2160
2187
  s3.push(s4);
@@ -2162,11 +2189,11 @@ function peg$parse(input, options) {
2162
2189
  s4 = peg$FAILED;
2163
2190
  } else {
2164
2191
  if (input.charCodeAt(peg$currPos) === 47) {
2165
- s4 = peg$c15;
2192
+ s4 = peg$c17;
2166
2193
  peg$currPos++;
2167
2194
  } else {
2168
2195
  s4 = peg$FAILED;
2169
- if (peg$silentFails === 0) { peg$fail(peg$e37); }
2196
+ if (peg$silentFails === 0) { peg$fail(peg$e38); }
2170
2197
  }
2171
2198
  }
2172
2199
  }
@@ -2177,7 +2204,7 @@ function peg$parse(input, options) {
2177
2204
  s5 = null;
2178
2205
  }
2179
2206
  peg$savedPos = s0;
2180
- s0 = peg$f23(s1, s4, s5);
2207
+ s0 = peg$f22(s1, s4, s5);
2181
2208
  } else {
2182
2209
  peg$currPos = s0;
2183
2210
  s0 = peg$FAILED;
@@ -2193,7 +2220,7 @@ function peg$parse(input, options) {
2193
2220
  peg$silentFails--;
2194
2221
  if (s0 === peg$FAILED) {
2195
2222
  s1 = peg$FAILED;
2196
- if (peg$silentFails === 0) { peg$fail(peg$e51); }
2223
+ if (peg$silentFails === 0) { peg$fail(peg$e52); }
2197
2224
  }
2198
2225
 
2199
2226
  return s0;
@@ -2210,7 +2237,7 @@ function peg$parse(input, options) {
2210
2237
  peg$silentFails--;
2211
2238
  if (s0 === peg$FAILED) {
2212
2239
  s1 = peg$FAILED;
2213
- if (peg$silentFails === 0) { peg$fail(peg$e52); }
2240
+ if (peg$silentFails === 0) { peg$fail(peg$e53); }
2214
2241
  }
2215
2242
 
2216
2243
  return s0;
@@ -2221,100 +2248,100 @@ function peg$parse(input, options) {
2221
2248
 
2222
2249
  peg$silentFails++;
2223
2250
  s0 = peg$currPos;
2224
- if (input.substr(peg$currPos, 5) === peg$c22) {
2225
- s1 = peg$c22;
2251
+ if (input.substr(peg$currPos, 5) === peg$c24) {
2252
+ s1 = peg$c24;
2226
2253
  peg$currPos += 5;
2227
2254
  } else {
2228
2255
  s1 = peg$FAILED;
2229
- if (peg$silentFails === 0) { peg$fail(peg$e54); }
2256
+ if (peg$silentFails === 0) { peg$fail(peg$e55); }
2230
2257
  }
2231
2258
  if (s1 !== peg$FAILED) {
2232
2259
  peg$savedPos = s0;
2233
- s1 = peg$f24();
2260
+ s1 = peg$f23();
2234
2261
  }
2235
2262
  s0 = s1;
2236
2263
  if (s0 === peg$FAILED) {
2237
2264
  s0 = peg$currPos;
2238
- if (input.substr(peg$currPos, 4) === peg$c23) {
2239
- s1 = peg$c23;
2265
+ if (input.substr(peg$currPos, 4) === peg$c25) {
2266
+ s1 = peg$c25;
2240
2267
  peg$currPos += 4;
2241
2268
  } else {
2242
2269
  s1 = peg$FAILED;
2243
- if (peg$silentFails === 0) { peg$fail(peg$e55); }
2270
+ if (peg$silentFails === 0) { peg$fail(peg$e56); }
2244
2271
  }
2245
2272
  if (s1 !== peg$FAILED) {
2246
2273
  peg$savedPos = s0;
2247
- s1 = peg$f25();
2274
+ s1 = peg$f24();
2248
2275
  }
2249
2276
  s0 = s1;
2250
2277
  if (s0 === peg$FAILED) {
2251
2278
  s0 = peg$currPos;
2252
- if (input.substr(peg$currPos, 3) === peg$c24) {
2253
- s1 = peg$c24;
2279
+ if (input.substr(peg$currPos, 3) === peg$c26) {
2280
+ s1 = peg$c26;
2254
2281
  peg$currPos += 3;
2255
2282
  } else {
2256
2283
  s1 = peg$FAILED;
2257
- if (peg$silentFails === 0) { peg$fail(peg$e56); }
2284
+ if (peg$silentFails === 0) { peg$fail(peg$e57); }
2258
2285
  }
2259
2286
  if (s1 !== peg$FAILED) {
2260
2287
  peg$savedPos = s0;
2261
- s1 = peg$f26();
2288
+ s1 = peg$f25();
2262
2289
  }
2263
2290
  s0 = s1;
2264
2291
  if (s0 === peg$FAILED) {
2265
2292
  s0 = peg$currPos;
2266
- if (input.substr(peg$currPos, 7) === peg$c25) {
2267
- s1 = peg$c25;
2293
+ if (input.substr(peg$currPos, 7) === peg$c27) {
2294
+ s1 = peg$c27;
2268
2295
  peg$currPos += 7;
2269
2296
  } else {
2270
2297
  s1 = peg$FAILED;
2271
- if (peg$silentFails === 0) { peg$fail(peg$e57); }
2298
+ if (peg$silentFails === 0) { peg$fail(peg$e58); }
2272
2299
  }
2273
2300
  if (s1 !== peg$FAILED) {
2274
2301
  peg$savedPos = s0;
2275
- s1 = peg$f27();
2302
+ s1 = peg$f26();
2276
2303
  }
2277
2304
  s0 = s1;
2278
2305
  if (s0 === peg$FAILED) {
2279
2306
  s0 = peg$currPos;
2280
- if (input.substr(peg$currPos, 9) === peg$c26) {
2281
- s1 = peg$c26;
2307
+ if (input.substr(peg$currPos, 9) === peg$c28) {
2308
+ s1 = peg$c28;
2282
2309
  peg$currPos += 9;
2283
2310
  } else {
2284
2311
  s1 = peg$FAILED;
2285
- if (peg$silentFails === 0) { peg$fail(peg$e58); }
2312
+ if (peg$silentFails === 0) { peg$fail(peg$e59); }
2286
2313
  }
2287
2314
  if (s1 !== peg$FAILED) {
2288
2315
  peg$savedPos = s0;
2289
- s1 = peg$f28();
2316
+ s1 = peg$f27();
2290
2317
  }
2291
2318
  s0 = s1;
2292
2319
  if (s0 === peg$FAILED) {
2293
2320
  s0 = peg$currPos;
2294
- if (input.substr(peg$currPos, 8) === peg$c27) {
2295
- s1 = peg$c27;
2321
+ if (input.substr(peg$currPos, 8) === peg$c29) {
2322
+ s1 = peg$c29;
2296
2323
  peg$currPos += 8;
2297
2324
  } else {
2298
2325
  s1 = peg$FAILED;
2299
- if (peg$silentFails === 0) { peg$fail(peg$e59); }
2326
+ if (peg$silentFails === 0) { peg$fail(peg$e60); }
2300
2327
  }
2301
2328
  if (s1 !== peg$FAILED) {
2302
2329
  peg$savedPos = s0;
2303
- s1 = peg$f29();
2330
+ s1 = peg$f28();
2304
2331
  }
2305
2332
  s0 = s1;
2306
2333
  if (s0 === peg$FAILED) {
2307
2334
  s0 = peg$currPos;
2308
- if (input.substr(peg$currPos, 4) === peg$c28) {
2309
- s1 = peg$c28;
2335
+ if (input.substr(peg$currPos, 4) === peg$c30) {
2336
+ s1 = peg$c30;
2310
2337
  peg$currPos += 4;
2311
2338
  } else {
2312
2339
  s1 = peg$FAILED;
2313
- if (peg$silentFails === 0) { peg$fail(peg$e60); }
2340
+ if (peg$silentFails === 0) { peg$fail(peg$e61); }
2314
2341
  }
2315
2342
  if (s1 !== peg$FAILED) {
2316
2343
  peg$savedPos = s0;
2317
- s1 = peg$f30();
2344
+ s1 = peg$f29();
2318
2345
  }
2319
2346
  s0 = s1;
2320
2347
  }
@@ -2326,7 +2353,7 @@ function peg$parse(input, options) {
2326
2353
  peg$silentFails--;
2327
2354
  if (s0 === peg$FAILED) {
2328
2355
  s1 = peg$FAILED;
2329
- if (peg$silentFails === 0) { peg$fail(peg$e53); }
2356
+ if (peg$silentFails === 0) { peg$fail(peg$e54); }
2330
2357
  }
2331
2358
 
2332
2359
  return s0;
@@ -2340,13 +2367,13 @@ function peg$parse(input, options) {
2340
2367
  s1 = peg$parseidentifier();
2341
2368
  if (s1 !== peg$FAILED) {
2342
2369
  peg$savedPos = s0;
2343
- s1 = peg$f31(s1);
2370
+ s1 = peg$f30(s1);
2344
2371
  }
2345
2372
  s0 = s1;
2346
2373
  peg$silentFails--;
2347
2374
  if (s0 === peg$FAILED) {
2348
2375
  s1 = peg$FAILED;
2349
- if (peg$silentFails === 0) { peg$fail(peg$e61); }
2376
+ if (peg$silentFails === 0) { peg$fail(peg$e62); }
2350
2377
  }
2351
2378
 
2352
2379
  return s0;
@@ -2358,11 +2385,11 @@ function peg$parse(input, options) {
2358
2385
  s0 = peg$currPos;
2359
2386
  s1 = peg$parse__();
2360
2387
  if (input.charCodeAt(peg$currPos) === 44) {
2361
- s2 = peg$c29;
2388
+ s2 = peg$c31;
2362
2389
  peg$currPos++;
2363
2390
  } else {
2364
2391
  s2 = peg$FAILED;
2365
- if (peg$silentFails === 0) { peg$fail(peg$e62); }
2392
+ if (peg$silentFails === 0) { peg$fail(peg$e63); }
2366
2393
  }
2367
2394
  if (s2 !== peg$FAILED) {
2368
2395
  s3 = peg$parse__();
@@ -2383,12 +2410,12 @@ function peg$parse(input, options) {
2383
2410
  var s0, s1, s2, s3;
2384
2411
 
2385
2412
  s0 = peg$currPos;
2386
- if (input.substr(peg$currPos, 2) === peg$c30) {
2387
- s1 = peg$c30;
2413
+ if (input.substr(peg$currPos, 2) === peg$c32) {
2414
+ s1 = peg$c32;
2388
2415
  peg$currPos += 2;
2389
2416
  } else {
2390
2417
  s1 = peg$FAILED;
2391
- if (peg$silentFails === 0) { peg$fail(peg$e63); }
2418
+ if (peg$silentFails === 0) { peg$fail(peg$e64); }
2392
2419
  }
2393
2420
  if (s1 !== peg$FAILED) {
2394
2421
  s2 = [];
@@ -2397,7 +2424,7 @@ function peg$parse(input, options) {
2397
2424
  peg$currPos++;
2398
2425
  } else {
2399
2426
  s3 = peg$FAILED;
2400
- if (peg$silentFails === 0) { peg$fail(peg$e64); }
2427
+ if (peg$silentFails === 0) { peg$fail(peg$e65); }
2401
2428
  }
2402
2429
  while (s3 !== peg$FAILED) {
2403
2430
  s2.push(s3);
@@ -2406,11 +2433,11 @@ function peg$parse(input, options) {
2406
2433
  peg$currPos++;
2407
2434
  } else {
2408
2435
  s3 = peg$FAILED;
2409
- if (peg$silentFails === 0) { peg$fail(peg$e64); }
2436
+ if (peg$silentFails === 0) { peg$fail(peg$e65); }
2410
2437
  }
2411
2438
  }
2412
2439
  peg$savedPos = s0;
2413
- s0 = peg$f32();
2440
+ s0 = peg$f31();
2414
2441
  } else {
2415
2442
  peg$currPos = s0;
2416
2443
  s0 = peg$FAILED;
@@ -2427,7 +2454,7 @@ function peg$parse(input, options) {
2427
2454
  peg$currPos++;
2428
2455
  } else {
2429
2456
  s0 = peg$FAILED;
2430
- if (peg$silentFails === 0) { peg$fail(peg$e65); }
2457
+ if (peg$silentFails === 0) { peg$fail(peg$e66); }
2431
2458
  }
2432
2459
 
2433
2460
  return s0;
@@ -2437,19 +2464,19 @@ function peg$parse(input, options) {
2437
2464
  var s0;
2438
2465
 
2439
2466
  if (input.charCodeAt(peg$currPos) === 8594) {
2440
- s0 = peg$c31;
2467
+ s0 = peg$c33;
2441
2468
  peg$currPos++;
2442
2469
  } else {
2443
2470
  s0 = peg$FAILED;
2444
- if (peg$silentFails === 0) { peg$fail(peg$e66); }
2471
+ if (peg$silentFails === 0) { peg$fail(peg$e67); }
2445
2472
  }
2446
2473
  if (s0 === peg$FAILED) {
2447
- if (input.substr(peg$currPos, 2) === peg$c32) {
2448
- s0 = peg$c32;
2474
+ if (input.substr(peg$currPos, 2) === peg$c34) {
2475
+ s0 = peg$c34;
2449
2476
  peg$currPos += 2;
2450
2477
  } else {
2451
2478
  s0 = peg$FAILED;
2452
- if (peg$silentFails === 0) { peg$fail(peg$e67); }
2479
+ if (peg$silentFails === 0) { peg$fail(peg$e68); }
2453
2480
  }
2454
2481
  }
2455
2482
 
@@ -2474,7 +2501,7 @@ function peg$parse(input, options) {
2474
2501
  peg$currPos++;
2475
2502
  } else {
2476
2503
  s3 = peg$FAILED;
2477
- if (peg$silentFails === 0) { peg$fail(peg$e64); }
2504
+ if (peg$silentFails === 0) { peg$fail(peg$e65); }
2478
2505
  }
2479
2506
  while (s3 !== peg$FAILED) {
2480
2507
  s2.push(s3);
@@ -2483,11 +2510,11 @@ function peg$parse(input, options) {
2483
2510
  peg$currPos++;
2484
2511
  } else {
2485
2512
  s3 = peg$FAILED;
2486
- if (peg$silentFails === 0) { peg$fail(peg$e64); }
2513
+ if (peg$silentFails === 0) { peg$fail(peg$e65); }
2487
2514
  }
2488
2515
  }
2489
2516
  peg$savedPos = s0;
2490
- s0 = peg$f33();
2517
+ s0 = peg$f32();
2491
2518
  } else {
2492
2519
  peg$currPos = s0;
2493
2520
  s0 = peg$FAILED;
@@ -2502,11 +2529,11 @@ function peg$parse(input, options) {
2502
2529
  peg$silentFails++;
2503
2530
  s0 = peg$currPos;
2504
2531
  if (input.charCodeAt(peg$currPos) === 39) {
2505
- s1 = peg$c33;
2532
+ s1 = peg$c35;
2506
2533
  peg$currPos++;
2507
2534
  } else {
2508
2535
  s1 = peg$FAILED;
2509
- if (peg$silentFails === 0) { peg$fail(peg$e69); }
2536
+ if (peg$silentFails === 0) { peg$fail(peg$e70); }
2510
2537
  }
2511
2538
  if (s1 !== peg$FAILED) {
2512
2539
  s2 = [];
@@ -2516,15 +2543,15 @@ function peg$parse(input, options) {
2516
2543
  s3 = peg$parsesingleQuoteStringChar();
2517
2544
  }
2518
2545
  if (input.charCodeAt(peg$currPos) === 39) {
2519
- s3 = peg$c33;
2546
+ s3 = peg$c35;
2520
2547
  peg$currPos++;
2521
2548
  } else {
2522
2549
  s3 = peg$FAILED;
2523
- if (peg$silentFails === 0) { peg$fail(peg$e69); }
2550
+ if (peg$silentFails === 0) { peg$fail(peg$e70); }
2524
2551
  }
2525
2552
  if (s3 !== peg$FAILED) {
2526
2553
  peg$savedPos = s0;
2527
- s0 = peg$f34(s2);
2554
+ s0 = peg$f33(s2);
2528
2555
  } else {
2529
2556
  peg$currPos = s0;
2530
2557
  s0 = peg$FAILED;
@@ -2536,7 +2563,7 @@ function peg$parse(input, options) {
2536
2563
  peg$silentFails--;
2537
2564
  if (s0 === peg$FAILED) {
2538
2565
  s1 = peg$FAILED;
2539
- if (peg$silentFails === 0) { peg$fail(peg$e68); }
2566
+ if (peg$silentFails === 0) { peg$fail(peg$e69); }
2540
2567
  }
2541
2568
 
2542
2569
  return s0;
@@ -2549,11 +2576,11 @@ function peg$parse(input, options) {
2549
2576
  s1 = peg$currPos;
2550
2577
  peg$silentFails++;
2551
2578
  if (input.charCodeAt(peg$currPos) === 39) {
2552
- s2 = peg$c33;
2579
+ s2 = peg$c35;
2553
2580
  peg$currPos++;
2554
2581
  } else {
2555
2582
  s2 = peg$FAILED;
2556
- if (peg$silentFails === 0) { peg$fail(peg$e69); }
2583
+ if (peg$silentFails === 0) { peg$fail(peg$e70); }
2557
2584
  }
2558
2585
  if (s2 === peg$FAILED) {
2559
2586
  s2 = peg$parsenewLine();
@@ -2581,6 +2608,28 @@ function peg$parse(input, options) {
2581
2608
  return s0;
2582
2609
  }
2583
2610
 
2611
+ function peg$parsespread() {
2612
+ var s0, s1, s2;
2613
+
2614
+ s0 = peg$currPos;
2615
+ s1 = peg$parseellipsis();
2616
+ if (s1 !== peg$FAILED) {
2617
+ s2 = peg$parsepipeline();
2618
+ if (s2 !== peg$FAILED) {
2619
+ peg$savedPos = s0;
2620
+ s0 = peg$f34(s2);
2621
+ } else {
2622
+ peg$currPos = s0;
2623
+ s0 = peg$FAILED;
2624
+ }
2625
+ } else {
2626
+ peg$currPos = s0;
2627
+ s0 = peg$FAILED;
2628
+ }
2629
+
2630
+ return s0;
2631
+ }
2632
+
2584
2633
  function peg$parsestep() {
2585
2634
  var s0;
2586
2635
 
@@ -2644,7 +2693,7 @@ function peg$parse(input, options) {
2644
2693
  peg$silentFails--;
2645
2694
  if (s0 === peg$FAILED) {
2646
2695
  s1 = peg$FAILED;
2647
- if (peg$silentFails === 0) { peg$fail(peg$e70); }
2696
+ if (peg$silentFails === 0) { peg$fail(peg$e71); }
2648
2697
  }
2649
2698
 
2650
2699
  return s0;
@@ -2661,7 +2710,7 @@ function peg$parse(input, options) {
2661
2710
  s0 = s1;
2662
2711
  peg$silentFails--;
2663
2712
  s1 = peg$FAILED;
2664
- if (peg$silentFails === 0) { peg$fail(peg$e71); }
2713
+ if (peg$silentFails === 0) { peg$fail(peg$e72); }
2665
2714
 
2666
2715
  return s0;
2667
2716
  }
@@ -2672,12 +2721,12 @@ function peg$parse(input, options) {
2672
2721
  s0 = peg$currPos;
2673
2722
  s1 = peg$currPos;
2674
2723
  peg$silentFails++;
2675
- if (input.substr(peg$currPos, 2) === peg$c34) {
2676
- s2 = peg$c34;
2724
+ if (input.substr(peg$currPos, 2) === peg$c36) {
2725
+ s2 = peg$c36;
2677
2726
  peg$currPos += 2;
2678
2727
  } else {
2679
2728
  s2 = peg$FAILED;
2680
- if (peg$silentFails === 0) { peg$fail(peg$e72); }
2729
+ if (peg$silentFails === 0) { peg$fail(peg$e73); }
2681
2730
  }
2682
2731
  peg$silentFails--;
2683
2732
  if (s2 === peg$FAILED) {
@@ -2748,7 +2797,7 @@ function peg$parse(input, options) {
2748
2797
  peg$silentFails--;
2749
2798
  if (s0 === peg$FAILED) {
2750
2799
  s1 = peg$FAILED;
2751
- if (peg$silentFails === 0) { peg$fail(peg$e73); }
2800
+ if (peg$silentFails === 0) { peg$fail(peg$e74); }
2752
2801
  }
2753
2802
 
2754
2803
  return s0;
@@ -2760,20 +2809,20 @@ function peg$parse(input, options) {
2760
2809
  peg$silentFails++;
2761
2810
  s0 = peg$currPos;
2762
2811
  if (input.charCodeAt(peg$currPos) === 96) {
2763
- s1 = peg$c35;
2812
+ s1 = peg$c37;
2764
2813
  peg$currPos++;
2765
2814
  } else {
2766
2815
  s1 = peg$FAILED;
2767
- if (peg$silentFails === 0) { peg$fail(peg$e75); }
2816
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
2768
2817
  }
2769
2818
  if (s1 !== peg$FAILED) {
2770
2819
  s2 = peg$parsetemplateLiteralContents();
2771
2820
  if (input.charCodeAt(peg$currPos) === 96) {
2772
- s3 = peg$c35;
2821
+ s3 = peg$c37;
2773
2822
  peg$currPos++;
2774
2823
  } else {
2775
2824
  s3 = peg$FAILED;
2776
- if (peg$silentFails === 0) { peg$fail(peg$e75); }
2825
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
2777
2826
  }
2778
2827
  if (s3 !== peg$FAILED) {
2779
2828
  s0 = s2;
@@ -2788,7 +2837,7 @@ function peg$parse(input, options) {
2788
2837
  peg$silentFails--;
2789
2838
  if (s0 === peg$FAILED) {
2790
2839
  s1 = peg$FAILED;
2791
- if (peg$silentFails === 0) { peg$fail(peg$e74); }
2840
+ if (peg$silentFails === 0) { peg$fail(peg$e75); }
2792
2841
  }
2793
2842
 
2794
2843
  return s0;
@@ -2801,19 +2850,19 @@ function peg$parse(input, options) {
2801
2850
  s1 = peg$currPos;
2802
2851
  peg$silentFails++;
2803
2852
  if (input.charCodeAt(peg$currPos) === 96) {
2804
- s2 = peg$c35;
2853
+ s2 = peg$c37;
2805
2854
  peg$currPos++;
2806
2855
  } else {
2807
2856
  s2 = peg$FAILED;
2808
- if (peg$silentFails === 0) { peg$fail(peg$e75); }
2857
+ if (peg$silentFails === 0) { peg$fail(peg$e76); }
2809
2858
  }
2810
2859
  if (s2 === peg$FAILED) {
2811
- if (input.substr(peg$currPos, 2) === peg$c34) {
2812
- s2 = peg$c34;
2860
+ if (input.substr(peg$currPos, 2) === peg$c36) {
2861
+ s2 = peg$c36;
2813
2862
  peg$currPos += 2;
2814
2863
  } else {
2815
2864
  s2 = peg$FAILED;
2816
- if (peg$silentFails === 0) { peg$fail(peg$e72); }
2865
+ if (peg$silentFails === 0) { peg$fail(peg$e73); }
2817
2866
  }
2818
2867
  }
2819
2868
  peg$silentFails--;
@@ -2890,22 +2939,22 @@ function peg$parse(input, options) {
2890
2939
 
2891
2940
  peg$silentFails++;
2892
2941
  s0 = peg$currPos;
2893
- if (input.substr(peg$currPos, 2) === peg$c34) {
2894
- s1 = peg$c34;
2942
+ if (input.substr(peg$currPos, 2) === peg$c36) {
2943
+ s1 = peg$c36;
2895
2944
  peg$currPos += 2;
2896
2945
  } else {
2897
2946
  s1 = peg$FAILED;
2898
- if (peg$silentFails === 0) { peg$fail(peg$e72); }
2947
+ if (peg$silentFails === 0) { peg$fail(peg$e73); }
2899
2948
  }
2900
2949
  if (s1 !== peg$FAILED) {
2901
2950
  s2 = peg$parseexpression();
2902
2951
  if (s2 !== peg$FAILED) {
2903
2952
  if (input.charCodeAt(peg$currPos) === 125) {
2904
- s3 = peg$c3;
2953
+ s3 = peg$c2;
2905
2954
  peg$currPos++;
2906
2955
  } else {
2907
2956
  s3 = peg$FAILED;
2908
- if (peg$silentFails === 0) { peg$fail(peg$e8); }
2957
+ if (peg$silentFails === 0) { peg$fail(peg$e6); }
2909
2958
  }
2910
2959
  if (s3 !== peg$FAILED) {
2911
2960
  s0 = s2;
@@ -2924,7 +2973,7 @@ function peg$parse(input, options) {
2924
2973
  peg$silentFails--;
2925
2974
  if (s0 === peg$FAILED) {
2926
2975
  s1 = peg$FAILED;
2927
- if (peg$silentFails === 0) { peg$fail(peg$e76); }
2976
+ if (peg$silentFails === 0) { peg$fail(peg$e77); }
2928
2977
  }
2929
2978
 
2930
2979
  return s0;
@@ -2940,7 +2989,7 @@ function peg$parse(input, options) {
2940
2989
  peg$currPos++;
2941
2990
  } else {
2942
2991
  s0 = peg$FAILED;
2943
- if (peg$silentFails === 0) { peg$fail(peg$e9); }
2992
+ if (peg$silentFails === 0) { peg$fail(peg$e7); }
2944
2993
  }
2945
2994
  }
2946
2995
 
@@ -2953,15 +3002,15 @@ function peg$parse(input, options) {
2953
3002
  peg$silentFails++;
2954
3003
  s0 = peg$currPos;
2955
3004
  if (input.charCodeAt(peg$currPos) === 123) {
2956
- s1 = peg$c21;
3005
+ s1 = peg$c23;
2957
3006
  peg$currPos++;
2958
3007
  } else {
2959
3008
  s1 = peg$FAILED;
2960
- if (peg$silentFails === 0) { peg$fail(peg$e46); }
3009
+ if (peg$silentFails === 0) { peg$fail(peg$e47); }
2961
3010
  }
2962
3011
  if (s1 !== peg$FAILED) {
2963
3012
  s2 = peg$parse__();
2964
- s3 = peg$parsetreeAssignments();
3013
+ s3 = peg$parsetreeEntries();
2965
3014
  if (s3 === peg$FAILED) {
2966
3015
  s3 = null;
2967
3016
  }
@@ -2981,25 +3030,66 @@ function peg$parse(input, options) {
2981
3030
  peg$silentFails--;
2982
3031
  if (s0 === peg$FAILED) {
2983
3032
  s1 = peg$FAILED;
2984
- if (peg$silentFails === 0) { peg$fail(peg$e77); }
3033
+ if (peg$silentFails === 0) { peg$fail(peg$e78); }
2985
3034
  }
2986
3035
 
2987
3036
  return s0;
2988
3037
  }
2989
3038
 
2990
- function peg$parsetreeAssignments() {
3039
+ function peg$parsetreeAssignment() {
3040
+ var s0, s1, s2, s3, s4, s5;
3041
+
3042
+ peg$silentFails++;
3043
+ s0 = peg$currPos;
3044
+ s1 = peg$parseidentifier();
3045
+ if (s1 !== peg$FAILED) {
3046
+ s2 = peg$parse__();
3047
+ if (input.charCodeAt(peg$currPos) === 61) {
3048
+ s3 = peg$c16;
3049
+ peg$currPos++;
3050
+ } else {
3051
+ s3 = peg$FAILED;
3052
+ if (peg$silentFails === 0) { peg$fail(peg$e36); }
3053
+ }
3054
+ if (s3 !== peg$FAILED) {
3055
+ s4 = peg$parse__();
3056
+ s5 = peg$parsepipeline();
3057
+ if (s5 !== peg$FAILED) {
3058
+ s0 = [ s1, s5 ];
3059
+ } else {
3060
+ peg$currPos = s0;
3061
+ s0 = peg$FAILED;
3062
+ }
3063
+ } else {
3064
+ peg$currPos = s0;
3065
+ s0 = peg$FAILED;
3066
+ }
3067
+ } else {
3068
+ peg$currPos = s0;
3069
+ s0 = peg$FAILED;
3070
+ }
3071
+ peg$silentFails--;
3072
+ if (s0 === peg$FAILED) {
3073
+ s1 = peg$FAILED;
3074
+ if (peg$silentFails === 0) { peg$fail(peg$e79); }
3075
+ }
3076
+
3077
+ return s0;
3078
+ }
3079
+
3080
+ function peg$parsetreeEntries() {
2991
3081
  var s0, s1, s2, s3, s4;
2992
3082
 
2993
3083
  s0 = peg$currPos;
2994
3084
  s1 = peg$currPos;
2995
3085
  s2 = [];
2996
- s3 = peg$parseassignmentOrShorthand();
3086
+ s3 = peg$parsetreeEntry();
2997
3087
  while (s3 !== peg$FAILED) {
2998
3088
  s2.push(s3);
2999
3089
  s3 = peg$currPos;
3000
3090
  s4 = peg$parseseparator();
3001
3091
  if (s4 !== peg$FAILED) {
3002
- s4 = peg$parseassignmentOrShorthand();
3092
+ s4 = peg$parsetreeEntry();
3003
3093
  if (s4 === peg$FAILED) {
3004
3094
  peg$currPos = s3;
3005
3095
  s3 = peg$FAILED;
@@ -3030,6 +3120,26 @@ function peg$parse(input, options) {
3030
3120
  return s0;
3031
3121
  }
3032
3122
 
3123
+ function peg$parsetreeEntry() {
3124
+ var s0, s1;
3125
+
3126
+ s0 = peg$parsespread();
3127
+ if (s0 === peg$FAILED) {
3128
+ s0 = peg$parsetreeAssignment();
3129
+ if (s0 === peg$FAILED) {
3130
+ s0 = peg$currPos;
3131
+ s1 = peg$parseidentifier();
3132
+ if (s1 !== peg$FAILED) {
3133
+ peg$savedPos = s0;
3134
+ s1 = peg$f41(s1);
3135
+ }
3136
+ s0 = s1;
3137
+ }
3138
+ }
3139
+
3140
+ return s0;
3141
+ }
3142
+
3033
3143
  function peg$parsewhitespaceWithNewLine() {
3034
3144
  var s0, s1, s2, s3, s4;
3035
3145
 
@@ -3090,8 +3200,8 @@ const peg$allowedStartRules = [
3090
3200
  "absoluteFilePath",
3091
3201
  "args",
3092
3202
  "array",
3093
- "assignment",
3094
- "assignmentOrShorthand",
3203
+ "arrayEntries",
3204
+ "arrayEntry",
3095
3205
  "callTarget",
3096
3206
  "closingBrace",
3097
3207
  "closingBracket",
@@ -3101,6 +3211,7 @@ const peg$allowedStartRules = [
3101
3211
  "doubleArrow",
3102
3212
  "doubleQuoteString",
3103
3213
  "doubleQuoteStringChar",
3214
+ "ellipsis",
3104
3215
  "escapedChar",
3105
3216
  "expr",
3106
3217
  "expression",
@@ -3121,9 +3232,9 @@ const peg$allowedStartRules = [
3121
3232
  "newLine",
3122
3233
  "number",
3123
3234
  "object",
3124
- "objectProperties",
3235
+ "objectEntries",
3236
+ "objectEntry",
3125
3237
  "objectProperty",
3126
- "objectPropertyOrShorthand",
3127
3238
  "parameterizedLambda",
3128
3239
  "parensArgs",
3129
3240
  "pipeline",
@@ -3140,6 +3251,7 @@ const peg$allowedStartRules = [
3140
3251
  "singleLineComment",
3141
3252
  "singleQuoteString",
3142
3253
  "singleQuoteStringChar",
3254
+ "spread",
3143
3255
  "step",
3144
3256
  "start",
3145
3257
  "string",
@@ -3154,7 +3266,9 @@ const peg$allowedStartRules = [
3154
3266
  "templateSubstitution",
3155
3267
  "textChar",
3156
3268
  "tree",
3157
- "treeAssignments",
3269
+ "treeAssignment",
3270
+ "treeEntries",
3271
+ "treeEntry",
3158
3272
  "whitespaceWithNewLine"
3159
3273
  ];
3160
3274