simplex-lang 0.0.7 → 0.2.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","TopicReference","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;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;sCAGkD;AACtD;AACA,IAAI,E;4BAOK;AACT;AACA;AACA;AACA;AACA,EA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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,
@@ -36,12 +36,13 @@ interface ContextHelpers<Data, Globals> {
36
36
  pipe(
37
37
  this: void,
38
38
  head: unknown,
39
- tail: { opt: boolean; next: (_: unknown) => unknown }[]
39
+ tail: { opt: boolean; next: (topic: unknown) => unknown }[]
40
40
  ): unknown
41
41
  }
42
42
 
43
43
  var hasOwn = Object.hasOwn
44
44
  var ERROR_STACK_REGEX = /<anonymous>:(?<row>\d+):(?<col>\d+)/g
45
+ var TOPIC_TOKEN = '%'
45
46
 
46
47
  const defaultContextHelpers: ContextHelpers<
47
48
  Record<string, unknown>,
@@ -52,6 +53,13 @@ const defaultContextHelpers: ContextHelpers<
52
53
  ensureFunction,
53
54
 
54
55
  getIdentifierValue: (identifierName, globals, data) => {
56
+ // TODO Should test on parse time?
57
+ if (identifierName === TOPIC_TOKEN) {
58
+ throw new Error(
59
+ `Topic reference "${TOPIC_TOKEN}" is unbound; it must be inside a pipe body.`
60
+ )
61
+ }
62
+
55
63
  if (identifierName === 'undefined') return undefined
56
64
 
57
65
  if (globals != null && Object.hasOwn(globals, identifierName)) {
@@ -185,15 +193,28 @@ export const defaultBinaryOperators: ExpressionBinaryOperators = {
185
193
  }
186
194
  }
187
195
 
196
+ type LogicalOperatorFunction = (
197
+ left: () => unknown,
198
+ right: () => unknown
199
+ ) => unknown
200
+
188
201
  type ExpressionLogicalOperators = Record<
189
202
  LogicalExpression['operator'],
190
- (left: () => unknown, right: () => unknown) => unknown
203
+ LogicalOperatorFunction
191
204
  >
192
205
 
206
+ const logicalAndOperatorFn: LogicalOperatorFunction = (a, b) =>
207
+ castToBoolean(a()) && castToBoolean(b())
208
+
209
+ const logicalOrOperatorFn: LogicalOperatorFunction = (a, b) =>
210
+ castToBoolean(a()) || castToBoolean(b())
211
+
193
212
  export const defaultLogicalOperators: ExpressionLogicalOperators = {
194
213
  // TODO Use castToBoolean from compile options?
195
- and: (a, b) => castToBoolean(a()) && castToBoolean(b()),
196
- or: (a, b) => castToBoolean(a()) || castToBoolean(b())
214
+ 'and': logicalAndOperatorFn,
215
+ '&&': logicalAndOperatorFn,
216
+ 'or': logicalOrOperatorFn,
217
+ '||': logicalOrOperatorFn
197
218
  }
198
219
 
199
220
  interface ExpressionOperators {
@@ -208,8 +229,6 @@ interface ExpressionOperators {
208
229
  >
209
230
  }
210
231
 
211
- const PIPE_LTR = '_'
212
-
213
232
  export interface SourceLocation {
214
233
  len: number
215
234
  location: Location
@@ -252,10 +271,8 @@ const visitors: {
252
271
  },
253
272
 
254
273
  Identifier: node => {
255
- if (node.name === PIPE_LTR) return [codePart(PIPE_LTR, node)]
256
-
257
274
  const parts: VisitResult[] = [
258
- codePart(`get(${JSON.stringify(node.name)})`, node)
275
+ codePart(`get(scope,${JSON.stringify(node.name)})`, node)
259
276
  ]
260
277
 
261
278
  return parts
@@ -387,25 +404,51 @@ const visitors: {
387
404
  },
388
405
 
389
406
  CallExpression: (node, visit) => {
390
- const innerArgs =
391
- node.arguments.length > 0
392
- ? node.arguments.flatMap(arg => [...visit(arg), codePart(',', node)])
393
- : null
407
+ if (node.arguments.length > 0) {
408
+ const innerArgs = node.arguments.flatMap((arg, index) => [
409
+ ...(arg.type === 'CurryPlaceholder'
410
+ ? [codePart(`a${index}`, arg)]
411
+ : visit(arg)),
412
+ codePart(',', node)
413
+ ])
414
+
415
+ const curriedArgs = node.arguments.flatMap((arg, index) =>
416
+ arg.type === 'CurryPlaceholder' ? [`a${index}`] : []
417
+ )
394
418
 
395
- // remove last comma
396
- innerArgs?.pop()
419
+ // remove last comma
420
+ innerArgs?.pop()
397
421
 
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
- ]
422
+ // call({{callee}},[{{arguments}}])
423
+ let parts: VisitResult[] = [
424
+ codePart('call(', node),
425
+ ...visit(node.callee),
426
+ codePart(',[', node),
427
+ ...innerArgs,
428
+ codePart('])', node)
429
+ ]
407
430
 
408
- return parts
431
+ if (curriedArgs.length > 0) {
432
+ parts = [
433
+ codePart(`(scope=>(${curriedArgs.join()})=>`, node),
434
+ ...parts,
435
+ codePart(')(scope)', node)
436
+ ]
437
+ }
438
+
439
+ return parts
440
+ }
441
+
442
+ //
443
+ else {
444
+ const parts: VisitResult[] = [
445
+ codePart('call(', node),
446
+ ...visit(node.callee),
447
+ codePart(',null)', node)
448
+ ]
449
+
450
+ return parts
451
+ }
409
452
  },
410
453
 
411
454
  NullishCoalescingExpression: (node, visit) => {
@@ -428,11 +471,11 @@ const visitors: {
428
471
 
429
472
  const tailParts: VisitResult[] = [
430
473
  codePart(
431
- `{opt:${opt},next:function(${PIPE_LTR}){return `,
474
+ `{opt:${opt},next:(scope=>topic=>{scope=[["%"],[topic],scope];return `,
432
475
  t.expression
433
476
  ),
434
477
  ...visit(t.expression),
435
- codePart(`}}`, t.expression),
478
+ codePart(`})(scope)}`, t.expression),
436
479
  codePart(`,`, t.expression)
437
480
  ]
438
481
 
@@ -450,6 +493,102 @@ const visitors: {
450
493
  codePart('])', node)
451
494
  ]
452
495
 
496
+ return parts
497
+ },
498
+
499
+ TopicReference: node => {
500
+ const parts: VisitResult[] = [codePart(`get(scope,"${TOPIC_TOKEN}")`, node)]
501
+ return parts
502
+ },
503
+
504
+ LambdaExpression: (node, visit) => {
505
+ // Lambda with parameters
506
+ if (node.params.length > 0) {
507
+ const paramsNames = node.params.map(p => p.name)
508
+
509
+ const fnParams = Array.from(
510
+ { length: paramsNames.length },
511
+ (_, index) => `p${index}`
512
+ )
513
+
514
+ const fnParamsList = fnParams.join()
515
+ const fnParamsNamesList = paramsNames.map(p => JSON.stringify(p)).join()
516
+
517
+ // TODO Is "...args" more performant?
518
+ // (params => function (p0, p1) {
519
+ // var scope = [params, [p0, p1], scope]
520
+ // return {{code}}
521
+ // })(["a", "b"])
522
+ const parts: VisitResult[] = [
523
+ codePart(
524
+ `((scope,params)=>function(${fnParamsList}){scope=[params,[${fnParamsList}],scope];return `,
525
+ node
526
+ ),
527
+ ...visit(node.expression),
528
+ codePart(`})(scope,[${fnParamsNamesList}])`, node)
529
+ ]
530
+
531
+ return parts
532
+ }
533
+
534
+ // Lambda without parameters
535
+ else {
536
+ // (() => {{code}})
537
+ const parts: VisitResult[] = [
538
+ codePart(`(()=>`, node),
539
+ ...visit(node.expression),
540
+ codePart(`)`, node)
541
+ ]
542
+
543
+ return parts
544
+ }
545
+ },
546
+
547
+ LetExpression: (node, visit) => {
548
+ const declarationsNamesSet = new Set()
549
+
550
+ for (const d of node.declarations) {
551
+ if (declarationsNamesSet.has(d.id.name)) {
552
+ throw new CompileError(
553
+ `"${d.id.name}" name defined inside let expression was repeated`,
554
+ '',
555
+ d.id.location
556
+ )
557
+ }
558
+ declarationsNamesSet.add(d.id.name)
559
+ }
560
+
561
+ // (scope=> {
562
+ // var _varNames = [];
563
+ // var _varValues = [];
564
+ // scope = [_varNames, _varValues, scope];
565
+
566
+ // // a = {{init}}
567
+ // _varNames.push("a");
568
+ // _varValues.push({{init}});
569
+
570
+ // // {{expression}}
571
+ // return {{expression}}
572
+ // })(scope)
573
+
574
+ const parts: VisitResult[] = [
575
+ codePart(
576
+ `(scope=>{var _varNames=[];var _varValues=[];scope=[_varNames,_varValues,scope];`,
577
+ node
578
+ ),
579
+ ...node.declarations.flatMap(d => [
580
+ codePart(`_varValues.push(`, d),
581
+ ...visit(d.init),
582
+ codePart(`);`, d),
583
+ codePart(`_varNames.push(`, d),
584
+ codePart(JSON.stringify(d.id.name), d.id),
585
+ codePart(`);`, d)
586
+ ]),
587
+ codePart(`return `, node),
588
+ ...visit(node.expression),
589
+ codePart(`})(scope)`, node)
590
+ ]
591
+
453
592
  return parts
454
593
  }
455
594
  }
@@ -500,28 +639,52 @@ export function compile<
500
639
  options?: CompileOptions<Data, Globals>
501
640
  ): (data?: Data) => unknown {
502
641
  const tree = parse(expression) as ExpressionStatement
503
- const traverseResult = traverse(tree)
642
+ let traverseResult
643
+
644
+ try {
645
+ traverseResult = traverse(tree)
646
+ } catch (err) {
647
+ // TODO Use class to access expression from visitors?
648
+ if (err instanceof CompileError) {
649
+ err.expression = expression
650
+ }
651
+ throw err
652
+ }
504
653
 
505
654
  const { code: expressionCode, offsets } = traverseResult
506
655
 
507
- const bootstrapCodeHead = [
508
- `var bool = ctx.castToBoolean;`,
509
- `var bop = ctx.binaryOperators;`,
510
- `var lop = ctx.logicalOperators;`,
511
- `var uop = ctx.unaryOperators;`,
512
- `var call = ctx.callFunction;`,
513
- `var getIdentifierValue = ctx.getIdentifierValue;`,
514
- `var prop = ctx.getProperty;`,
515
- `var pipe = ctx.pipe;`,
516
- `var globals = ctx.globals ?? null;`,
517
- `return data => {`,
518
- `var get = name => getIdentifierValue(name, globals, data);`,
519
- `return `
520
- ].join('')
656
+ const bootstrapCodeHead =
657
+ `
658
+ var bool=ctx.castToBoolean;
659
+ var bop=ctx.binaryOperators;
660
+ var lop=ctx.logicalOperators;
661
+ var uop=ctx.unaryOperators;
662
+ var call=ctx.callFunction;
663
+ var getIdentifierValue=ctx.getIdentifierValue;
664
+ var prop=ctx.getProperty;
665
+ var pipe=ctx.pipe;
666
+ var globals=ctx.globals??null;
667
+
668
+ function _get(_scope,name){
669
+ if(_scope===null)return getIdentifierValue(name,globals,this);
670
+ var paramIndex=_scope[0].findIndex(it=>it===name);
671
+ if(paramIndex===-1)return _get.call(this,_scope[2],name);
672
+ return _scope[1][paramIndex]
673
+ };
674
+
675
+ return data=>{
676
+ var scope=null;
677
+ var get=_get.bind(data);
678
+ return
679
+ `
680
+ .split('\n')
681
+ .map(it => it.trim())
682
+ .filter(it => it !== '')
683
+ .join('') + ' '
521
684
 
522
685
  const bootstrapCodeHeadLen = bootstrapCodeHead.length
523
686
 
524
- const functionCode = bootstrapCodeHead + expressionCode + ';}'
687
+ const functionCode = bootstrapCodeHead + expressionCode + '}'
525
688
 
526
689
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
527
690
  const defaultOptions: CompileOptions<Data, Globals> = {
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
 
@@ -10,7 +10,10 @@ export type Expression =
10
10
  | ObjectExpression
11
11
  | NullishCoalescingExpression
12
12
  | PipeSequence
13
+ | TopicReference
13
14
  | UnaryExpression
15
+ | LambdaExpression
16
+ | LetExpression
14
17
 
15
18
  export type ExpressionType = Expression['type']
16
19
 
@@ -87,7 +90,12 @@ export type MemberExpression =
87
90
  export interface CallExpression {
88
91
  type: 'CallExpression'
89
92
  callee: Expression
90
- arguments: Expression[]
93
+ arguments: (Expression | CurryPlaceholder)[]
94
+ location: Location
95
+ }
96
+
97
+ export interface CurryPlaceholder {
98
+ type: 'CurryPlaceholder'
91
99
  location: Location
92
100
  }
93
101
 
@@ -123,7 +131,7 @@ export interface BinaryExpression {
123
131
 
124
132
  export interface LogicalExpression {
125
133
  type: 'LogicalExpression'
126
- operator: 'and' | 'or'
134
+ operator: 'and' | '&&' | 'or' | '||'
127
135
  left: Expression
128
136
  right: Expression
129
137
  location: Location
@@ -145,12 +153,38 @@ export interface NullishCoalescingExpression {
145
153
  location: Location
146
154
  }
147
155
 
156
+ export interface TopicReference {
157
+ type: 'TopicReference'
158
+ location: Location
159
+ }
160
+
148
161
  export interface PipeSequence {
149
162
  type: 'PipeSequence'
150
163
  head: Expression
151
164
  tail: {
152
- operator: '|?' | '|'
165
+ operator: '|?' | '|' | '|>'
153
166
  expression: Expression
154
167
  }[]
155
168
  location: Location
156
169
  }
170
+
171
+ export interface LambdaExpression {
172
+ type: 'LambdaExpression'
173
+ params: IdentifierExpression[]
174
+ expression: Expression
175
+ location: Location
176
+ }
177
+
178
+ export interface VariableDeclarator {
179
+ type: 'VariableDeclarator'
180
+ id: IdentifierExpression
181
+ init: Expression
182
+ location: Location
183
+ }
184
+
185
+ export interface LetExpression {
186
+ type: 'LetExpression'
187
+ declarations: VariableDeclarator[]
188
+ expression: Expression
189
+ location: Location
190
+ }
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
@@ -348,18 +349,19 @@ Zs = [\u0020\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]
348
349
 
349
350
  // Tokens
350
351
 
351
- AndToken = "and" !IdentifierPart
352
- ElseToken = "else" !IdentifierPart
353
- FalseToken = "false" !IdentifierPart
354
- IfToken = "if" !IdentifierPart
355
- InToken = "in" !IdentifierPart
356
- NotToken = "not" !IdentifierPart
357
- NullToken = "null" !IdentifierPart
358
- OrToken = "or" !IdentifierPart
359
- ThenToken = "then" !IdentifierPart
360
- TrueToken = "true" !IdentifierPart
361
- TypeofToken = "typeof" !IdentifierPart
362
- ModToken = "mod" !IdentifierPart
352
+ AndToken = "and" !IdentifierPart
353
+ ElseToken = "else" !IdentifierPart
354
+ FalseToken = "false" !IdentifierPart
355
+ IfToken = "if" !IdentifierPart
356
+ InToken = "in" !IdentifierPart
357
+ NotToken = "not" !IdentifierPart
358
+ NullToken = "null" !IdentifierPart
359
+ OrToken = "or" !IdentifierPart
360
+ ThenToken = "then" !IdentifierPart
361
+ TrueToken = "true" !IdentifierPart
362
+ TypeofToken = "typeof" !IdentifierPart
363
+ ModToken = "mod" !IdentifierPart
364
+ LetToken = "let" !IdentifierPart
363
365
 
364
366
  // Skipped
365
367
  __
@@ -369,9 +371,7 @@ _
369
371
  = (WhiteSpace / MultiLineCommentNoLineTerminator)*
370
372
 
371
373
  EOS
372
- = __ ";"
373
- / _ SingleLineComment? LineTerminatorSequence
374
- / _ &"}"
374
+ = _ SingleLineComment? LineTerminatorSequence
375
375
  / __ EOF
376
376
 
377
377
  EOF
@@ -380,6 +380,7 @@ EOF
380
380
  PrimaryExpression
381
381
  = Identifier
382
382
  / Literal
383
+ / TopicReference
383
384
  / ArrayLiteral
384
385
  / ObjectLiteral
385
386
  / "(" __ expression:Expression __ ")" { return expression; }
@@ -551,10 +552,22 @@ Arguments
551
552
  }
552
553
 
553
554
  ArgumentList
554
- = head:Expression tail:(__ "," __ Expression)* {
555
+ = head:CallArgument tail:(__ "," __ CallArgument)* {
555
556
  return buildList(head, tail, 3);
556
557
  }
557
558
 
559
+ CallArgument
560
+ = Expression
561
+ / CurryPlaceholder
562
+
563
+ CurryPlaceholder
564
+ = "#" {
565
+ return {
566
+ type: 'CurryPlaceholder',
567
+ location: getLocation(location())
568
+ }
569
+ }
570
+
558
571
  LeftHandSideExpression
559
572
  = CallExpression
560
573
  / MemberExpression
@@ -640,6 +653,7 @@ LogicalANDExpression
640
653
 
641
654
  LogicalANDOperator
642
655
  = $AndToken
656
+ / "&&"
643
657
 
644
658
  LogicalORExpression
645
659
  = head:LogicalANDExpression
@@ -648,6 +662,7 @@ LogicalORExpression
648
662
 
649
663
  LogicalOROperator
650
664
  = $OrToken
665
+ / "||"
651
666
 
652
667
  ConditionalExpression
653
668
  = IfToken __ test:Expression __ ThenToken __
@@ -702,10 +717,78 @@ PipeExpression
702
717
 
703
718
  PipeOperator
704
719
  = "|?"
720
+ / "|>"
705
721
  / "|"
706
722
 
723
+ TopicReference
724
+ = "%" {
725
+ return {
726
+ type: "TopicReference",
727
+ location: getLocation(location())
728
+ };
729
+ }
730
+
731
+ LambdaExpression
732
+ = "(" __ params:(FormalParameterList __)? ")" __ LambdaArrow __ body:Expression {
733
+ return {
734
+ type: "LambdaExpression",
735
+ params: optionalList(extractOptional(params, 0)),
736
+ expression: body,
737
+ location: getLocation(location())
738
+ };
739
+ }
740
+ / __ param:Identifier __ LambdaArrow __ body:Expression {
741
+ return {
742
+ type: "LambdaExpression",
743
+ params: [param],
744
+ expression: body,
745
+ location: getLocation(location())
746
+ }
747
+ }
748
+
749
+ LambdaArrow
750
+ = "=>"
751
+
752
+ FormalParameterList
753
+ = head:Identifier tail:(__ "," __ Identifier)* {
754
+ return buildList(head, tail, 3);
755
+ }
756
+
757
+ LetExpression
758
+ = LetToken __ declarations:VariableDeclarationList __ "," __ body:Expression {
759
+ return {
760
+ type: "LetExpression",
761
+ declarations,
762
+ expression: body,
763
+ location: getLocation(location())
764
+ }
765
+ }
766
+
767
+ VariableDeclarationList
768
+ = head:VariableDeclaration tail:(__ "," __ VariableDeclaration)* {
769
+ return buildList(head, tail, 3);
770
+ }
771
+
772
+ VariableDeclaration
773
+ = id:Identifier init:(__ Initialiser) {
774
+ return {
775
+ type: "VariableDeclarator",
776
+ id: id,
777
+ init: extractOptional(init, 1),
778
+ location: getLocation(location())
779
+ };
780
+ }
781
+
782
+ Initialiser
783
+ = EqualOperator __ expression:Expression { return expression; }
784
+
785
+ EqualOperator
786
+ = "=" !"="
787
+
707
788
  Expression
708
- = PipeExpression
789
+ = LetExpression
790
+ / LambdaExpression
791
+ / PipeExpression
709
792
 
710
793
  ExpressionStatement
711
794
  = expression:Expression? EOS {
@@ -714,3 +797,4 @@ ExpressionStatement
714
797
  expression: expression
715
798
  };
716
799
  }
800
+