simplex-lang 0.0.7 → 0.1.0

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/simplex.peggy"],"names":["$top_level_initializer","Start","SourceCharacter","WhiteSpace","LineTerminator","LineTerminatorSequence","Comment","MultiLineComment","MultiLineCommentNoLineTerminator","SingleLineComment","Identifier","IdentifierName","IdentifierStart","IdentifierPart","UnicodeLetter","UnicodeCombiningMark","ReservedWord","Keyword","Literal","NullLiteral","BooleanLiteral","NumericLiteral","DecimalLiteral","DecimalIntegerLiteral","DecimalDigit","NonZeroDigit","ExponentPart","ExponentIndicator","SignedInteger","HexIntegerLiteral","HexDigit","StringLiteral","DoubleStringCharacter","SingleStringCharacter","LineContinuation","EscapeSequence","CharacterEscapeSequence","SingleEscapeCharacter","NonEscapeCharacter","EscapeCharacter","HexEscapeSequence","UnicodeEscapeSequence","Ll","Lm","Lo","Lt","Lu","Mc","Mn","Nd","Nl","Pc","Zs","AndToken","ElseToken","FalseToken","IfToken","InToken","NotToken","NullToken","OrToken","ThenToken","TrueToken","TypeofToken","ModToken","__","_","EOS","EOF","PrimaryExpression","ArrayLiteral","ElementList","Elision","ObjectLiteral","PropertyNameAndValueList","PropertyAssignment","PropertyName","MemberExpression","CallExpression","Arguments","ArgumentList","LeftHandSideExpression","ExponentiationExpression","ExponentiationOperator","UnaryExpression","UnaryOperator","MultiplicativeExpression","MultiplicativeOperator","AdditiveExpression","AdditiveOperator","ConcatenationExpression","ConcatenationOperator","RelationalExpression","RelationalOperator","EqualityExpression","EqualityOperator","LogicalANDExpression","LogicalANDOperator","LogicalORExpression","LogicalOROperator","ConditionalExpression","NullishCoalescingExpression","NullishCoalescingOperator","PipeExpression","PipeOperator","ExpressionStatement"],"mappings":";;;;;AAAEA;AACFA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAIyC,mBAAmB,E;+BAsCrB,cAAc,E;qCAGN;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAI,E;mCAMqC,kBAAkB,E;2BAmD5C;AACf;AACA;AACA;AACA;AACA;AACA,IAAI,E;2BAGW;AACf;AACA;AACA;AACA;AACA;AACA,IAAI,E;2BACY;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,E;kCAG6D;AACjE;AACA,IAAI,E;kCAC0D;AAC9D;AACA,IAAI,E;2BAGuD;AAC3D;AACA;AACA;AACA;AACA;AACA,IAAI,E;4BACiC;AACrC;AACA;AACA;AACA;AACA;AACA,IAAI,E;4BACqC;AACzC;AACA;AACA;AACA;AACA;AACA,IAAI,E;kCAsByB;AAC7B;AACA;AACA;AACA;AACA;AACA,IAAI,E;iCAMsC;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,E;iCACsC;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,E;4BAGgD,gBAAgB,E;oCAClC,kBAAkB,E;4BAIA,gBAAgB,E;oCAClC,kBAAkB,E;4BAInB,YAAY,E;4BAItB,cAAc,E;4BAY3B,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BAGiC,gBAAgB,E;kCASpC;AACrC;AACA,IAAI,E;kCAGmD;AACvD;AACA,IAAI,E;sCAuEqC,oBAAoB,E;mCAGvB;AACtC;AACA;AACA;AACA;AACA;AACA,IAAI,E;oCACoC;AACxC;AACA;AACA;AACA;AACA;AACA,IAAI,E;6CACiE;AACrE;AACA;AACA;AACA;AACA;AACA,IAAI,E;4CAI4C;AAChD;AACA,MAAM,E;kDAGoD;AAC1D;AACA,MAAM,E;sCAED,kDAAkD,E;kCAG7B,8CAA8C,E;4BAGxD;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,E;sCACmD;AACvD;AACA;AACA;AACA;AACA;AACA,IAAI,E;sCAC0D;AAC9D;AACA;AACA;AACA;AACA;AACA,IAAI,E;sCAG8D;AAClE;AACA,IAAI,E;sCAG6C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,E;0CAY0C;AAC9C;AACA;AACA;AACA,QAAQ,E;0CACmC;AAC3C;AACA;AACA;AACA,QAAQ,E;0CACoC;AAC5C;AACA;AACA;AACA,QAAQ,E;sCAEH;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,E;wCAI6C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,E;sCAGqB;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAQ,E;0CACsC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,E;0CACmC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,E;sCAEH;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,E;gCAGoC;AACxC;AACA,IAAI,E;sCAG8C;AAClD;AACA,IAAI,E;sCASC,uDAAuD,E;8CAOJ;AACxD;AACA;AACA;AACA;AACA;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","file":"index.js"}
1
+ {"version":3,"sources":["../src/simplex.peggy"],"names":["$top_level_initializer","Start","SourceCharacter","WhiteSpace","LineTerminator","LineTerminatorSequence","Comment","MultiLineComment","MultiLineCommentNoLineTerminator","SingleLineComment","Identifier","IdentifierName","IdentifierStart","IdentifierPart","UnicodeLetter","UnicodeCombiningMark","ReservedWord","Keyword","Literal","NullLiteral","BooleanLiteral","NumericLiteral","DecimalLiteral","DecimalIntegerLiteral","DecimalDigit","NonZeroDigit","ExponentPart","ExponentIndicator","SignedInteger","HexIntegerLiteral","HexDigit","StringLiteral","DoubleStringCharacter","SingleStringCharacter","LineContinuation","EscapeSequence","CharacterEscapeSequence","SingleEscapeCharacter","NonEscapeCharacter","EscapeCharacter","HexEscapeSequence","UnicodeEscapeSequence","Ll","Lm","Lo","Lt","Lu","Mc","Mn","Nd","Nl","Pc","Zs","AndToken","ElseToken","FalseToken","IfToken","InToken","NotToken","NullToken","OrToken","ThenToken","TrueToken","TypeofToken","ModToken","LetToken","__","_","EOS","EOF","PrimaryExpression","ArrayLiteral","ElementList","Elision","ObjectLiteral","PropertyNameAndValueList","PropertyAssignment","PropertyName","MemberExpression","CallExpression","Arguments","ArgumentList","CallArgument","CurryPlaceholder","LeftHandSideExpression","ExponentiationExpression","ExponentiationOperator","UnaryExpression","UnaryOperator","MultiplicativeExpression","MultiplicativeOperator","AdditiveExpression","AdditiveOperator","ConcatenationExpression","ConcatenationOperator","RelationalExpression","RelationalOperator","EqualityExpression","EqualityOperator","LogicalANDExpression","LogicalANDOperator","LogicalORExpression","LogicalOROperator","ConditionalExpression","NullishCoalescingExpression","NullishCoalescingOperator","PipeExpression","PipeOperator","LambdaExpression","LambdaArrow","FormalParameterList","LetExpression","VariableDeclarationList","VariableDeclaration","Initialiser","EqualOperator","Expression","ExpressionStatement"],"mappings":";;;;;AAAEA;AACFA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAIyC,mBAAmB,E;+BAsCrB,cAAc,E;qCAGN;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAI,E;mCAMqC,kBAAkB,E;2BAoD5C;AACf;AACA;AACA;AACA;AACA;AACA,IAAI,E;2BAGW;AACf;AACA;AACA;AACA;AACA;AACA,IAAI,E;2BACY;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,E;kCAG6D;AACjE;AACA,IAAI,E;kCAC0D;AAC9D;AACA,IAAI,E;2BAGuD;AAC3D;AACA;AACA;AACA;AACA;AACA,IAAI,E;4BACiC;AACrC;AACA;AACA;AACA;AACA;AACA,IAAI,E;4BACqC;AACzC;AACA;AACA;AACA;AACA;AACA,IAAI,E;kCAsByB;AAC7B;AACA;AACA;AACA;AACA;AACA,IAAI,E;iCAMsC;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,E;iCACsC;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,E;4BAGgD,gBAAgB,E;oCAClC,kBAAkB,E;4BAIA,gBAAgB,E;oCAClC,kBAAkB,E;4BAInB,YAAY,E;4BAItB,cAAc,E;4BAY3B,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BACd,cAAc,E;4BAGiC,gBAAgB,E;kCASpC;AACrC;AACA,IAAI,E;kCAGmD;AACvD;AACA,IAAI,E;sCAwEqC,oBAAoB,E;mCAGvB;AACtC;AACA;AACA;AACA;AACA;AACA,IAAI,E;oCACoC;AACxC;AACA;AACA;AACA;AACA;AACA,IAAI,E;6CACiE;AACrE;AACA;AACA;AACA;AACA;AACA,IAAI,E;4CAI4C;AAChD;AACA,MAAM,E;kDAGoD;AAC1D;AACA,MAAM,E;sCAED,kDAAkD,E;kCAG7B,8CAA8C,E;4BAGxD;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,E;sCACmD;AACvD;AACA;AACA;AACA;AACA;AACA,IAAI,E;sCAC0D;AAC9D;AACA;AACA;AACA;AACA;AACA,IAAI,E;sCAG8D;AAClE;AACA,IAAI,E;sCAG6C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,E;0CAY0C;AAC9C;AACA;AACA;AACA,QAAQ,E;0CACmC;AAC3C;AACA;AACA;AACA,QAAQ,E;0CACoC;AAC5C;AACA;AACA;AACA,QAAQ,E;sCAEH;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,E;wCAI6C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,E;sCAGqB;AAC3B;AACA;AACA;AACA;AACA;AACA,QAAQ,E;0CACsC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,E;0CACmC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,E;sCAEH;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,E;gCAGoC;AACxC;AACA,IAAI,E;sCAGkD;AACtD;AACA,IAAI,E;4BAOK;AACT;AACA;AACA;AACA;AACA,EAAE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","file":"index.js"}
package/src/compiler.ts CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  // eslint-disable-next-line n/no-missing-import
4
4
  import { parse } from '../parser/index.js'
5
- import { ExpressionError, UnexpectedTypeError } from './errors.js'
5
+ import { CompileError, ExpressionError, UnexpectedTypeError } from './errors.js'
6
6
  import {
7
7
  BinaryExpression,
8
8
  Expression,
@@ -255,7 +255,7 @@ const visitors: {
255
255
  if (node.name === PIPE_LTR) return [codePart(PIPE_LTR, node)]
256
256
 
257
257
  const parts: VisitResult[] = [
258
- codePart(`get(${JSON.stringify(node.name)})`, node)
258
+ codePart(`get(scope,${JSON.stringify(node.name)})`, node)
259
259
  ]
260
260
 
261
261
  return parts
@@ -387,25 +387,51 @@ const visitors: {
387
387
  },
388
388
 
389
389
  CallExpression: (node, visit) => {
390
- const innerArgs =
391
- node.arguments.length > 0
392
- ? node.arguments.flatMap(arg => [...visit(arg), codePart(',', node)])
393
- : null
390
+ if (node.arguments.length > 0) {
391
+ const innerArgs = node.arguments.flatMap((arg, index) => [
392
+ ...(arg.type === 'CurryPlaceholder'
393
+ ? [codePart(`a${index}`, arg)]
394
+ : visit(arg)),
395
+ codePart(',', node)
396
+ ])
397
+
398
+ const curriedArgs = node.arguments.flatMap((arg, index) =>
399
+ arg.type === 'CurryPlaceholder' ? [`a${index}`] : []
400
+ )
394
401
 
395
- // remove last comma
396
- innerArgs?.pop()
402
+ // remove last comma
403
+ innerArgs?.pop()
397
404
 
398
- const parts: VisitResult[] = [
399
- codePart('call(', node),
400
- ...visit(node.callee),
401
- codePart(',', node),
402
- ...(innerArgs === null
403
- ? [codePart('null', node)]
404
- : [codePart('[', node), ...innerArgs, codePart(']', node)]),
405
- codePart(')', node)
406
- ]
405
+ // call({{callee}},[{{arguments}}])
406
+ let parts: VisitResult[] = [
407
+ codePart('call(', node),
408
+ ...visit(node.callee),
409
+ codePart(',[', node),
410
+ ...innerArgs,
411
+ codePart('])', node)
412
+ ]
407
413
 
408
- return parts
414
+ if (curriedArgs.length > 0) {
415
+ parts = [
416
+ codePart(`(scope=>(${curriedArgs.join()})=>`, node),
417
+ ...parts,
418
+ codePart(')(scope)', node)
419
+ ]
420
+ }
421
+
422
+ return parts
423
+ }
424
+
425
+ //
426
+ else {
427
+ const parts: VisitResult[] = [
428
+ codePart('call(', node),
429
+ ...visit(node.callee),
430
+ codePart(',null)', node)
431
+ ]
432
+
433
+ return parts
434
+ }
409
435
  },
410
436
 
411
437
  NullishCoalescingExpression: (node, visit) => {
@@ -450,6 +476,97 @@ const visitors: {
450
476
  codePart('])', node)
451
477
  ]
452
478
 
479
+ return parts
480
+ },
481
+
482
+ LambdaExpression: (node, visit) => {
483
+ // Lambda with parameters
484
+ if (node.params.length > 0) {
485
+ const paramsNames = node.params.map(p => p.name)
486
+
487
+ const fnParams = Array.from(
488
+ { length: paramsNames.length },
489
+ (_, index) => `p${index}`
490
+ )
491
+
492
+ const fnParamsList = fnParams.join()
493
+ const fnParamsNamesList = paramsNames.map(p => JSON.stringify(p)).join()
494
+
495
+ // TODO Is "...args" more performant?
496
+ // (params => function (p0, p1) {
497
+ // var scope = [params, [p0, p1], scope]
498
+ // return {{code}}
499
+ // })(["a", "b"])
500
+ const parts: VisitResult[] = [
501
+ codePart(
502
+ `((scope,params)=>function(${fnParamsList}){scope=[params,[${fnParamsList}],scope];return `,
503
+ node
504
+ ),
505
+ ...visit(node.expression),
506
+ codePart(`})(scope,[${fnParamsNamesList}])`, node)
507
+ ]
508
+
509
+ return parts
510
+ }
511
+
512
+ // Lambda without parameters
513
+ else {
514
+ // (() => {{code}})
515
+ const parts: VisitResult[] = [
516
+ codePart(`(()=>`, node),
517
+ ...visit(node.expression),
518
+ codePart(`)`, node)
519
+ ]
520
+
521
+ return parts
522
+ }
523
+ },
524
+
525
+ LetExpression: (node, visit) => {
526
+ const declarationsNamesSet = new Set()
527
+
528
+ for (const d of node.declarations) {
529
+ if (declarationsNamesSet.has(d.id.name)) {
530
+ throw new CompileError(
531
+ `"${d.id.name}" name defined inside let expression was repeated`,
532
+ '',
533
+ d.id.location
534
+ )
535
+ }
536
+ declarationsNamesSet.add(d.id.name)
537
+ }
538
+
539
+ // (scope=> {
540
+ // var _varNames = [];
541
+ // var _varValues = [];
542
+ // scope = [_varNames, _varValues, scope];
543
+
544
+ // // a = {{init}}
545
+ // _varNames.push("a");
546
+ // _varValues.push({{init}});
547
+
548
+ // // {{expression}}
549
+ // return {{expression}}
550
+ // })(scope)
551
+
552
+ const parts: VisitResult[] = [
553
+ codePart(
554
+ `(scope=>{var _varNames=[];var _varValues=[];scope=[_varNames,_varValues,scope];`,
555
+ node
556
+ ),
557
+ ...node.declarations.flatMap(d => [
558
+ codePart(`_varValues.push(`, d),
559
+ ...visit(d.init),
560
+ codePart(`);`, d),
561
+ codePart(`_varNames.push(`, d),
562
+ codePart(JSON.stringify(d.id.name), d.id),
563
+ codePart(`);`, d)
564
+ ]),
565
+ codePart(`return `, node),
566
+ ...visit(node.expression),
567
+ codePart(`})(scope)`, node)
568
+ ]
569
+
453
570
  return parts
454
571
  }
455
572
  }
@@ -500,7 +617,17 @@ export function compile<
500
617
  options?: CompileOptions<Data, Globals>
501
618
  ): (data?: Data) => unknown {
502
619
  const tree = parse(expression) as ExpressionStatement
503
- const traverseResult = traverse(tree)
620
+ let traverseResult
621
+
622
+ try {
623
+ traverseResult = traverse(tree)
624
+ } catch (err) {
625
+ // TODO Use class to access expression from visitors?
626
+ if (err instanceof CompileError) {
627
+ err.expression = expression
628
+ }
629
+ throw err
630
+ }
504
631
 
505
632
  const { code: expressionCode, offsets } = traverseResult
506
633
 
@@ -515,7 +642,13 @@ export function compile<
515
642
  `var pipe = ctx.pipe;`,
516
643
  `var globals = ctx.globals ?? null;`,
517
644
  `return data => {`,
518
- `var get = name => getIdentifierValue(name, globals, data);`,
645
+ `var scope = null;`,
646
+ `var get = (scope, name) => {`,
647
+ `if (scope === null) return getIdentifierValue(name, globals, data);`,
648
+ `var paramIndex = scope[0].findIndex(it => it === name);`,
649
+ `if (paramIndex === -1) return get(scope[2], name);`,
650
+ `return scope[1][paramIndex]`,
651
+ `};`,
519
652
  `return `
520
653
  ].join('')
521
654
 
package/src/errors.ts CHANGED
@@ -12,6 +12,17 @@ export class ExpressionError extends Error {
12
12
  }
13
13
  }
14
14
 
15
+ export class CompileError extends Error {
16
+ constructor(
17
+ message: string,
18
+ public expression: string,
19
+ public location: Location | null,
20
+ options?: ErrorOptions
21
+ ) {
22
+ super(message, options)
23
+ }
24
+ }
25
+
15
26
  export class UnexpectedTypeError extends TypeError {
16
27
  I18N_STRING = 'UNEXPECTED_TYPE'
17
28
 
@@ -11,6 +11,8 @@ export type Expression =
11
11
  | NullishCoalescingExpression
12
12
  | PipeSequence
13
13
  | UnaryExpression
14
+ | LambdaExpression
15
+ | LetExpression
14
16
 
15
17
  export type ExpressionType = Expression['type']
16
18
 
@@ -87,7 +89,12 @@ export type MemberExpression =
87
89
  export interface CallExpression {
88
90
  type: 'CallExpression'
89
91
  callee: Expression
90
- arguments: Expression[]
92
+ arguments: (Expression | CurryPlaceholder)[]
93
+ location: Location
94
+ }
95
+
96
+ export interface CurryPlaceholder {
97
+ type: 'CurryPlaceholder'
91
98
  location: Location
92
99
  }
93
100
 
@@ -154,3 +161,24 @@ export interface PipeSequence {
154
161
  }[]
155
162
  location: Location
156
163
  }
164
+
165
+ export interface LambdaExpression {
166
+ type: 'LambdaExpression'
167
+ params: IdentifierExpression[]
168
+ expression: Expression
169
+ location: Location
170
+ }
171
+
172
+ export interface VariableDeclarator {
173
+ type: 'VariableDeclarator'
174
+ id: IdentifierExpression
175
+ init: Expression
176
+ location: Location
177
+ }
178
+
179
+ export interface LetExpression {
180
+ type: 'LetExpression'
181
+ declarations: VariableDeclarator[]
182
+ expression: Expression
183
+ location: Location
184
+ }
package/src/simplex.peggy CHANGED
@@ -150,6 +150,7 @@ Keyword
150
150
  / OrToken
151
151
  / ThenToken
152
152
  / TypeofToken
153
+ / LetToken
153
154
 
154
155
  Literal
155
156
  = NullLiteral
@@ -360,6 +361,7 @@ ThenToken = "then" !IdentifierPart
360
361
  TrueToken = "true" !IdentifierPart
361
362
  TypeofToken = "typeof" !IdentifierPart
362
363
  ModToken = "mod" !IdentifierPart
364
+ LetToken = "let" !IdentifierPart
363
365
 
364
366
  // Skipped
365
367
  __
@@ -551,10 +553,22 @@ Arguments
551
553
  }
552
554
 
553
555
  ArgumentList
554
- = head:Expression tail:(__ "," __ Expression)* {
556
+ = head:CallArgument tail:(__ "," __ CallArgument)* {
555
557
  return buildList(head, tail, 3);
556
558
  }
557
559
 
560
+ CallArgument
561
+ = Expression
562
+ / CurryPlaceholder
563
+
564
+ CurryPlaceholder
565
+ = "%" {
566
+ return {
567
+ type: 'CurryPlaceholder',
568
+ location: getLocation(location())
569
+ }
570
+ }
571
+
558
572
  LeftHandSideExpression
559
573
  = CallExpression
560
574
  / MemberExpression
@@ -640,6 +654,7 @@ LogicalANDExpression
640
654
 
641
655
  LogicalANDOperator
642
656
  = $AndToken
657
+ / "&&"
643
658
 
644
659
  LogicalORExpression
645
660
  = head:LogicalANDExpression
@@ -648,6 +663,7 @@ LogicalORExpression
648
663
 
649
664
  LogicalOROperator
650
665
  = $OrToken
666
+ / "||"
651
667
 
652
668
  ConditionalExpression
653
669
  = IfToken __ test:Expression __ ThenToken __
@@ -704,8 +720,67 @@ PipeOperator
704
720
  = "|?"
705
721
  / "|"
706
722
 
723
+ LambdaExpression
724
+ = "(" __ params:(FormalParameterList __)? ")" __ LambdaArrow __ body:Expression {
725
+ return {
726
+ type: "LambdaExpression",
727
+ params: optionalList(extractOptional(params, 0)),
728
+ expression: body,
729
+ location: getLocation(location())
730
+ };
731
+ }
732
+ / __ param:Identifier __ LambdaArrow __ body:Expression {
733
+ return {
734
+ type: "LambdaExpression",
735
+ params: [param],
736
+ expression: body,
737
+ location: getLocation(location())
738
+ }
739
+ }
740
+
741
+ LambdaArrow
742
+ = "=>"
743
+
744
+ FormalParameterList
745
+ = head:Identifier tail:(__ "," __ Identifier)* {
746
+ return buildList(head, tail, 3);
747
+ }
748
+
749
+ LetExpression
750
+ = LetToken __ declarations:VariableDeclarationList __ "," __ body:Expression {
751
+ return {
752
+ type: "LetExpression",
753
+ declarations,
754
+ expression: body,
755
+ location: getLocation(location())
756
+ }
757
+ }
758
+
759
+ VariableDeclarationList
760
+ = head:VariableDeclaration tail:(__ "," __ VariableDeclaration)* {
761
+ return buildList(head, tail, 3);
762
+ }
763
+
764
+ VariableDeclaration
765
+ = id:Identifier init:(__ Initialiser) {
766
+ return {
767
+ type: "VariableDeclarator",
768
+ id: id,
769
+ init: extractOptional(init, 1),
770
+ location: getLocation(location())
771
+ };
772
+ }
773
+
774
+ Initialiser
775
+ = EqualOperator __ expression:Expression { return expression; }
776
+
777
+ EqualOperator
778
+ = "=" !"="
779
+
707
780
  Expression
708
- = PipeExpression
781
+ = LetExpression
782
+ / LambdaExpression
783
+ / PipeExpression
709
784
 
710
785
  ExpressionStatement
711
786
  = expression:Expression? EOS {
@@ -714,3 +789,4 @@ ExpressionStatement
714
789
  expression: expression
715
790
  };
716
791
  }
792
+