yukigo-ast 0.2.1 → 0.3.2

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 (107) hide show
  1. package/.mocharc.json +3 -3
  2. package/CHANGELOG.md +41 -17
  3. package/dist/globals/expressions.d.ts +27 -25
  4. package/dist/globals/expressions.d.ts.map +1 -1
  5. package/dist/globals/expressions.js +47 -10
  6. package/dist/globals/generics.d.ts +8 -2
  7. package/dist/globals/generics.d.ts.map +1 -1
  8. package/dist/globals/generics.js +15 -1
  9. package/dist/globals/operators.d.ts +13 -69
  10. package/dist/globals/operators.d.ts.map +1 -1
  11. package/dist/globals/operators.js +12 -12
  12. package/dist/globals/patterns.d.ts +24 -25
  13. package/dist/globals/patterns.d.ts.map +1 -1
  14. package/dist/globals/patterns.js +66 -12
  15. package/dist/globals/primitives.d.ts +2 -5
  16. package/dist/globals/primitives.d.ts.map +1 -1
  17. package/dist/globals/primitives.js +7 -7
  18. package/dist/globals/statements.d.ts +28 -194
  19. package/dist/globals/statements.d.ts.map +1 -1
  20. package/dist/globals/statements.js +32 -52
  21. package/dist/globals/testing.d.ts +7 -31
  22. package/dist/globals/testing.d.ts.map +1 -1
  23. package/dist/globals/testing.js +6 -6
  24. package/dist/globals/types.d.ts +13 -35
  25. package/dist/globals/types.d.ts.map +1 -1
  26. package/dist/globals/types.js +12 -12
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +0 -1
  30. package/dist/paradigms/functional.d.ts +5 -8
  31. package/dist/paradigms/functional.d.ts.map +1 -1
  32. package/dist/paradigms/functional.js +4 -4
  33. package/dist/paradigms/imperative.d.ts +8 -61
  34. package/dist/paradigms/imperative.d.ts.map +1 -1
  35. package/dist/paradigms/imperative.js +7 -7
  36. package/dist/paradigms/logic.d.ts +11 -67
  37. package/dist/paradigms/logic.d.ts.map +1 -1
  38. package/dist/paradigms/logic.js +10 -10
  39. package/dist/paradigms/object.d.ts +19 -105
  40. package/dist/paradigms/object.d.ts.map +1 -1
  41. package/dist/paradigms/object.js +24 -15
  42. package/dist/paradigms/typeclasses.d.ts +3 -51
  43. package/dist/paradigms/typeclasses.d.ts.map +1 -1
  44. package/dist/paradigms/typeclasses.js +2 -2
  45. package/dist/visitor/base.d.ts +4 -2
  46. package/dist/visitor/base.d.ts.map +1 -1
  47. package/dist/visitor/expressions.d.ts +34 -31
  48. package/dist/visitor/expressions.d.ts.map +1 -1
  49. package/dist/visitor/expressions.js +11 -2
  50. package/dist/visitor/index.d.ts +160 -164
  51. package/dist/visitor/index.d.ts.map +1 -1
  52. package/dist/visitor/operations.d.ts +25 -26
  53. package/dist/visitor/operations.d.ts.map +1 -1
  54. package/dist/visitor/operations.js +3 -2
  55. package/dist/visitor/patterns.d.ts +18 -19
  56. package/dist/visitor/patterns.d.ts.map +1 -1
  57. package/dist/visitor/patterns.js +4 -2
  58. package/dist/visitor/primitives.d.ts +13 -14
  59. package/dist/visitor/primitives.d.ts.map +1 -1
  60. package/dist/visitor/primitives.js +3 -2
  61. package/dist/visitor/statements.d.ts +49 -50
  62. package/dist/visitor/statements.d.ts.map +1 -1
  63. package/dist/visitor/statements.js +9 -6
  64. package/dist/visitor/testing.d.ts +12 -13
  65. package/dist/visitor/testing.d.ts.map +1 -1
  66. package/dist/visitor/testing.js +4 -2
  67. package/dist/visitor/typeclasses.d.ts +8 -9
  68. package/dist/visitor/typeclasses.d.ts.map +1 -1
  69. package/dist/visitor/typeclasses.js +4 -2
  70. package/dist/visitor/types.d.ts +17 -18
  71. package/dist/visitor/types.d.ts.map +1 -1
  72. package/dist/visitor/types.js +3 -2
  73. package/package.json +2 -11
  74. package/src/globals/expressions.ts +382 -338
  75. package/src/globals/generics.ts +86 -65
  76. package/src/globals/operators.ts +517 -517
  77. package/src/globals/patterns.ts +406 -347
  78. package/src/globals/primitives.ts +169 -169
  79. package/src/globals/statements.ts +746 -768
  80. package/src/globals/testing.ts +131 -131
  81. package/src/globals/types.ts +372 -375
  82. package/src/index.ts +13 -14
  83. package/src/paradigms/functional.ts +129 -128
  84. package/src/paradigms/imperative.ts +227 -227
  85. package/src/paradigms/logic.ts +307 -308
  86. package/src/paradigms/object.ts +362 -356
  87. package/src/paradigms/typeclasses.ts +96 -95
  88. package/src/visitor/base.ts +19 -17
  89. package/src/visitor/expressions.ts +165 -153
  90. package/src/visitor/index.ts +59 -52
  91. package/src/visitor/operations.ts +86 -82
  92. package/src/visitor/patterns.ts +77 -76
  93. package/src/visitor/primitives.ts +40 -36
  94. package/src/visitor/statements.ts +264 -261
  95. package/src/visitor/testing.ts +50 -49
  96. package/src/visitor/typeclasses.ts +24 -23
  97. package/src/visitor/types.ts +76 -75
  98. package/tests/ast.spec.ts +16 -16
  99. package/tsconfig.json +23 -25
  100. package/tsconfig.tsbuildinfo +1 -1
  101. package/dist/globals/runtime.d.ts +0 -64
  102. package/dist/globals/runtime.d.ts.map +0 -1
  103. package/dist/globals/runtime.js +0 -32
  104. package/dist/types.d.ts +0 -4
  105. package/dist/types.d.ts.map +0 -1
  106. package/dist/types.js +0 -1
  107. package/src/globals/runtime.ts +0 -132
@@ -14,7 +14,7 @@ export class EntryPoint extends ASTNode {
14
14
  this.expression = expression;
15
15
  }
16
16
  accept(visitor) {
17
- return visitor.visitEntryPoint?.(this);
17
+ return this.dispatchVisit(visitor, visitor.visitEntryPoint);
18
18
  }
19
19
  toJSON() {
20
20
  return {
@@ -39,7 +39,7 @@ export class Procedure extends ASTNode {
39
39
  this.equations = equations;
40
40
  }
41
41
  accept(visitor) {
42
- return visitor.visitProcedure?.(this);
42
+ return this.dispatchVisit(visitor, visitor.visitProcedure);
43
43
  }
44
44
  toJSON() {
45
45
  return {
@@ -65,7 +65,7 @@ export class Structure extends ASTNode {
65
65
  this.loc = loc;
66
66
  }
67
67
  accept(visitor) {
68
- return visitor.visitStructure?.(this);
68
+ return this.dispatchVisit(visitor, visitor.visitStructure);
69
69
  }
70
70
  toJSON() {
71
71
  return {
@@ -90,7 +90,7 @@ export class Enumeration extends ASTNode {
90
90
  this.contents = contents;
91
91
  }
92
92
  accept(visitor) {
93
- return visitor.visitEnumeration?.(this);
93
+ return this.dispatchVisit(visitor, visitor.visitEnumeration);
94
94
  }
95
95
  toJSON() {
96
96
  return {
@@ -118,7 +118,7 @@ export class While extends ASTNode {
118
118
  this.body = body;
119
119
  }
120
120
  accept(visitor) {
121
- return visitor.visitWhile?.(this);
121
+ return this.dispatchVisit(visitor, visitor.visitWhile);
122
122
  }
123
123
  toJSON() {
124
124
  return {
@@ -143,7 +143,7 @@ export class Repeat extends ASTNode {
143
143
  this.body = body;
144
144
  }
145
145
  accept(visitor) {
146
- return visitor.visitRepeat?.(this);
146
+ return this.dispatchVisit(visitor, visitor.visitRepeat);
147
147
  }
148
148
  toJSON() {
149
149
  return {
@@ -174,7 +174,7 @@ export class ForLoop extends ASTNode {
174
174
  this.body = body;
175
175
  }
176
176
  accept(visitor) {
177
- return visitor.visitForLoop?.(this);
177
+ return this.dispatchVisit(visitor, visitor.visitForLoop);
178
178
  }
179
179
  toJSON() {
180
180
  return {
@@ -1,5 +1,5 @@
1
1
  import { Expression } from "../globals/expressions.js";
2
- import { ASTNode, SourceLocation } from "../globals/generics.js";
2
+ import { ASTNode, SerializeNode, SourceLocation } from "../globals/generics.js";
3
3
  import { Pattern } from "../globals/patterns.js";
4
4
  import { Primitive, SymbolPrimitive } from "../globals/primitives.js";
5
5
  import { Equation } from "../globals/statements.js";
@@ -19,29 +19,7 @@ export declare class Rule extends ASTNode {
19
19
  identifier: SymbolPrimitive;
20
20
  constructor(identifier: SymbolPrimitive, equations: Equation[], loc?: SourceLocation);
21
21
  accept<R>(visitor: Visitor<R>): R;
22
- toJSON(): {
23
- type: string;
24
- identifier: {
25
- type: import("../globals/primitives.js").YukigoPrimitive;
26
- value: string;
27
- };
28
- equations: {
29
- type: string;
30
- patterns: any[];
31
- body: {
32
- type: string;
33
- sequence: any;
34
- } | {
35
- type: string;
36
- condition: any;
37
- body: any;
38
- }[];
39
- return: {
40
- type: string;
41
- body: any;
42
- };
43
- }[];
44
- };
22
+ toJSON(): SerializeNode;
45
23
  }
46
24
  /**
47
25
  * Represents a call to a predicate or goal.
@@ -54,14 +32,7 @@ export declare class Call extends ASTNode {
54
32
  callee: SymbolPrimitive;
55
33
  constructor(callee: SymbolPrimitive, args: Expression[], loc?: SourceLocation);
56
34
  accept<R>(visitor: Visitor<R>): R;
57
- toJSON(): {
58
- type: string;
59
- callee: {
60
- type: import("../globals/primitives.js").YukigoPrimitive;
61
- value: string;
62
- };
63
- patterns: any[];
64
- };
35
+ toJSON(): SerializeNode;
65
36
  }
66
37
  /**
67
38
  * Represents a fact, a rule with no body (always true).
@@ -77,14 +48,7 @@ export declare class Fact extends ASTNode {
77
48
  identifier: SymbolPrimitive;
78
49
  constructor(identifier: SymbolPrimitive, patterns: Pattern[], loc?: SourceLocation);
79
50
  accept<R>(visitor: Visitor<R>): R;
80
- toJSON(): {
81
- type: string;
82
- identifier: {
83
- type: import("../globals/primitives.js").YukigoPrimitive;
84
- value: string;
85
- };
86
- patterns: any[];
87
- };
51
+ toJSON(): SerializeNode;
88
52
  }
89
53
  /**
90
54
  * Represents a query or goal to be proven.
@@ -98,10 +62,7 @@ export declare class Query extends ASTNode {
98
62
  expressions: Expression[];
99
63
  constructor(expressions: Expression[], loc?: SourceLocation);
100
64
  accept<R>(visitor: Visitor<R>): R;
101
- toJSON(): {
102
- type: string;
103
- expressions: any[];
104
- };
65
+ toJSON(): SerializeNode;
105
66
  }
106
67
  /**
107
68
  * Represents an existential quantification.
@@ -114,14 +75,7 @@ export declare class Exist extends ASTNode {
114
75
  identifier: SymbolPrimitive;
115
76
  constructor(identifier: SymbolPrimitive, patterns: Pattern[], loc?: SourceLocation);
116
77
  accept<R>(visitor: Visitor<R>): R;
117
- toJSON(): {
118
- type: string;
119
- identifier: {
120
- type: import("../globals/primitives.js").YukigoPrimitive;
121
- value: string;
122
- };
123
- patterns: any[];
124
- };
78
+ toJSON(): SerializeNode;
125
79
  }
126
80
  /**
127
81
  * Represents logical negation or failure-as-negation.
@@ -132,7 +86,7 @@ export declare class Not extends ASTNode {
132
86
  expression: Expression;
133
87
  constructor(expression: Expression, loc?: SourceLocation);
134
88
  accept<R>(visitor: Visitor<R>): R;
135
- toJSON(): any;
89
+ toJSON(): SerializeNode;
136
90
  }
137
91
  /**
138
92
  * Represents a higher-order predicate finding all solutions (e.g., findall/3).
@@ -147,7 +101,7 @@ export declare class Findall extends ASTNode {
147
101
  template: Pattern;
148
102
  constructor(template: Pattern, goal: Expression, bag: Pattern, loc?: SourceLocation);
149
103
  accept<R>(visitor: Visitor<R>): R;
150
- toJSON(): any;
104
+ toJSON(): SerializeNode;
151
105
  }
152
106
  /**
153
107
  * Represents a universal quantification or forall predicate.
@@ -160,7 +114,7 @@ export declare class Forall extends ASTNode {
160
114
  condition: Expression;
161
115
  constructor(condition: Expression, action: Expression, loc?: SourceLocation);
162
116
  accept<R>(visitor: Visitor<R>): R;
163
- toJSON(): any;
117
+ toJSON(): SerializeNode;
164
118
  }
165
119
  /**
166
120
  * Represents a single goal within a logical rule or query.
@@ -173,14 +127,7 @@ export declare class Goal extends ASTNode {
173
127
  identifier: SymbolPrimitive;
174
128
  constructor(identifier: SymbolPrimitive, args: Pattern[], loc?: SourceLocation);
175
129
  accept<R>(visitor: Visitor<R>): R;
176
- toJSON(): {
177
- type: string;
178
- identifier: {
179
- type: import("../globals/primitives.js").YukigoPrimitive;
180
- value: string;
181
- };
182
- arguments: any[];
183
- };
130
+ toJSON(): SerializeNode;
184
131
  }
185
132
  /**
186
133
  * Represents a logical constraint or guard that must evaluate to true.
@@ -196,9 +143,6 @@ export declare class LogicConstraint extends ASTNode {
196
143
  expression: Expression;
197
144
  constructor(expression: Expression, loc?: SourceLocation);
198
145
  accept<R>(visitor: Visitor<R>): R;
199
- toJSON(): {
200
- type: string;
201
- expression: any;
202
- };
146
+ toJSON(): SerializeNode;
203
147
  }
204
148
  //# sourceMappingURL=logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../src/paradigms/logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../src/paradigms/logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;AAErD;;;;;;GAMG;AACH,qBAAa,IAAK,SAAQ,OAAO;IAC/B,cAAc;IACP,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC7B,cAAc;IACP,UAAU,EAAE,eAAe,CAAC;gBAGjC,UAAU,EAAE,eAAe,EAC3B,SAAS,EAAE,QAAQ,EAAE,EACrB,GAAG,CAAC,EAAE,cAAc;IAMf,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAO/B;AACD;;;GAGG;AACH,qBAAa,IAAK,SAAQ,OAAO;IAC/B,cAAc;IACP,IAAI,EAAE,UAAU,EAAE,CAAC;IAC1B,cAAc;IACP,MAAM,EAAE,eAAe,CAAC;gBAG7B,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,EAAE,EAClB,GAAG,CAAC,EAAE,cAAc;IAMf,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAO/B;AAED;;;;;;GAMG;AACH,qBAAa,IAAK,SAAQ,OAAO;IAC/B,cAAc;IACP,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC3B,cAAc;IACP,UAAU,EAAE,eAAe,CAAC;gBAGjC,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,OAAO,EAAE,EACnB,GAAG,CAAC,EAAE,cAAc;IAMf,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAO/B;AAED;;;;;;GAMG;AACH,qBAAa,KAAM,SAAQ,OAAO;IAChC,cAAc;IACP,WAAW,EAAE,UAAU,EAAE,CAAC;gBAErB,WAAW,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,cAAc;IAIpD,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAM/B;AAED;;;GAGG;AACH,qBAAa,KAAM,SAAQ,OAAO;IAChC,cAAc;IACP,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC3B,cAAc;IACP,UAAU,EAAE,eAAe,CAAC;gBAGjC,UAAU,EAAE,eAAe,EAC3B,QAAQ,EAAE,OAAO,EAAE,EACnB,GAAG,CAAC,EAAE,cAAc;IAMf,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAO/B;AAED;;;GAGG;AACH,qBAAa,GAAI,SAAQ,OAAO;IAC9B,cAAc;IACP,UAAU,EAAE,UAAU,CAAC;gBAElB,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,cAAc;IAIjD,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAM/B;AACD;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,OAAO;IAClC,cAAc;IACP,GAAG,EAAE,OAAO,CAAC;IACpB,cAAc;IACP,IAAI,EAAE,UAAU,CAAC;IACxB,cAAc;IACP,QAAQ,EAAE,OAAO,CAAC;gBAGvB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,OAAO,EACZ,GAAG,CAAC,EAAE,cAAc;IAOf,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAQ/B;AACD;;;GAGG;AACH,qBAAa,MAAO,SAAQ,OAAO;IACjC,cAAc;IACP,MAAM,EAAE,UAAU,CAAC;IAC1B,cAAc;IACP,SAAS,EAAE,UAAU,CAAC;gBAEjB,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,cAAc;IAKpE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAO/B;AAED;;;GAGG;AACH,qBAAa,IAAK,SAAQ,OAAO;IAC/B,cAAc;IACP,IAAI,EAAE,OAAO,EAAE,CAAC;IACvB,cAAc;IACP,UAAU,EAAE,eAAe,CAAC;gBAGjC,UAAU,EAAE,eAAe,EAC3B,IAAI,EAAE,OAAO,EAAE,EACf,GAAG,CAAC,EAAE,cAAc;IAMf,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAGjC,MAAM,IAAI,aAAa;CAO/B;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,cAAc;IACP,UAAU,EAAE,UAAU,CAAC;gBAElB,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,cAAc;IAKjD,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAIjC,MAAM,IAAI,aAAa;CAM/B"}
@@ -17,7 +17,7 @@ export class Rule extends ASTNode {
17
17
  this.equations = equations;
18
18
  }
19
19
  accept(visitor) {
20
- return visitor.visitRule?.(this);
20
+ return this.dispatchVisit(visitor, visitor.visitRule);
21
21
  }
22
22
  toJSON() {
23
23
  return {
@@ -42,7 +42,7 @@ export class Call extends ASTNode {
42
42
  this.args = args;
43
43
  }
44
44
  accept(visitor) {
45
- return visitor.visitCall?.(this);
45
+ return this.dispatchVisit(visitor, visitor.visitCall);
46
46
  }
47
47
  toJSON() {
48
48
  return {
@@ -70,7 +70,7 @@ export class Fact extends ASTNode {
70
70
  this.patterns = patterns;
71
71
  }
72
72
  accept(visitor) {
73
- return visitor.visitFact?.(this);
73
+ return this.dispatchVisit(visitor, visitor.visitFact);
74
74
  }
75
75
  toJSON() {
76
76
  return {
@@ -95,7 +95,7 @@ export class Query extends ASTNode {
95
95
  this.expressions = expressions;
96
96
  }
97
97
  accept(visitor) {
98
- return visitor.visitQuery?.(this);
98
+ return this.dispatchVisit(visitor, visitor.visitQuery);
99
99
  }
100
100
  toJSON() {
101
101
  return {
@@ -119,7 +119,7 @@ export class Exist extends ASTNode {
119
119
  this.patterns = patterns;
120
120
  }
121
121
  accept(visitor) {
122
- return visitor.visitExist?.(this);
122
+ return this.dispatchVisit(visitor, visitor.visitExist);
123
123
  }
124
124
  toJSON() {
125
125
  return {
@@ -141,7 +141,7 @@ export class Not extends ASTNode {
141
141
  this.expression = expression;
142
142
  }
143
143
  accept(visitor) {
144
- return visitor.visitNot?.(this);
144
+ return this.dispatchVisit(visitor, visitor.visitNot);
145
145
  }
146
146
  toJSON() {
147
147
  return {
@@ -168,7 +168,7 @@ export class Findall extends ASTNode {
168
168
  this.bag = bag;
169
169
  }
170
170
  accept(visitor) {
171
- return visitor.visitFindall?.(this);
171
+ return this.dispatchVisit(visitor, visitor.visitFindall);
172
172
  }
173
173
  toJSON() {
174
174
  return {
@@ -194,7 +194,7 @@ export class Forall extends ASTNode {
194
194
  this.action = action;
195
195
  }
196
196
  accept(visitor) {
197
- return visitor.visitForall?.(this);
197
+ return this.dispatchVisit(visitor, visitor.visitForall);
198
198
  }
199
199
  toJSON() {
200
200
  return {
@@ -219,7 +219,7 @@ export class Goal extends ASTNode {
219
219
  this.args = args;
220
220
  }
221
221
  accept(visitor) {
222
- return visitor.visitGoal?.(this);
222
+ return this.dispatchVisit(visitor, visitor.visitGoal);
223
223
  }
224
224
  toJSON() {
225
225
  return {
@@ -246,7 +246,7 @@ export class LogicConstraint extends ASTNode {
246
246
  this.expression = expression;
247
247
  }
248
248
  accept(visitor) {
249
- return visitor.visitLogicConstraint?.(this);
249
+ return this.dispatchVisit(visitor, visitor.visitLogicConstraint);
250
250
  }
251
251
  toJSON() {
252
252
  return {
@@ -1,5 +1,5 @@
1
1
  import { Expression } from "../globals/expressions.js";
2
- import { ASTNode, SourceLocation } from "../globals/generics.js";
2
+ import { ASTNode, SerializeNode, SourceLocation } from "../globals/generics.js";
3
3
  import { Operator } from "../globals/operators.js";
4
4
  import { SymbolPrimitive } from "../globals/primitives.js";
5
5
  import { Equation } from "../globals/statements.js";
@@ -18,31 +18,11 @@ export declare class Method extends ASTNode {
18
18
  equations: Equation[];
19
19
  /** @hidden */
20
20
  identifier: SymbolPrimitive;
21
- constructor(identifier: SymbolPrimitive, equations: Equation[], loc?: SourceLocation);
21
+ /** @hidden */
22
+ isAbstract: boolean;
23
+ constructor(identifier: SymbolPrimitive, equations: Equation[], loc?: SourceLocation, isAbstract?: boolean);
22
24
  accept<R>(visitor: Visitor<R>): R;
23
- toJSON(): {
24
- type: string;
25
- identifier: {
26
- type: import("../globals/primitives.js").YukigoPrimitive;
27
- value: string;
28
- };
29
- equations: {
30
- type: string;
31
- patterns: any[];
32
- body: {
33
- type: string;
34
- sequence: any;
35
- } | {
36
- type: string;
37
- condition: any;
38
- body: any;
39
- }[];
40
- return: {
41
- type: string;
42
- body: any;
43
- };
44
- }[];
45
- };
25
+ toJSON(): SerializeNode;
46
26
  }
47
27
  /**
48
28
  * Represents an attribute or instance variable of an object.
@@ -55,14 +35,7 @@ export declare class Attribute extends ASTNode {
55
35
  identifier: SymbolPrimitive;
56
36
  constructor(identifier: SymbolPrimitive, expression: Expression, loc?: SourceLocation);
57
37
  accept<R>(visitor: Visitor<R>): R;
58
- toJSON(): {
59
- type: string;
60
- identifier: {
61
- type: import("../globals/primitives.js").YukigoPrimitive;
62
- value: string;
63
- };
64
- expression: any;
65
- };
38
+ toJSON(): SerializeNode;
66
39
  }
67
40
  /**
68
41
  * Represents an object definition or a singleton object.
@@ -76,16 +49,13 @@ export declare class Object extends ASTNode {
76
49
  expression: Expression;
77
50
  /** @hidden */
78
51
  identifier: SymbolPrimitive;
52
+ /** @hidden */
53
+ extendsSymbol?: SymbolPrimitive;
54
+ /** @hidden */
55
+ extendsArgs?: Expression[];
79
56
  constructor(identifier: SymbolPrimitive, expression: Expression, loc?: SourceLocation);
80
57
  accept<R>(visitor: Visitor<R>): R;
81
- toJSON(): {
82
- type: string;
83
- identifier: {
84
- type: import("../globals/primitives.js").YukigoPrimitive;
85
- value: string;
86
- };
87
- expression: any;
88
- };
58
+ toJSON(): SerializeNode;
89
59
  }
90
60
  /**
91
61
  * Represents a class definition, a blueprint for objects.
@@ -107,29 +77,7 @@ export declare class Class extends ASTNode {
107
77
  includes: SymbolPrimitive[];
108
78
  constructor(identifier: SymbolPrimitive, extendsSymbol: SymbolPrimitive | undefined, implementsNode: Implement | undefined, includes: SymbolPrimitive[], expression: Expression, loc?: SourceLocation);
109
79
  accept<R>(visitor: Visitor<R>): R;
110
- toJSON(): {
111
- type: string;
112
- identifier: {
113
- type: import("../globals/primitives.js").YukigoPrimitive;
114
- value: string;
115
- };
116
- extends: {
117
- type: import("../globals/primitives.js").YukigoPrimitive;
118
- value: string;
119
- };
120
- implements: {
121
- type: string;
122
- identifier: {
123
- type: import("../globals/primitives.js").YukigoPrimitive;
124
- value: string;
125
- };
126
- };
127
- includes: {
128
- type: import("../globals/primitives.js").YukigoPrimitive;
129
- value: string;
130
- }[];
131
- expression: any;
132
- };
80
+ toJSON(): SerializeNode;
133
81
  }
134
82
  /**
135
83
  * Represents an interface or protocol definition.
@@ -144,18 +92,7 @@ export declare class Interface extends ASTNode {
144
92
  identifier: SymbolPrimitive;
145
93
  constructor(identifier: SymbolPrimitive, extendsSymbol: SymbolPrimitive[], expression: Expression, loc?: SourceLocation);
146
94
  accept<R>(visitor: Visitor<R>): R;
147
- toJSON(): {
148
- type: string;
149
- identifier: {
150
- type: import("../globals/primitives.js").YukigoPrimitive;
151
- value: string;
152
- };
153
- extends: {
154
- type: import("../globals/primitives.js").YukigoPrimitive;
155
- value: string;
156
- }[];
157
- expression: any;
158
- };
95
+ toJSON(): SerializeNode;
159
96
  }
160
97
  /**
161
98
  * Represents a message send or method invocation on an object.
@@ -174,15 +111,7 @@ export declare class Send extends ASTNode {
174
111
  /** @hidden */
175
112
  constructor(receiver: Expression, selector: SymbolPrimitive, args: Expression[], loc?: SourceLocation);
176
113
  accept<R>(visitor: Visitor<R>): R;
177
- toJSON(): {
178
- type: string;
179
- receiver: any;
180
- selector: {
181
- type: import("../globals/primitives.js").YukigoPrimitive;
182
- value: string;
183
- };
184
- arguments: any[];
185
- };
114
+ toJSON(): SerializeNode;
186
115
  }
187
116
  /**
188
117
  * Represents the instantiation of a class.
@@ -198,7 +127,7 @@ export declare class New extends ASTNode {
198
127
  identifier: SymbolPrimitive;
199
128
  constructor(identifier: SymbolPrimitive, args: Expression[], loc?: SourceLocation);
200
129
  accept<R>(visitor: Visitor<R>): R;
201
- toJSON(): any;
130
+ toJSON(): SerializeNode;
202
131
  }
203
132
  /**
204
133
  * Represents an implementation clause for an interface.
@@ -209,13 +138,7 @@ export declare class Implement extends ASTNode {
209
138
  identifier: SymbolPrimitive;
210
139
  constructor(identifier: SymbolPrimitive, loc?: SourceLocation);
211
140
  accept<R>(visitor: Visitor<R>): R;
212
- toJSON(): {
213
- type: string;
214
- identifier: {
215
- type: import("../globals/primitives.js").YukigoPrimitive;
216
- value: string;
217
- };
218
- };
141
+ toJSON(): SerializeNode;
219
142
  }
220
143
  /**
221
144
  * Represents a reference to the current object instance (self/this).
@@ -223,9 +146,7 @@ export declare class Implement extends ASTNode {
223
146
  */
224
147
  export declare class Self extends ASTNode {
225
148
  accept<R>(visitor: Visitor<R>): R;
226
- toJSON(): {
227
- type: string;
228
- };
149
+ toJSON(): SerializeNode;
229
150
  }
230
151
  /**
231
152
  * Represents a reference to the superclass or parent object.
@@ -236,10 +157,7 @@ export declare class Super extends ASTNode {
236
157
  args: Expression[];
237
158
  constructor(args: Expression[], loc?: SourceLocation);
238
159
  accept<R>(visitor: Visitor<R>): R;
239
- toJSON(): {
240
- type: string;
241
- args: Expression[];
242
- };
160
+ toJSON(): SerializeNode;
243
161
  }
244
162
  /**
245
163
  * Declaration of custom primitive operators - also known as operator overriding.
@@ -256,10 +174,6 @@ export declare class PrimitiveMethod extends ASTNode {
256
174
  equations: Equation[];
257
175
  constructor(operator: Operator, equations: Equation[], loc: SourceLocation);
258
176
  accept<R>(visitor: Visitor<R>): R;
259
- toJSON(): {
260
- type: string;
261
- operator: Operator;
262
- equations: Equation[];
263
- };
177
+ toJSON(): SerializeNode;
264
178
  }
265
179
  //# sourceMappingURL=object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/paradigms/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/paradigms/object.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ASTNode, } from "../globals/generics.js";
1
+ import { ASTNode } from "../globals/generics.js";
2
2
  /**
3
3
  * Represents a method definition within a class or object.
4
4
  *
@@ -13,13 +13,16 @@ export class Method extends ASTNode {
13
13
  equations;
14
14
  /** @hidden */
15
15
  identifier;
16
- constructor(identifier, equations, loc) {
16
+ /** @hidden */
17
+ isAbstract;
18
+ constructor(identifier, equations, loc, isAbstract = false) {
17
19
  super(loc);
18
20
  this.identifier = identifier;
19
21
  this.equations = equations;
22
+ this.isAbstract = isAbstract;
20
23
  }
21
24
  accept(visitor) {
22
- return visitor.visitMethod?.(this);
25
+ return this.dispatchVisit(visitor, visitor.visitMethod);
23
26
  }
24
27
  toJSON() {
25
28
  return {
@@ -44,7 +47,7 @@ export class Attribute extends ASTNode {
44
47
  this.expression = expression;
45
48
  }
46
49
  accept(visitor) {
47
- return visitor.visitAttribute?.(this);
50
+ return this.dispatchVisit(visitor, visitor.visitAttribute);
48
51
  }
49
52
  toJSON() {
50
53
  return {
@@ -66,19 +69,25 @@ export class Object extends ASTNode {
66
69
  expression;
67
70
  /** @hidden */
68
71
  identifier;
72
+ /** @hidden */
73
+ extendsSymbol;
74
+ /** @hidden */
75
+ extendsArgs;
69
76
  constructor(identifier, expression, loc) {
70
77
  super(loc);
71
78
  this.identifier = identifier;
72
79
  this.expression = expression;
73
80
  }
74
81
  accept(visitor) {
75
- return visitor.visitObject?.(this);
82
+ return this.dispatchVisit(visitor, visitor.visitObject);
76
83
  }
77
84
  toJSON() {
78
85
  return {
79
86
  type: "Object",
80
87
  identifier: this.identifier.toJSON(),
81
88
  expression: this.expression.toJSON(),
89
+ extendsSymbol: this.extendsSymbol ? this.extendsSymbol.toJSON() : undefined,
90
+ extendsArgs: this.extendsArgs ? this.extendsArgs.map(a => a.toJSON()) : undefined,
82
91
  };
83
92
  }
84
93
  }
@@ -109,14 +118,14 @@ export class Class extends ASTNode {
109
118
  this.expression = expression;
110
119
  }
111
120
  accept(visitor) {
112
- return visitor.visitClass?.(this);
121
+ return this.dispatchVisit(visitor, visitor.visitClass);
113
122
  }
114
123
  toJSON() {
115
124
  return {
116
125
  type: "Class",
117
126
  identifier: this.identifier.toJSON(),
118
- extends: this.extendsSymbol.toJSON(),
119
- implements: this.implementsNode.toJSON(),
127
+ extends: this.extendsSymbol?.toJSON(),
128
+ implements: this.implementsNode?.toJSON(),
120
129
  includes: this.includes.map((s) => s.toJSON()),
121
130
  expression: this.expression.toJSON(),
122
131
  };
@@ -140,7 +149,7 @@ export class Interface extends ASTNode {
140
149
  this.expression = expression;
141
150
  }
142
151
  accept(visitor) {
143
- return visitor.visitInterface?.(this);
152
+ return this.dispatchVisit(visitor, visitor.visitInterface);
144
153
  }
145
154
  toJSON() {
146
155
  return {
@@ -173,7 +182,7 @@ export class Send extends ASTNode {
173
182
  this.args = args;
174
183
  }
175
184
  accept(visitor) {
176
- return visitor.visitSend?.(this);
185
+ return this.dispatchVisit(visitor, visitor.visitSend);
177
186
  }
178
187
  toJSON() {
179
188
  return {
@@ -202,7 +211,7 @@ export class New extends ASTNode {
202
211
  this.args = args;
203
212
  }
204
213
  accept(visitor) {
205
- return visitor.visitNew?.(this);
214
+ return this.dispatchVisit(visitor, visitor.visitNew);
206
215
  }
207
216
  toJSON() {
208
217
  return {
@@ -224,7 +233,7 @@ export class Implement extends ASTNode {
224
233
  this.identifier = identifier;
225
234
  }
226
235
  accept(visitor) {
227
- return visitor.visitImplement?.(this);
236
+ return this.dispatchVisit(visitor, visitor.visitImplement);
228
237
  }
229
238
  toJSON() {
230
239
  return {
@@ -239,7 +248,7 @@ export class Implement extends ASTNode {
239
248
  */
240
249
  export class Self extends ASTNode {
241
250
  accept(visitor) {
242
- return visitor.visitSelf?.(this);
251
+ return this.dispatchVisit(visitor, visitor.visitSelf);
243
252
  }
244
253
  toJSON() {
245
254
  return {
@@ -259,7 +268,7 @@ export class Super extends ASTNode {
259
268
  this.args = args;
260
269
  }
261
270
  accept(visitor) {
262
- return visitor.visitSuper?.(this);
271
+ return this.dispatchVisit(visitor, visitor.visitSuper);
263
272
  }
264
273
  toJSON() {
265
274
  return {
@@ -287,7 +296,7 @@ export class PrimitiveMethod extends ASTNode {
287
296
  this.equations = equations;
288
297
  }
289
298
  accept(visitor) {
290
- return visitor.visitPrimitiveMethod?.(this);
299
+ return this.dispatchVisit(visitor, visitor.visitPrimitiveMethod);
291
300
  }
292
301
  toJSON() {
293
302
  return {