yukigo-ast 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.
Files changed (42) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/globals/generics.d.ts +740 -0
  3. package/dist/globals/generics.js +1128 -0
  4. package/dist/globals/helpers.d.ts +4 -0
  5. package/dist/globals/helpers.js +76 -0
  6. package/dist/globals/operators.d.ts +251 -0
  7. package/dist/globals/operators.js +336 -0
  8. package/dist/globals/patterns.d.ts +170 -0
  9. package/dist/globals/patterns.js +261 -0
  10. package/dist/globals/runtime.d.ts +22 -0
  11. package/dist/globals/runtime.js +6 -0
  12. package/dist/globals/types.d.ts +185 -0
  13. package/dist/globals/types.js +329 -0
  14. package/dist/index.d.ts +12 -0
  15. package/dist/index.js +12 -0
  16. package/dist/paradigms/data.d.ts +246 -0
  17. package/dist/paradigms/data.js +348 -0
  18. package/dist/paradigms/functional.d.ts +59 -0
  19. package/dist/paradigms/functional.js +103 -0
  20. package/dist/paradigms/imperative.d.ts +124 -0
  21. package/dist/paradigms/imperative.js +188 -0
  22. package/dist/paradigms/logic.d.ts +163 -0
  23. package/dist/paradigms/logic.js +240 -0
  24. package/dist/paradigms/object.d.ts +201 -0
  25. package/dist/paradigms/object.js +308 -0
  26. package/dist/visitor.d.ts +254 -0
  27. package/dist/visitor.js +426 -0
  28. package/package.json +25 -0
  29. package/src/globals/generics.ts +1421 -0
  30. package/src/globals/helpers.ts +107 -0
  31. package/src/globals/operators.ts +515 -0
  32. package/src/globals/patterns.ts +321 -0
  33. package/src/globals/runtime.ts +33 -0
  34. package/src/globals/types.ts +375 -0
  35. package/src/index.ts +12 -0
  36. package/src/paradigms/data.ts +393 -0
  37. package/src/paradigms/functional.ts +129 -0
  38. package/src/paradigms/imperative.ts +232 -0
  39. package/src/paradigms/logic.ts +314 -0
  40. package/src/paradigms/object.ts +366 -0
  41. package/src/visitor.ts +692 -0
  42. package/tsconfig.json +22 -0
@@ -0,0 +1,254 @@
1
+ import { Sequence, NumberPrimitive, BooleanPrimitive, StringPrimitive, ListPrimitive, NilPrimitive, SymbolPrimitive, CharPrimitive, TupleExpression, FieldExpression, DataExpression, ConsExpression, LetInExpression, Otherwise, ListComprehension, RangeExpression, If, Return, Field, Constructor, UnguardedBody, GuardedBody, Equation, Switch, Try, Raise, Print, Function, Generator, For, Break, Continue, Variable, Assignment, ASTNode, Record, Case, Catch, Input } from "./globals/generics.js";
2
+ import { ArithmeticUnaryOperation, ArithmeticBinaryOperation, ListUnaryOperation, ListBinaryOperation, ComparisonOperation, LogicalBinaryOperation, LogicalUnaryOperation, StringOperation, UnifyOperation, AssignOperation, BitwiseBinaryOperation, BitwiseUnaryOperation } from "./globals/operators.js";
3
+ import { VariablePattern, LiteralPattern, ApplicationPattern, TuplePattern, ListPattern, FunctorPattern, AsPattern, WildcardPattern, UnionPattern, ConstructorPattern, ConsPattern } from "./globals/patterns.js";
4
+ import { SimpleType, TypeVar, TypeApplication, ListType, TupleType, Constraint, ParameterizedType, ConstrainedType, TypeAlias, TypeSignature, TypeCast } from "./globals/types.js";
5
+ import { AlterDatabase, AlterTable, Commit, CreateDatabase, CreateIndex, CreateTable, Delete, DropIndex, DropTable, InsertInto, Rollback, Select, Update } from "./paradigms/data.js";
6
+ import { CompositionExpression, Lambda, Application, Yield } from "./paradigms/functional.js";
7
+ import { EntryPoint, Procedure, Enumeration, While, Repeat, ForLoop, Structure } from "./paradigms/imperative.js";
8
+ import { Call, Exist, Not, Findall, Forall, Goal, Rule, Fact, Query } from "./paradigms/logic.js";
9
+ import { Send, New, Implement, Include, Self, Method, Attribute, Class, Interface, Object, Super, PrimitiveMethod } from "./paradigms/object.js";
10
+ export interface StrictVisitor<TReturn> {
11
+ visitSequence(node: Sequence): TReturn;
12
+ visitNumberPrimitive(node: NumberPrimitive): TReturn;
13
+ visitBooleanPrimitive(node: BooleanPrimitive): TReturn;
14
+ visitStringPrimitive(node: StringPrimitive): TReturn;
15
+ visitListPrimitive(node: ListPrimitive): TReturn;
16
+ visitNilPrimitive(node: NilPrimitive): TReturn;
17
+ visitSymbolPrimitive(node: SymbolPrimitive): TReturn;
18
+ visitCharPrimitive(node: CharPrimitive): TReturn;
19
+ visitArithmeticUnaryOperation(node: ArithmeticUnaryOperation): TReturn;
20
+ visitArithmeticBinaryOperation(node: ArithmeticBinaryOperation): TReturn;
21
+ visitListUnaryOperation(node: ListUnaryOperation): TReturn;
22
+ visitListBinaryOperation(node: ListBinaryOperation): TReturn;
23
+ visitComparisonOperation(node: ComparisonOperation): TReturn;
24
+ visitLogicalBinaryOperation(node: LogicalBinaryOperation): TReturn;
25
+ visitLogicalUnaryOperation(node: LogicalUnaryOperation): TReturn;
26
+ visitBitwiseBinaryOperation(node: BitwiseBinaryOperation): TReturn;
27
+ visitBitwiseUnaryOperation(node: BitwiseUnaryOperation): TReturn;
28
+ visitStringOperation(node: StringOperation): TReturn;
29
+ visitUnifyOperation(node: UnifyOperation): TReturn;
30
+ visitAssignOperation(node: AssignOperation): TReturn;
31
+ visitTupleExpr(node: TupleExpression): TReturn;
32
+ visitFieldExpr(node: FieldExpression): TReturn;
33
+ visitDataExpr(node: DataExpression): TReturn;
34
+ visitConsExpr(node: ConsExpression): TReturn;
35
+ visitLetInExpr(node: LetInExpression): TReturn;
36
+ visitCall(node: Call): TReturn;
37
+ visitOtherwise(node: Otherwise): TReturn;
38
+ visitCompositionExpression(node: CompositionExpression): TReturn;
39
+ visitLambda(node: Lambda): TReturn;
40
+ visitApplication(node: Application): TReturn;
41
+ visitExist(node: Exist): TReturn;
42
+ visitNot(node: Not): TReturn;
43
+ visitFindall(node: Findall): TReturn;
44
+ visitForall(node: Forall): TReturn;
45
+ visitGoal(node: Goal): TReturn;
46
+ visitSend(node: Send): TReturn;
47
+ visitNew(node: New): TReturn;
48
+ visitImplement(node: Implement): TReturn;
49
+ visitInclude(node: Include): TReturn;
50
+ visitListComprehension(node: ListComprehension): TReturn;
51
+ visitGenerator(node: Generator): TReturn;
52
+ visitRangeExpression(node: RangeExpression): TReturn;
53
+ visitSelf(node: Self): TReturn;
54
+ visitSuper(node: Super): TReturn;
55
+ visitYield(node: Yield): TReturn;
56
+ visitIf(node: If): TReturn;
57
+ visitReturn(node: Return): TReturn;
58
+ visitFunction(node: Function): TReturn;
59
+ visitField(node: Field): TReturn;
60
+ visitConstructor(node: Constructor): TReturn;
61
+ visitRecord(node: Record): TReturn;
62
+ visitUnguardedBody(node: UnguardedBody): TReturn;
63
+ visitGuardedBody(node: GuardedBody): TReturn;
64
+ visitEquation(node: Equation): TReturn;
65
+ visitSwitch(node: Switch): TReturn;
66
+ visitCase(node: Case): TReturn;
67
+ visitTry(node: Try): TReturn;
68
+ visitCatch(node: Catch): TReturn;
69
+ visitRaise(node: Raise): TReturn;
70
+ visitPrint(node: Print): TReturn;
71
+ visitInput(node: Input): TReturn;
72
+ visitFor(node: For): TReturn;
73
+ visitBreak(node: Break): TReturn;
74
+ visitContinue(node: Continue): TReturn;
75
+ visitVariable(node: Variable): TReturn;
76
+ visitAssignment(node: Assignment): TReturn;
77
+ visitStructure(node: Structure): TReturn;
78
+ visitEntryPoint(node: EntryPoint): TReturn;
79
+ visitProcedure(node: Procedure): TReturn;
80
+ visitEnumeration(node: Enumeration): TReturn;
81
+ visitWhile(node: While): TReturn;
82
+ visitRepeat(node: Repeat): TReturn;
83
+ visitForLoop(node: ForLoop): TReturn;
84
+ visitRule(node: Rule): TReturn;
85
+ visitFact(node: Fact): TReturn;
86
+ visitQuery(node: Query): TReturn;
87
+ visitMethod(node: Method): TReturn;
88
+ visitPrimitiveMethod(node: PrimitiveMethod): TReturn;
89
+ visitAttribute(node: Attribute): TReturn;
90
+ visitObject(node: Object): TReturn;
91
+ visitClass(node: Class): TReturn;
92
+ visitInterface(node: Interface): TReturn;
93
+ visitVariablePattern(node: VariablePattern): TReturn;
94
+ visitLiteralPattern(node: LiteralPattern): TReturn;
95
+ visitApplicationPattern(node: ApplicationPattern): TReturn;
96
+ visitTuplePattern(node: TuplePattern): TReturn;
97
+ visitListPattern(node: ListPattern): TReturn;
98
+ visitFunctorPattern(node: FunctorPattern): TReturn;
99
+ visitAsPattern(node: AsPattern): TReturn;
100
+ visitWildcardPattern(node: WildcardPattern): TReturn;
101
+ visitUnionPattern(node: UnionPattern): TReturn;
102
+ visitConstructorPattern(node: ConstructorPattern): TReturn;
103
+ visitConsPattern(node: ConsPattern): TReturn;
104
+ visitSimpleType(node: SimpleType): TReturn;
105
+ visitTypeVar(node: TypeVar): TReturn;
106
+ visitTypeApplication(node: TypeApplication): TReturn;
107
+ visitListType(node: ListType): TReturn;
108
+ visitTupleType(node: TupleType): TReturn;
109
+ visitConstraint(node: Constraint): TReturn;
110
+ visitParameterizedType(node: ParameterizedType): TReturn;
111
+ visitConstrainedType(node: ConstrainedType): TReturn;
112
+ visitTypeAlias(node: TypeAlias): TReturn;
113
+ visitTypeSignature(node: TypeSignature): TReturn;
114
+ visitTypeCast(node: TypeCast): TReturn;
115
+ visitSelect(node: Select): TReturn;
116
+ visitUpdate(node: Update): TReturn;
117
+ visitDelete(node: Delete): TReturn;
118
+ visitInsertInto(node: InsertInto): TReturn;
119
+ visitCreateDatabase(node: CreateDatabase): TReturn;
120
+ visitAlterDatabase(node: AlterDatabase): TReturn;
121
+ visitCreateTable(node: CreateTable): TReturn;
122
+ visitAlterTable(node: AlterTable): TReturn;
123
+ visitDropTable(node: DropTable): TReturn;
124
+ visitCreateIndex(node: CreateIndex): TReturn;
125
+ visitDropIndex(node: DropIndex): TReturn;
126
+ visitCommit(node: Commit): TReturn;
127
+ visitRollback(node: Rollback): TReturn;
128
+ visit(node: ASTNode): TReturn;
129
+ }
130
+ export type Visitor<R> = Partial<StrictVisitor<R>>;
131
+ export declare class StopTraversalException extends Error {
132
+ constructor();
133
+ }
134
+ export declare class TraverseVisitor implements StrictVisitor<void> {
135
+ visitSelect(node: Select): void;
136
+ visitUpdate(node: Update): void;
137
+ visitDelete(node: Delete): void;
138
+ visitInsertInto(node: InsertInto): void;
139
+ visitCreateDatabase(node: CreateDatabase): void;
140
+ visitAlterDatabase(node: AlterDatabase): void;
141
+ visitCreateTable(node: CreateTable): void;
142
+ visitAlterTable(node: AlterTable): void;
143
+ visitDropTable(node: DropTable): void;
144
+ visitCreateIndex(node: CreateIndex): void;
145
+ visitDropIndex(node: DropIndex): void;
146
+ visitCommit(node: Commit): void;
147
+ visitRollback(node: Rollback): void;
148
+ protected traverseCollection(nodes: ASTNode[]): void;
149
+ visitSequence(node: Sequence): void;
150
+ visitStructure(node: Structure): void;
151
+ visitNumberPrimitive(node: NumberPrimitive): void;
152
+ visitBooleanPrimitive(node: BooleanPrimitive): void;
153
+ visitStringPrimitive(node: StringPrimitive): void;
154
+ visitListPrimitive(node: ListPrimitive): void;
155
+ visitNilPrimitive(node: NilPrimitive): void;
156
+ visitSymbolPrimitive(node: SymbolPrimitive): void;
157
+ visitCharPrimitive(node: CharPrimitive): void;
158
+ visitArithmeticUnaryOperation(node: ArithmeticUnaryOperation): void;
159
+ visitArithmeticBinaryOperation(node: ArithmeticBinaryOperation): void;
160
+ visitListUnaryOperation(node: ListUnaryOperation): void;
161
+ visitListBinaryOperation(node: ListBinaryOperation): void;
162
+ visitComparisonOperation(node: ComparisonOperation): void;
163
+ visitLogicalBinaryOperation(node: LogicalBinaryOperation): void;
164
+ visitLogicalUnaryOperation(node: LogicalUnaryOperation): void;
165
+ visitBitwiseBinaryOperation(node: BitwiseBinaryOperation): void;
166
+ visitBitwiseUnaryOperation(node: BitwiseUnaryOperation): void;
167
+ visitStringOperation(node: StringOperation): void;
168
+ visitUnifyOperation(node: UnifyOperation): void;
169
+ visitAssignOperation(node: AssignOperation): void;
170
+ visitTupleExpr(node: TupleExpression): void;
171
+ visitFieldExpr(node: FieldExpression): void;
172
+ visitDataExpr(node: DataExpression): void;
173
+ visitConsExpr(node: ConsExpression): void;
174
+ visitLetInExpr(node: LetInExpression): void;
175
+ visitCall(node: Call): void;
176
+ visitOtherwise(node: Otherwise): void;
177
+ visitCompositionExpression(node: CompositionExpression): void;
178
+ visitLambda(node: Lambda): void;
179
+ visitApplication(node: Application): void;
180
+ visitExist(node: Exist): void;
181
+ visitNot(node: Not): void;
182
+ visitFindall(node: Findall): void;
183
+ visitForall(node: Forall): void;
184
+ visitGoal(node: Goal): void;
185
+ visitSend(node: Send): void;
186
+ visitNew(node: New): void;
187
+ visitImplement(node: Implement): void;
188
+ visitInclude(node: Include): void;
189
+ visitSelf(node: Self): void;
190
+ visitSuper(node: Super): void;
191
+ visitListComprehension(node: ListComprehension): void;
192
+ visitGenerator(node: Generator): void;
193
+ visitRangeExpression(node: RangeExpression): void;
194
+ visitYield(node: Yield): void;
195
+ visitIf(node: If): void;
196
+ visitReturn(node: Return): void;
197
+ visitFunction(node: Function): void;
198
+ visitField(node: Field): void;
199
+ visitConstructor(node: Constructor): void;
200
+ visitRecord(node: Record): void;
201
+ visitUnguardedBody(node: UnguardedBody): void;
202
+ visitGuardedBody(node: GuardedBody): void;
203
+ visitEquation(node: Equation): void;
204
+ visitSwitch(node: Switch): void;
205
+ visitCase(node: Case): void;
206
+ visitTry(node: Try): void;
207
+ visitCatch(node: Catch): void;
208
+ visitRaise(node: Raise): void;
209
+ visitPrint(node: Print): void;
210
+ visitInput(node: Input): void;
211
+ visitFor(node: For): void;
212
+ visitBreak(node: Break): void;
213
+ visitContinue(node: Continue): void;
214
+ visitVariable(node: Variable): void;
215
+ visitAssignment(node: Assignment): void;
216
+ visitEntryPoint(node: EntryPoint): void;
217
+ visitProcedure(node: Procedure): void;
218
+ visitEnumeration(node: Enumeration): void;
219
+ visitWhile(node: While): void;
220
+ visitRepeat(node: Repeat): void;
221
+ visitForLoop(node: ForLoop): void;
222
+ visitRule(node: Rule): void;
223
+ visitFact(node: Fact): void;
224
+ visitQuery(node: Query): void;
225
+ visitMethod(node: Method): void;
226
+ visitPrimitiveMethod(node: PrimitiveMethod): void;
227
+ visitAttribute(node: Attribute): void;
228
+ visitObject(node: Object): void;
229
+ visitClass(node: Class): void;
230
+ visitInterface(node: Interface): void;
231
+ visitVariablePattern(node: VariablePattern): void;
232
+ visitLiteralPattern(node: LiteralPattern): void;
233
+ visitApplicationPattern(node: ApplicationPattern): void;
234
+ visitTuplePattern(node: TuplePattern): void;
235
+ visitListPattern(node: ListPattern): void;
236
+ visitFunctorPattern(node: FunctorPattern): void;
237
+ visitAsPattern(node: AsPattern): void;
238
+ visitWildcardPattern(node: WildcardPattern): void;
239
+ visitUnionPattern(node: UnionPattern): void;
240
+ visitConstructorPattern(node: ConstructorPattern): void;
241
+ visitConsPattern(node: ConsPattern): void;
242
+ visitSimpleType(node: SimpleType): void;
243
+ visitTypeVar(node: TypeVar): void;
244
+ visitTypeApplication(node: TypeApplication): void;
245
+ visitListType(node: ListType): void;
246
+ visitTupleType(node: TupleType): void;
247
+ visitConstraint(node: Constraint): void;
248
+ visitParameterizedType(node: ParameterizedType): void;
249
+ visitConstrainedType(node: ConstrainedType): void;
250
+ visitTypeAlias(node: TypeAlias): void;
251
+ visitTypeSignature(node: TypeSignature): void;
252
+ visitTypeCast(node: TypeCast): void;
253
+ visit(node: ASTNode): void;
254
+ }
@@ -0,0 +1,426 @@
1
+ export class StopTraversalException extends Error {
2
+ constructor() {
3
+ super("Inspection found, aborting traversal.");
4
+ }
5
+ }
6
+ export class TraverseVisitor {
7
+ visitSelect(node) {
8
+ this.traverseCollection(node.columns);
9
+ node.where?.accept(this);
10
+ }
11
+ visitUpdate(node) {
12
+ this.traverseCollection(node.assignments);
13
+ node.where?.accept(this);
14
+ }
15
+ visitDelete(node) {
16
+ node.where?.accept(this);
17
+ }
18
+ visitInsertInto(node) {
19
+ node.values.forEach((val) => this.traverseCollection(val));
20
+ }
21
+ visitCreateDatabase(node) { }
22
+ visitAlterDatabase(node) { }
23
+ visitCreateTable(node) {
24
+ this.traverseCollection(node.columns);
25
+ }
26
+ visitAlterTable(node) {
27
+ node.action.accept(this);
28
+ }
29
+ visitDropTable(node) { }
30
+ visitCreateIndex(node) { }
31
+ visitDropIndex(node) { }
32
+ visitCommit(node) {
33
+ node.name.accept(this);
34
+ }
35
+ visitRollback(node) {
36
+ node.name.accept(this);
37
+ }
38
+ traverseCollection(nodes) {
39
+ for (const node of nodes) {
40
+ try {
41
+ node.accept(this);
42
+ }
43
+ catch (e) {
44
+ throw e;
45
+ }
46
+ }
47
+ }
48
+ visitSequence(node) {
49
+ this.traverseCollection(node.statements);
50
+ }
51
+ visitStructure(node) {
52
+ this.traverseCollection(node.elements);
53
+ }
54
+ visitNumberPrimitive(node) { }
55
+ visitBooleanPrimitive(node) { }
56
+ visitStringPrimitive(node) { }
57
+ visitListPrimitive(node) {
58
+ this.traverseCollection(node.elements);
59
+ }
60
+ visitNilPrimitive(node) { }
61
+ visitSymbolPrimitive(node) { }
62
+ visitCharPrimitive(node) { }
63
+ visitArithmeticUnaryOperation(node) {
64
+ node.operand.accept(this);
65
+ }
66
+ visitArithmeticBinaryOperation(node) {
67
+ node.left.accept(this);
68
+ node.right.accept(this);
69
+ }
70
+ visitListUnaryOperation(node) {
71
+ node.operand.accept(this);
72
+ }
73
+ visitListBinaryOperation(node) {
74
+ node.left.accept(this);
75
+ node.right.accept(this);
76
+ }
77
+ visitComparisonOperation(node) {
78
+ node.left.accept(this);
79
+ node.right.accept(this);
80
+ }
81
+ visitLogicalBinaryOperation(node) {
82
+ node.left.accept(this);
83
+ node.right.accept(this);
84
+ }
85
+ visitLogicalUnaryOperation(node) {
86
+ node.operand.accept(this);
87
+ }
88
+ visitBitwiseBinaryOperation(node) {
89
+ node.left.accept(this);
90
+ node.right.accept(this);
91
+ }
92
+ visitBitwiseUnaryOperation(node) {
93
+ node.operand.accept(this);
94
+ }
95
+ visitStringOperation(node) {
96
+ node.left.accept(this);
97
+ node.right.accept(this);
98
+ }
99
+ visitUnifyOperation(node) {
100
+ node.left.accept(this);
101
+ node.right.accept(this);
102
+ }
103
+ visitAssignOperation(node) {
104
+ node.left.accept(this);
105
+ node.right.accept(this);
106
+ }
107
+ visitTupleExpr(node) {
108
+ this.traverseCollection(node.elements);
109
+ }
110
+ visitFieldExpr(node) {
111
+ node.name.accept(this);
112
+ node.expression.accept(this);
113
+ }
114
+ visitDataExpr(node) {
115
+ node.name.accept(this);
116
+ this.traverseCollection(node.contents);
117
+ }
118
+ visitConsExpr(node) {
119
+ node.head.accept(this);
120
+ node.tail.accept(this);
121
+ }
122
+ visitLetInExpr(node) {
123
+ node.expression.accept(this);
124
+ node.declarations.accept(this);
125
+ }
126
+ visitCall(node) {
127
+ node.callee.accept(this);
128
+ this.traverseCollection(node.args);
129
+ }
130
+ visitOtherwise(node) { }
131
+ visitCompositionExpression(node) {
132
+ node.left.accept(this);
133
+ node.right.accept(this);
134
+ }
135
+ visitLambda(node) {
136
+ node.body.accept(this);
137
+ this.traverseCollection(node.parameters);
138
+ }
139
+ visitApplication(node) {
140
+ node.functionExpr.accept(this);
141
+ node.parameter.accept(this);
142
+ }
143
+ visitExist(node) {
144
+ node.identifier.accept(this);
145
+ this.traverseCollection(node.patterns);
146
+ }
147
+ visitNot(node) {
148
+ this.traverseCollection(node.expressions);
149
+ }
150
+ visitFindall(node) {
151
+ node.template.accept(this);
152
+ node.goal.accept(this);
153
+ node.bag.accept(this);
154
+ }
155
+ visitForall(node) {
156
+ node.condition.accept(this);
157
+ node.action.accept(this);
158
+ }
159
+ visitGoal(node) {
160
+ node.identifier.accept(this);
161
+ this.traverseCollection(node.args);
162
+ }
163
+ visitSend(node) {
164
+ node.selector.accept(this);
165
+ node.receiver.accept(this);
166
+ this.traverseCollection(node.args);
167
+ }
168
+ visitNew(node) {
169
+ node.identifier.accept(this);
170
+ this.traverseCollection(node.args);
171
+ }
172
+ visitImplement(node) {
173
+ node.identifier.accept(this);
174
+ }
175
+ visitInclude(node) {
176
+ node.identifier.accept(this);
177
+ }
178
+ visitSelf(node) { }
179
+ visitSuper(node) { }
180
+ visitListComprehension(node) {
181
+ node.projection.accept(this);
182
+ this.traverseCollection(node.generators);
183
+ }
184
+ visitGenerator(node) {
185
+ node.variable.accept(this);
186
+ node.expression.accept(this);
187
+ }
188
+ visitRangeExpression(node) {
189
+ node.start.accept(this);
190
+ node.step?.accept(this);
191
+ node.end?.accept(this);
192
+ }
193
+ visitYield(node) {
194
+ node.expression.accept(this);
195
+ }
196
+ visitIf(node) {
197
+ node.condition.accept(this);
198
+ node.then.accept(this);
199
+ node.elseExpr.accept(this);
200
+ }
201
+ visitReturn(node) {
202
+ node.body.accept(this);
203
+ }
204
+ visitFunction(node) {
205
+ node.identifier.accept(this);
206
+ this.traverseCollection(node.equations);
207
+ }
208
+ visitField(node) {
209
+ node.name?.accept(this);
210
+ node.value.accept(this);
211
+ }
212
+ visitConstructor(node) {
213
+ node.name.accept(this);
214
+ this.traverseCollection(node.fields);
215
+ }
216
+ visitRecord(node) {
217
+ node.name.accept(this);
218
+ this.traverseCollection(node.contents);
219
+ if (node.deriving)
220
+ this.traverseCollection(node.deriving);
221
+ }
222
+ visitUnguardedBody(node) {
223
+ node.sequence.accept(this);
224
+ }
225
+ visitGuardedBody(node) {
226
+ node.condition.accept(this);
227
+ node.body.accept(this);
228
+ }
229
+ visitEquation(node) {
230
+ if (Array.isArray(node.body)) {
231
+ this.traverseCollection(node.body);
232
+ }
233
+ else {
234
+ node.body.accept(this);
235
+ }
236
+ this.traverseCollection(node.patterns);
237
+ node.returnExpr?.accept(this);
238
+ }
239
+ visitSwitch(node) {
240
+ node.value.accept(this);
241
+ this.traverseCollection(node.cases);
242
+ }
243
+ visitCase(node) {
244
+ node.condition.accept(this);
245
+ node.body.accept(this);
246
+ }
247
+ visitTry(node) {
248
+ node.body.accept(this);
249
+ this.traverseCollection(node.catchExpr);
250
+ node.finallyExpr.accept(this);
251
+ }
252
+ visitCatch(node) {
253
+ node.body.accept(this);
254
+ this.traverseCollection(node.patterns);
255
+ }
256
+ visitRaise(node) {
257
+ node.body.accept(this);
258
+ }
259
+ visitPrint(node) {
260
+ node.expression.accept(this);
261
+ }
262
+ visitInput(node) {
263
+ node.message.accept(this);
264
+ }
265
+ visitFor(node) {
266
+ node.body.accept(this);
267
+ this.traverseCollection(node.statements);
268
+ }
269
+ visitBreak(node) {
270
+ node.body.accept(this);
271
+ }
272
+ visitContinue(node) {
273
+ node.body.accept(this);
274
+ }
275
+ visitVariable(node) {
276
+ node.identifier.accept(this);
277
+ node.expression.accept(this);
278
+ node.variableType?.accept(this);
279
+ }
280
+ visitAssignment(node) {
281
+ node.identifier.accept(this);
282
+ node.expression.accept(this);
283
+ }
284
+ visitEntryPoint(node) {
285
+ node.identifier.accept(this);
286
+ node.expression.accept(this);
287
+ }
288
+ visitProcedure(node) {
289
+ node.identifier.accept(this);
290
+ this.traverseCollection(node.equations);
291
+ }
292
+ visitEnumeration(node) {
293
+ node.identifier.accept(this);
294
+ this.traverseCollection(node.contents);
295
+ }
296
+ visitWhile(node) {
297
+ node.condition.accept(this);
298
+ node.body.accept(this);
299
+ }
300
+ visitRepeat(node) {
301
+ node.body.accept(this);
302
+ node.count.accept(this);
303
+ }
304
+ visitForLoop(node) {
305
+ node.initialization.accept(this);
306
+ node.condition.accept(this);
307
+ node.update.accept(this);
308
+ node.body.accept(this);
309
+ }
310
+ visitRule(node) {
311
+ node.identifier.accept(this);
312
+ this.traverseCollection(node.expressions);
313
+ this.traverseCollection(node.patterns);
314
+ }
315
+ visitFact(node) {
316
+ node.identifier.accept(this);
317
+ this.traverseCollection(node.patterns);
318
+ }
319
+ visitQuery(node) {
320
+ node.expression.accept(this);
321
+ }
322
+ visitMethod(node) {
323
+ node.identifier.accept(this);
324
+ this.traverseCollection(node.equations);
325
+ }
326
+ visitPrimitiveMethod(node) {
327
+ this.traverseCollection(node.equations);
328
+ }
329
+ visitAttribute(node) {
330
+ node.identifier.accept(this);
331
+ node.expression.accept(this);
332
+ }
333
+ visitObject(node) {
334
+ node.identifier.accept(this);
335
+ node.expression.accept(this);
336
+ }
337
+ visitClass(node) {
338
+ node.identifier.accept(this);
339
+ node.expression.accept(this);
340
+ node.extendsSymbol?.accept(this);
341
+ node.implementsNode?.accept(this);
342
+ }
343
+ visitInterface(node) {
344
+ node.identifier.accept(this);
345
+ this.traverseCollection(node.extendsSymbol);
346
+ node.expression.accept(this);
347
+ }
348
+ visitVariablePattern(node) {
349
+ node.name.accept(this);
350
+ }
351
+ visitLiteralPattern(node) {
352
+ node.name.accept(this);
353
+ }
354
+ visitApplicationPattern(node) {
355
+ node.symbol.accept(this);
356
+ this.traverseCollection(node.args);
357
+ }
358
+ visitTuplePattern(node) {
359
+ this.traverseCollection(node.elements);
360
+ }
361
+ visitListPattern(node) {
362
+ this.traverseCollection(node.elements);
363
+ }
364
+ visitFunctorPattern(node) {
365
+ node.identifier.accept(this);
366
+ this.traverseCollection(node.args);
367
+ }
368
+ visitAsPattern(node) {
369
+ node.alias.accept(this);
370
+ node.pattern.accept(this);
371
+ }
372
+ visitWildcardPattern(node) { }
373
+ visitUnionPattern(node) {
374
+ this.traverseCollection(node.patterns);
375
+ }
376
+ visitConstructorPattern(node) {
377
+ this.traverseCollection(node.patterns);
378
+ }
379
+ visitConsPattern(node) {
380
+ node.head.accept(this);
381
+ node.tail.accept(this);
382
+ }
383
+ visitSimpleType(node) {
384
+ this.traverseCollection(node.constraints);
385
+ }
386
+ visitTypeVar(node) {
387
+ this.traverseCollection(node.constraints);
388
+ }
389
+ visitTypeApplication(node) {
390
+ node.functionType.accept(this);
391
+ node.argument.accept(this);
392
+ }
393
+ visitListType(node) {
394
+ this.traverseCollection(node.constraints);
395
+ }
396
+ visitTupleType(node) {
397
+ this.traverseCollection(node.constraints);
398
+ this.traverseCollection(node.values);
399
+ }
400
+ visitConstraint(node) {
401
+ this.traverseCollection(node.parameters);
402
+ }
403
+ visitParameterizedType(node) {
404
+ this.traverseCollection(node.inputs);
405
+ this.traverseCollection(node.constraints);
406
+ node.returnType.accept(this);
407
+ }
408
+ visitConstrainedType(node) {
409
+ this.traverseCollection(node.constraints);
410
+ }
411
+ visitTypeAlias(node) {
412
+ node.identifier.accept(this);
413
+ node.value.accept(this);
414
+ }
415
+ visitTypeSignature(node) {
416
+ node.body.accept(this);
417
+ node.identifier.accept(this);
418
+ }
419
+ visitTypeCast(node) {
420
+ node.body.accept(this);
421
+ node.expression.accept(this);
422
+ }
423
+ visit(node) {
424
+ node.accept(this);
425
+ }
426
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "yukigo-ast",
3
+ "version": "0.1.0",
4
+ "description": "",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "exports": {
12
+ ".": "./dist/index.js",
13
+ "./package.json": "./package.json"
14
+ },
15
+ "scripts": {
16
+ "build": "tsc"
17
+ },
18
+ "keywords": [],
19
+ "author": "noiseArch",
20
+ "license": "ISC",
21
+ "devDependencies": {
22
+ "tsup": "^8.5.0",
23
+ "typescript": "^5.9.2"
24
+ }
25
+ }