yukigo 0.1.0 → 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.
Files changed (144) hide show
  1. package/.mocharc.json +3 -3
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +193 -199
  4. package/dist/analyzer/GraphBuilder.d.ts +29 -0
  5. package/dist/analyzer/GraphBuilder.js +99 -0
  6. package/dist/analyzer/index.d.ts +11 -23
  7. package/dist/analyzer/index.js +100 -58
  8. package/dist/analyzer/inspections/functional/functional.d.ts +44 -0
  9. package/dist/analyzer/inspections/functional/functional.js +149 -0
  10. package/dist/analyzer/inspections/functional/smells.d.ts +16 -0
  11. package/dist/analyzer/inspections/functional/smells.js +98 -0
  12. package/dist/analyzer/inspections/{generic.d.ts → generic/generic.d.ts} +70 -43
  13. package/dist/analyzer/inspections/generic/generic.js +604 -0
  14. package/dist/analyzer/inspections/generic/smells.d.ts +61 -0
  15. package/dist/analyzer/inspections/generic/smells.js +349 -0
  16. package/dist/analyzer/inspections/imperative/imperative.d.ts +35 -0
  17. package/dist/analyzer/inspections/imperative/imperative.js +109 -0
  18. package/dist/analyzer/inspections/imperative/smells.d.ts +16 -0
  19. package/dist/analyzer/inspections/imperative/smells.js +58 -0
  20. package/dist/analyzer/inspections/logic/logic.d.ts +32 -0
  21. package/dist/analyzer/inspections/logic/logic.js +96 -0
  22. package/dist/analyzer/inspections/logic/smells.d.ts +15 -0
  23. package/dist/analyzer/inspections/logic/smells.js +60 -0
  24. package/dist/analyzer/inspections/object/object.d.ts +88 -0
  25. package/dist/analyzer/inspections/object/object.js +319 -0
  26. package/dist/analyzer/inspections/object/smells.d.ts +30 -0
  27. package/dist/analyzer/inspections/object/smells.js +135 -0
  28. package/dist/analyzer/utils.d.ts +26 -4
  29. package/dist/analyzer/utils.js +71 -13
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.js +1 -0
  32. package/dist/interpreter/components/EnvBuilder.d.ts +9 -5
  33. package/dist/interpreter/components/EnvBuilder.js +100 -30
  34. package/dist/interpreter/components/Operations.d.ts +4 -4
  35. package/dist/interpreter/components/Operations.js +17 -2
  36. package/dist/interpreter/components/PatternMatcher.d.ts +47 -17
  37. package/dist/interpreter/components/PatternMatcher.js +264 -119
  38. package/dist/interpreter/components/RuntimeContext.d.ts +35 -0
  39. package/dist/interpreter/components/RuntimeContext.js +93 -0
  40. package/dist/interpreter/components/TestRunner.d.ts +18 -0
  41. package/dist/interpreter/components/TestRunner.js +103 -0
  42. package/dist/interpreter/components/Visitor.d.ts +63 -57
  43. package/dist/interpreter/components/Visitor.js +508 -173
  44. package/dist/interpreter/components/logic/LogicEngine.d.ts +29 -0
  45. package/dist/interpreter/components/logic/LogicEngine.js +259 -0
  46. package/dist/interpreter/components/logic/LogicResolver.d.ts +53 -0
  47. package/dist/interpreter/components/logic/LogicResolver.js +471 -0
  48. package/dist/interpreter/components/logic/LogicTranslator.d.ts +14 -0
  49. package/dist/interpreter/components/logic/LogicTranslator.js +99 -0
  50. package/dist/interpreter/components/runtimes/FunctionRuntime.d.ts +12 -0
  51. package/dist/interpreter/components/runtimes/FunctionRuntime.js +147 -0
  52. package/dist/interpreter/components/runtimes/LazyRuntime.d.ts +19 -0
  53. package/dist/interpreter/components/runtimes/LazyRuntime.js +269 -0
  54. package/dist/interpreter/components/runtimes/ObjectRuntime.d.ts +35 -0
  55. package/dist/interpreter/components/runtimes/ObjectRuntime.js +126 -0
  56. package/dist/interpreter/entities.d.ts +105 -0
  57. package/dist/interpreter/entities.js +96 -0
  58. package/dist/interpreter/errors.d.ts +1 -1
  59. package/dist/interpreter/index.d.ts +4 -12
  60. package/dist/interpreter/index.js +10 -13
  61. package/dist/interpreter/trampoline.d.ts +17 -0
  62. package/dist/interpreter/trampoline.js +38 -0
  63. package/dist/interpreter/utils.d.ts +4 -7
  64. package/dist/interpreter/utils.js +25 -17
  65. package/dist/tester/index.d.ts +25 -0
  66. package/dist/tester/index.js +108 -0
  67. package/dist/utils/helpers.d.ts +0 -4
  68. package/dist/utils/helpers.js +20 -24
  69. package/package.json +2 -2
  70. package/src/analyzer/GraphBuilder.ts +142 -0
  71. package/src/analyzer/index.ts +185 -132
  72. package/src/analyzer/inspections/functional/functional.ts +121 -0
  73. package/src/analyzer/inspections/functional/smells.ts +102 -0
  74. package/src/analyzer/inspections/{generic.ts → generic/generic.ts} +581 -499
  75. package/src/analyzer/inspections/generic/smells.ts +365 -0
  76. package/src/analyzer/inspections/imperative/imperative.ts +101 -0
  77. package/src/analyzer/inspections/imperative/smells.ts +54 -0
  78. package/src/analyzer/inspections/logic/logic.ts +90 -0
  79. package/src/analyzer/inspections/logic/smells.ts +54 -0
  80. package/src/analyzer/inspections/{object.ts → object/object.ts} +264 -282
  81. package/src/analyzer/inspections/object/smells.ts +144 -0
  82. package/src/analyzer/utils.ts +109 -26
  83. package/src/index.ts +3 -2
  84. package/src/interpreter/components/EnvBuilder.ts +202 -97
  85. package/src/interpreter/components/Operations.ts +99 -81
  86. package/src/interpreter/components/PatternMatcher.ts +475 -254
  87. package/src/interpreter/components/RuntimeContext.ts +119 -0
  88. package/src/interpreter/components/TestRunner.ts +151 -0
  89. package/src/interpreter/components/Visitor.ts +1065 -493
  90. package/src/interpreter/components/logic/LogicEngine.ts +519 -0
  91. package/src/interpreter/components/logic/LogicResolver.ts +858 -0
  92. package/src/interpreter/components/logic/LogicTranslator.ts +149 -0
  93. package/src/interpreter/components/runtimes/FunctionRuntime.ts +227 -0
  94. package/src/interpreter/components/runtimes/LazyRuntime.ts +334 -0
  95. package/src/interpreter/components/runtimes/ObjectRuntime.ts +224 -0
  96. package/src/interpreter/errors.ts +47 -47
  97. package/src/interpreter/index.ts +52 -59
  98. package/src/interpreter/trampoline.ts +71 -0
  99. package/src/interpreter/utils.ts +84 -79
  100. package/src/tester/index.ts +128 -0
  101. package/src/utils/helpers.ts +67 -73
  102. package/tests/analyzer/functional.spec.ts +207 -221
  103. package/tests/analyzer/generic.spec.ts +178 -100
  104. package/tests/analyzer/helpers.spec.ts +83 -83
  105. package/tests/analyzer/logic.spec.ts +237 -292
  106. package/tests/analyzer/oop.spec.ts +323 -338
  107. package/tests/analyzer/transitive.spec.ts +166 -0
  108. package/tests/interpreter/EnvBuilder.spec.ts +183 -178
  109. package/tests/interpreter/FunctionRuntime.spec.ts +223 -234
  110. package/tests/interpreter/LazyRuntime.spec.ts +225 -190
  111. package/tests/interpreter/LogicEngine.spec.ts +327 -194
  112. package/tests/interpreter/LogicSubstitution.spec.ts +80 -0
  113. package/tests/interpreter/ObjectRuntime.spec.ts +606 -0
  114. package/tests/interpreter/Operations.spec.ts +220 -220
  115. package/tests/interpreter/PatternSystem.spec.ts +213 -189
  116. package/tests/interpreter/Tests.spec.ts +122 -0
  117. package/tests/interpreter/interpreter.spec.ts +991 -937
  118. package/tests/tester/Tester.spec.ts +153 -0
  119. package/tsconfig.build.json +15 -7
  120. package/tsconfig.json +25 -17
  121. package/dist/analyzer/inspections/functional.d.ts +0 -46
  122. package/dist/analyzer/inspections/functional.js +0 -123
  123. package/dist/analyzer/inspections/generic.js +0 -427
  124. package/dist/analyzer/inspections/imperative.d.ts +0 -37
  125. package/dist/analyzer/inspections/imperative.js +0 -105
  126. package/dist/analyzer/inspections/logic.d.ts +0 -49
  127. package/dist/analyzer/inspections/logic.js +0 -140
  128. package/dist/analyzer/inspections/object.d.ts +0 -83
  129. package/dist/analyzer/inspections/object.js +0 -235
  130. package/dist/interpreter/components/FunctionRuntime.d.ts +0 -8
  131. package/dist/interpreter/components/FunctionRuntime.js +0 -52
  132. package/dist/interpreter/components/LazyRuntime.d.ts +0 -7
  133. package/dist/interpreter/components/LazyRuntime.js +0 -75
  134. package/dist/interpreter/components/LogicEngine.d.ts +0 -21
  135. package/dist/interpreter/components/LogicEngine.js +0 -152
  136. package/dist/interpreter/components/LogicResolver.d.ts +0 -11
  137. package/dist/interpreter/components/LogicResolver.js +0 -87
  138. package/src/analyzer/inspections/functional.ts +0 -159
  139. package/src/analyzer/inspections/imperative.ts +0 -129
  140. package/src/analyzer/inspections/logic.ts +0 -166
  141. package/src/interpreter/components/FunctionRuntime.ts +0 -79
  142. package/src/interpreter/components/LazyRuntime.ts +0 -97
  143. package/src/interpreter/components/LogicEngine.ts +0 -227
  144. package/src/interpreter/components/LogicResolver.ts +0 -130
@@ -0,0 +1,103 @@
1
+ import { TraverseVisitor, } from "yukigo-ast";
2
+ import { idContinuation, trampoline, } from "../trampoline.js";
3
+ export class FailedAssert extends Error {
4
+ actual;
5
+ expected;
6
+ constructor(actual, expected, message) {
7
+ super(message || `Assertion failed: expected ${expected}, got ${actual}`);
8
+ this.actual = actual;
9
+ this.expected = expected;
10
+ this.name = "FailedAssert";
11
+ }
12
+ }
13
+ class AssertionVisitor extends TraverseVisitor {
14
+ interpreter;
15
+ negated;
16
+ lazyRuntime;
17
+ constructor(interpreter, negated, lazyRuntime) {
18
+ super();
19
+ this.interpreter = interpreter;
20
+ this.negated = negated;
21
+ this.lazyRuntime = lazyRuntime;
22
+ }
23
+ visitFailure(node) {
24
+ return (k) => () => {
25
+ let threw = false;
26
+ let actualError;
27
+ try {
28
+ // We use trampoline here to execute the function under test.
29
+ // While this is a nested trampoline, it's necessary to capture the error
30
+ // and isolate the test execution from the test runner's CPS flow.
31
+ trampoline(this.interpreter.evaluate(node.func, idContinuation));
32
+ }
33
+ catch (error) {
34
+ threw = true;
35
+ actualError = error.message;
36
+ }
37
+ return this.interpreter.evaluate(node.message, (expectedError) => {
38
+ const passed = threw &&
39
+ (expectedError === undefined ||
40
+ actualError?.includes(expectedError));
41
+ if (this.negated === passed) {
42
+ if (!threw) {
43
+ throw new FailedAssert(undefined, expectedError, "Expected code to fail, but it succeeded");
44
+ }
45
+ else {
46
+ throw new FailedAssert(actualError, expectedError, `Expected error message to contain "${expectedError}", but got "${actualError}"`);
47
+ }
48
+ }
49
+ return k(undefined);
50
+ });
51
+ };
52
+ }
53
+ visitEquality(node) {
54
+ return (k) => this.interpreter.evaluate(node.value, (value) => {
55
+ return () => this.interpreter.evaluate(node.expected, (expected) => {
56
+ this.lazyRuntime.deepEqual(value, expected, (passed) => {
57
+ if (this.negated === passed) {
58
+ throw new FailedAssert(value, expected, this.negated
59
+ ? `Expected ${JSON.stringify(value)} NOT to be equal to ${JSON.stringify(expected)}`
60
+ : `Expected ${JSON.stringify(expected)}, but got ${JSON.stringify(value)}`);
61
+ }
62
+ return k(undefined);
63
+ });
64
+ });
65
+ });
66
+ }
67
+ visitTruth(node) {
68
+ return (k) => this.interpreter.evaluate(node.body, (value) => {
69
+ const isTruthy = Boolean(value);
70
+ if (this.negated === isTruthy) {
71
+ throw new FailedAssert(value, !this.negated, this.negated
72
+ ? `Expected value to be falsy, but got ${JSON.stringify(value)}`
73
+ : `Expected value to be truthy, but got ${JSON.stringify(value)}`);
74
+ }
75
+ return k(undefined);
76
+ });
77
+ }
78
+ }
79
+ export class TestRunner extends TraverseVisitor {
80
+ interpreter;
81
+ lazyRuntime;
82
+ constructor(interpreter, lazyRuntime) {
83
+ super();
84
+ this.interpreter = interpreter;
85
+ this.lazyRuntime = lazyRuntime;
86
+ }
87
+ run(node) {
88
+ return node.accept(this);
89
+ }
90
+ visitTestGroup(node) {
91
+ return (k) => this.interpreter.evaluate(node.group, () => k(undefined));
92
+ }
93
+ visitTest(node) {
94
+ return (k) => this.interpreter.evaluate(node.body, () => k(undefined));
95
+ }
96
+ visitAssert(node) {
97
+ return (k) => this.interpreter.evaluate(node.negated, (negatedVal) => {
98
+ const isNegated = Boolean(negatedVal);
99
+ const visitor = new AssertionVisitor(this.interpreter, isNegated, this.lazyRuntime);
100
+ return node.body.accept(visitor)(k);
101
+ });
102
+ }
103
+ }
@@ -1,64 +1,70 @@
1
- import { Visitor, PrimitiveValue, NumberPrimitive, BooleanPrimitive, StringPrimitive, ListPrimitive, NilPrimitive, SymbolPrimitive, Variable, CharPrimitive, ArithmeticUnaryOperation, ArithmeticBinaryOperation, ListUnaryOperation, ListBinaryOperation, ComparisonOperation, LogicalBinaryOperation, LogicalUnaryOperation, BitwiseBinaryOperation, BitwiseUnaryOperation, StringOperation, UnifyOperation, AssignOperation, TupleExpression, FieldExpression, DataExpression, ConsExpression, LetInExpression, Call, Otherwise, CompositionExpression, Expression, Application, Lambda, Exist, Not, Findall, Forall, Goal, Send, New, Implement, Include, Self, ListComprehension, RangeExpression, Generator as YuGenerator, ASTNode, Raise, Query } from "@yukigo/ast";
2
- import { EnvStack, InterpreterConfig } from "../index.js";
1
+ import { Visitor, PrimitiveValue, NumberPrimitive, BooleanPrimitive, StringPrimitive, ListPrimitive, NilPrimitive, SymbolPrimitive, Variable, CharPrimitive, ArithmeticUnaryOperation, ArithmeticBinaryOperation, ListUnaryOperation, ListBinaryOperation, ComparisonOperation, LogicalBinaryOperation, LogicalUnaryOperation, BitwiseBinaryOperation, BitwiseUnaryOperation, StringOperation, UnifyOperation, AssignOperation, Assignment, TupleExpression, FieldExpression, DataExpression, ConsExpression, LetInExpression, Call, Otherwise, CompositionExpression, Expression, Application, Lambda, Sequence, Exist, Not, Findall, Forall, Goal, Send, New, Self, ListComprehension, RangeExpression, Generator as YuGenerator, ASTNode, Raise, Query, TypeCast, Super, If, Assert, Test, TestGroup, LogicConstraint } from "yukigo-ast";
3
2
  import { ExpressionEvaluator } from "../utils.js";
4
3
  import { ErrorFrame } from "../errors.js";
5
- export declare class InterpreterVisitor implements Visitor<PrimitiveValue>, ExpressionEvaluator {
4
+ import { Continuation, CPSThunk, Thunk } from "../trampoline.js";
5
+ import { RuntimeContext } from "./RuntimeContext.js";
6
+ export declare class InterpreterVisitor implements Visitor<CPSThunk<PrimitiveValue>>, ExpressionEvaluator {
7
+ private context;
6
8
  private frames;
7
- private env;
8
- private readonly config;
9
- constructor(env: EnvStack, config: InterpreterConfig, frames?: ErrorFrame[]);
10
- evaluate(node: Expression): PrimitiveValue;
11
- private getLogicEngine;
12
- visitNumberPrimitive(node: NumberPrimitive): PrimitiveValue;
13
- visitBooleanPrimitive(node: BooleanPrimitive): PrimitiveValue;
14
- visitStringPrimitive(node: StringPrimitive): PrimitiveValue;
15
- visitListPrimitive(node: ListPrimitive): PrimitiveValue;
16
- visitNilPrimitive(node: NilPrimitive): PrimitiveValue;
17
- visitCharPrimitive(node: CharPrimitive): PrimitiveValue;
18
- visitSymbolPrimitive(node: SymbolPrimitive): PrimitiveValue;
19
- visitVariable(node: Variable): PrimitiveValue;
20
- visitArithmeticUnaryOperation(node: ArithmeticUnaryOperation): PrimitiveValue;
21
- visitArithmeticBinaryOperation(node: ArithmeticBinaryOperation): PrimitiveValue;
22
- visitListUnaryOperation(node: ListUnaryOperation): PrimitiveValue;
23
- visitListBinaryOperation(node: ListBinaryOperation): PrimitiveValue;
24
- visitComparisonOperation(node: ComparisonOperation): PrimitiveValue;
25
- visitLogicalBinaryOperation(node: LogicalBinaryOperation): PrimitiveValue;
26
- visitLogicalUnaryOperation(node: LogicalUnaryOperation): PrimitiveValue;
27
- visitBitwiseBinaryOperation(node: BitwiseBinaryOperation): PrimitiveValue;
28
- visitBitwiseUnaryOperation(node: BitwiseUnaryOperation): PrimitiveValue;
29
- visitStringOperation(node: StringOperation): PrimitiveValue;
30
- visitUnifyOperation(node: UnifyOperation): PrimitiveValue;
31
- visitAssignOperation(node: AssignOperation): PrimitiveValue;
32
- visitTupleExpr(node: TupleExpression): PrimitiveValue;
33
- visitFieldExpr(node: FieldExpression): PrimitiveValue;
34
- visitDataExpr(node: DataExpression): PrimitiveValue;
35
- visitConsExpr(node: ConsExpression): PrimitiveValue;
36
- visitLetInExpr(node: LetInExpression): PrimitiveValue;
37
- visitCall(node: Call): PrimitiveValue;
38
- visitOtherwise(node: Otherwise): PrimitiveValue;
39
- visitCompositionExpression(node: CompositionExpression): PrimitiveValue;
40
- visitLambda(node: Lambda): PrimitiveValue;
41
- visitApplication(node: Application): PrimitiveValue;
42
- visitQuery(node: Query): PrimitiveValue;
43
- visitExist(node: Exist): PrimitiveValue;
44
- visitNot(node: Not): PrimitiveValue;
45
- visitFindall(node: Findall): PrimitiveValue;
46
- visitForall(node: Forall): PrimitiveValue;
47
- visitGoal(node: Goal): PrimitiveValue;
48
- visitSend(node: Send): PrimitiveValue;
49
- visitNew(node: New): PrimitiveValue;
50
- visitImplement(node: Implement): PrimitiveValue;
51
- visitInclude(node: Include): PrimitiveValue;
52
- visitSelf(node: Self): PrimitiveValue;
53
- visitListComprehension(node: ListComprehension): PrimitiveValue;
54
- visitGenerator(node: YuGenerator): PrimitiveValue;
55
- visitRaise(node: Raise): PrimitiveValue;
56
- visitRangeExpression(node: RangeExpression): PrimitiveValue;
57
- visit(node: Expression): PrimitiveValue;
58
- private safelyVisit;
59
- private isRuntimeFunction;
60
- realizeList(val: PrimitiveValue): PrimitiveValue[];
9
+ constructor(context: RuntimeContext, frames?: ErrorFrame[]);
10
+ evaluate<R = PrimitiveValue>(node: ASTNode, cont: Continuation<PrimitiveValue, R>): Thunk<R>;
11
+ visitSequence(node: Sequence): CPSThunk<PrimitiveValue>;
12
+ visitAssert(node: Assert): CPSThunk<PrimitiveValue>;
13
+ visitTest(node: Test): CPSThunk<PrimitiveValue>;
14
+ visitTestGroup(node: TestGroup): CPSThunk<PrimitiveValue>;
15
+ visitNumberPrimitive(node: NumberPrimitive): CPSThunk<PrimitiveValue>;
16
+ visitBooleanPrimitive(node: BooleanPrimitive): CPSThunk<PrimitiveValue>;
17
+ visitStringPrimitive(node: StringPrimitive): CPSThunk<PrimitiveValue>;
18
+ visitListPrimitive(node: ListPrimitive): CPSThunk<PrimitiveValue>;
19
+ visitNilPrimitive(node: NilPrimitive): CPSThunk<PrimitiveValue>;
20
+ visitCharPrimitive(node: CharPrimitive): CPSThunk<PrimitiveValue>;
21
+ visitSymbolPrimitive(node: SymbolPrimitive): CPSThunk<PrimitiveValue>;
22
+ visitVariable(node: Variable): CPSThunk<PrimitiveValue>;
23
+ visitAssignment(node: Assignment): CPSThunk<PrimitiveValue>;
24
+ visitArithmeticUnaryOperation(node: ArithmeticUnaryOperation): CPSThunk<PrimitiveValue>;
25
+ visitArithmeticBinaryOperation(node: ArithmeticBinaryOperation): CPSThunk<PrimitiveValue>;
26
+ visitListUnaryOperation(node: ListUnaryOperation): CPSThunk<PrimitiveValue>;
27
+ visitListBinaryOperation(node: ListBinaryOperation): CPSThunk<PrimitiveValue>;
28
+ visitComparisonOperation(node: ComparisonOperation): CPSThunk<PrimitiveValue>;
29
+ visitLogicalBinaryOperation(node: LogicalBinaryOperation): CPSThunk<PrimitiveValue>;
30
+ visitLogicalUnaryOperation(node: LogicalUnaryOperation): CPSThunk<PrimitiveValue>;
31
+ visitBitwiseBinaryOperation(node: BitwiseBinaryOperation): CPSThunk<PrimitiveValue>;
32
+ visitBitwiseUnaryOperation(node: BitwiseUnaryOperation): CPSThunk<PrimitiveValue>;
33
+ visitStringOperation(node: StringOperation): CPSThunk<PrimitiveValue>;
34
+ visitUnifyOperation(node: UnifyOperation): CPSThunk<PrimitiveValue>;
35
+ visitAssignOperation(node: AssignOperation): CPSThunk<PrimitiveValue>;
36
+ visitTupleExpr(node: TupleExpression): CPSThunk<PrimitiveValue>;
37
+ visitFieldExpression(node: FieldExpression): CPSThunk<PrimitiveValue>;
38
+ visitDataExpr(node: DataExpression): CPSThunk<PrimitiveValue>;
39
+ visitConsExpr(node: ConsExpression): CPSThunk<PrimitiveValue>;
40
+ visitLetInExpr(node: LetInExpression): CPSThunk<PrimitiveValue>;
41
+ visitIf(node: If): CPSThunk<PrimitiveValue>;
42
+ visitCall(node: Call): CPSThunk<PrimitiveValue>;
43
+ visitOtherwise(node: Otherwise): CPSThunk<PrimitiveValue>;
44
+ visitCompositionExpression(node: CompositionExpression): CPSThunk<PrimitiveValue>;
45
+ visitLambda(node: Lambda): CPSThunk<PrimitiveValue>;
46
+ visitApplication(node: Application): CPSThunk<PrimitiveValue>;
47
+ visitQuery(node: Query): CPSThunk<PrimitiveValue>;
48
+ visitExist(node: Exist): CPSThunk<PrimitiveValue>;
49
+ visitNot(node: Not): CPSThunk<PrimitiveValue>;
50
+ visitFindall(node: Findall): CPSThunk<PrimitiveValue>;
51
+ visitForall(node: Forall): CPSThunk<PrimitiveValue>;
52
+ visitGoal(node: Goal): CPSThunk<PrimitiveValue>;
53
+ private bindLogicResults;
54
+ visitLogicConstraint(node: LogicConstraint): CPSThunk<PrimitiveValue>;
55
+ visitSuper(node: Super): CPSThunk<PrimitiveValue>;
56
+ visitSend(node: Send): CPSThunk<PrimitiveValue>;
57
+ visitNew(node: New): CPSThunk<PrimitiveValue>;
58
+ visitSelf(node: Self): CPSThunk<PrimitiveValue>;
59
+ visitListComprehension(node: ListComprehension): CPSThunk<PrimitiveValue>;
60
+ visitTypeCast(node: TypeCast): CPSThunk<PrimitiveValue>;
61
+ visitGenerator(node: YuGenerator): CPSThunk<PrimitiveValue>;
62
+ visitRaise(node: Raise): CPSThunk<PrimitiveValue>;
63
+ visitRangeExpression(node: RangeExpression): CPSThunk<PrimitiveValue>;
64
+ visit(node: Expression): CPSThunk<PrimitiveValue>;
65
+ realizeList<R = PrimitiveValue[]>(val: PrimitiveValue, k: Continuation<PrimitiveValue[], R>): Thunk<R>;
61
66
  private processBinary;
62
67
  private processUnary;
68
+ private getLogicEngine;
63
69
  static evaluateLiteral(node: ASTNode): PrimitiveValue;
64
70
  }