yukigo-wollok-parser 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.
package/.mocharc.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extension": ["ts"],
3
+ "spec": "tests/**/*.spec.ts"
4
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,24 @@
1
+ ## 0.1.0 (2025-12-09)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **yukigo:** Nx Release added ([0bee88f](https://github.com/miyukiproject/yukigo/commit/0bee88f))
6
+ - **yukigo-wollok-parser:** Schmol refactor to visitSend ([2e0e20f](https://github.com/miyukiproject/yukigo/commit/2e0e20f))
7
+ - **yukigo-wollok-parser:** RangeExpression & Collections ([85c7c2f](https://github.com/miyukiproject/yukigo/commit/85c7c2f))
8
+ - **yukigo-wollok-parser:** Added missing operations ([421df52](https://github.com/miyukiproject/yukigo/commit/421df52))
9
+ - **yukigo-wollok-parser:** Added support for more nodes. Missing some operations ([847b0c2](https://github.com/miyukiproject/yukigo/commit/847b0c2))
10
+ - **yukigo-wollok-parser:** Return methods & ArithmeticBinaryOperations ([7fc4cf5](https://github.com/miyukiproject/yukigo/commit/7fc4cf5))
11
+ - **yukigo-wollok-parser:** Initial parser using transformation strategy ([d6a563b](https://github.com/miyukiproject/yukigo/commit/d6a563b))
12
+
13
+ ### 🩹 Fixes
14
+
15
+ - **general:** Remove build step from tests command ([9d6e02f](https://github.com/miyukiproject/yukigo/commit/9d6e02f))
16
+ - **yukigo-wollok-parser:** Small skill issue in a test ([71ce305](https://github.com/miyukiproject/yukigo/commit/71ce305))
17
+
18
+ ### 🧱 Updated Dependencies
19
+
20
+ - Updated @yukigo/ast to 0.1.0
21
+
22
+ ### ❤️ Thank You
23
+
24
+ - noiseArch
package/README.md ADDED
File without changes
@@ -0,0 +1,6 @@
1
+ import { AST, YukigoParser } from "@yukigo/ast";
2
+ export declare class YukigoWollokParser implements YukigoParser {
3
+ errors: string[];
4
+ constructor();
5
+ parse(code: string): AST;
6
+ }
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ import { parse } from "wollok-ts";
2
+ import { WollokToYukigoTransformer } from "./transformer.js";
3
+ export class YukigoWollokParser {
4
+ errors = [];
5
+ constructor() {
6
+ this.errors = [];
7
+ }
8
+ parse(code) {
9
+ const parserResult = parse.File("example").parse(code);
10
+ if (parserResult.status === false) {
11
+ const { index, expected } = parserResult;
12
+ const expectation = expected.join(" or ");
13
+ const message = `Parse error at line ${index.line} column ${index.column}: expected ${expectation}.`;
14
+ throw new Error(message);
15
+ }
16
+ const resultAST = parserResult.value;
17
+ const transformer = new WollokToYukigoTransformer();
18
+ const yukigoAst = transformer.transform(resultAST);
19
+ return yukigoAst;
20
+ }
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,OAAO,kBAAkB;IACtB,MAAM,GAAa,EAAE,CAAC;IAC7B;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,IAAY;QACvB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,YAAY,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;YACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,uBAAuB,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,MAAM,cAAc,WAAW,GAAG,CAAC;YACrG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC;QAErC,MAAM,WAAW,GAAG,IAAI,yBAAyB,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEnD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import * as Yu from "@yukigo/ast";
2
+ import { Package } from "wollok-ts";
3
+ export declare class WollokToYukigoTransformer {
4
+ transform(root: Package): Yu.AST;
5
+ private visit;
6
+ private visitPackage;
7
+ private visitImport;
8
+ private visitField;
9
+ private visitVariable;
10
+ private visitAssignment;
11
+ private visitNew;
12
+ private visitIf;
13
+ private visitThrow;
14
+ private visitTry;
15
+ private visitCatch;
16
+ private visitSuper;
17
+ private visitSingleton;
18
+ private visitClass;
19
+ private visitMethod;
20
+ private visitParameter;
21
+ private visitReturn;
22
+ private visitBody;
23
+ private visitSend;
24
+ private visitReference;
25
+ private visitLiteral;
26
+ }
@@ -0,0 +1,285 @@
1
+ import * as Yu from "@yukigo/ast";
2
+ const ARITHMETIC_BINARY_OPS = {
3
+ "+": "Plus",
4
+ "-": "Minus",
5
+ "*": "Multiply",
6
+ "/": "Divide",
7
+ "%": "Modulo",
8
+ "**": "Power",
9
+ max: "Max",
10
+ min: "Min",
11
+ };
12
+ const COMPARISON_OPS = {
13
+ "==": "Equal",
14
+ "!=": "NotEqual",
15
+ "===": "Same",
16
+ "!==": "NotSame",
17
+ ">=": "GreaterOrEqualThan",
18
+ ">": "GreaterThan",
19
+ "<=": "LessOrEqualThan",
20
+ "<": "LessThan",
21
+ like: "Similar",
22
+ };
23
+ const LOGICAL_BINARY_OPS = {
24
+ "&&": "And",
25
+ and: "And",
26
+ "||": "Or",
27
+ or: "Or",
28
+ };
29
+ const BITWISE_BINARY_OPS = {
30
+ "|": "BitwiseOr",
31
+ "&": "BitwiseAnd",
32
+ "^": "BitwiseXor",
33
+ "<<": "BitwiseLeftShift",
34
+ ">>": "BitwiseRightShift",
35
+ ">>>": "BitwiseUnsignedRightShift",
36
+ };
37
+ function mapLocation(wollokNode) {
38
+ if (wollokNode.sourceMap && wollokNode.sourceMap.start) {
39
+ return new Yu.SourceLocation(wollokNode.sourceMap.start.line, wollokNode.sourceMap.start.column);
40
+ }
41
+ return undefined;
42
+ }
43
+ export class WollokToYukigoTransformer {
44
+ transform(root) {
45
+ const result = this.visit(root);
46
+ return Array.isArray(result) ? result : [result];
47
+ }
48
+ visit(node) {
49
+ const nodeType = node.constructor ? node.constructor.name : "Unknown";
50
+ switch (nodeType) {
51
+ case "Package":
52
+ return this.visitPackage(node);
53
+ case "Singleton":
54
+ return this.visitSingleton(node);
55
+ case "Mixin":
56
+ case "Class":
57
+ return this.visitClass(node);
58
+ case "Method":
59
+ return this.visitMethod(node);
60
+ case "Body":
61
+ return this.visitBody(node);
62
+ case "Send":
63
+ return this.visitSend(node);
64
+ case "Literal":
65
+ return this.visitLiteral(node);
66
+ case "Reference":
67
+ return this.visitReference(node);
68
+ case "Parameter":
69
+ return this.visitParameter(node);
70
+ case "Return":
71
+ return this.visitReturn(node);
72
+ case "Variable":
73
+ return this.visitVariable(node);
74
+ case "New":
75
+ return this.visitNew(node);
76
+ case "If":
77
+ return this.visitIf(node);
78
+ case "Field":
79
+ return this.visitField(node);
80
+ case "Assignment":
81
+ return this.visitAssignment(node);
82
+ case "Throw":
83
+ return this.visitThrow(node);
84
+ case "Try":
85
+ return this.visitTry(node);
86
+ case "Catch":
87
+ return this.visitCatch(node);
88
+ case "Super":
89
+ return this.visitSuper(node);
90
+ default:
91
+ throw new Error(`Nodo Wollok desconocido o no soportado: ${nodeType}`);
92
+ }
93
+ }
94
+ visitPackage(node) {
95
+ return [
96
+ ...node.imports.map((imp) => this.visitImport(imp)),
97
+ ...node.members.map((member) => this.visit(member)),
98
+ ];
99
+ }
100
+ visitImport(node) {
101
+ const identifier = new Yu.SymbolPrimitive(node.entity.name, mapLocation(node));
102
+ return new Yu.Include(identifier, mapLocation(node));
103
+ }
104
+ visitField(node) {
105
+ const identifier = new Yu.SymbolPrimitive(node.name, mapLocation(node));
106
+ let value;
107
+ if (node.value) {
108
+ value = this.visit(node.value);
109
+ }
110
+ else {
111
+ // default to Nil if no initial value provided
112
+ value = new Yu.NilPrimitive(null, mapLocation(node));
113
+ }
114
+ return new Yu.Attribute(identifier, value, mapLocation(node));
115
+ }
116
+ visitVariable(node) {
117
+ const identifier = new Yu.SymbolPrimitive(node.name, mapLocation(node));
118
+ let expression;
119
+ if (node.value) {
120
+ expression = this.visit(node.value);
121
+ }
122
+ else {
123
+ expression = new Yu.NilPrimitive(null, mapLocation(node));
124
+ }
125
+ return new Yu.Variable(identifier, expression, undefined, mapLocation(node));
126
+ }
127
+ visitAssignment(node) {
128
+ const refName = node.variable.name || node.variable;
129
+ const identifier = new Yu.SymbolPrimitive(refName.toString(), mapLocation(node));
130
+ const expression = this.visit(node.value);
131
+ return new Yu.Assignment(identifier, expression, mapLocation(node));
132
+ }
133
+ visitNew(node) {
134
+ const className = new Yu.SymbolPrimitive(node.instantiated.name, mapLocation(node));
135
+ const args = (node.args || []).map((arg) => this.visit(arg));
136
+ return new Yu.New(className, args, mapLocation(node));
137
+ }
138
+ visitIf(node) {
139
+ const condition = this.visit(node.condition);
140
+ const thenExpr = this.visit(node.thenBody);
141
+ let elseExpr;
142
+ if (node.elseBody) {
143
+ elseExpr = this.visit(node.elseBody);
144
+ }
145
+ else {
146
+ elseExpr = new Yu.Sequence([], mapLocation(node));
147
+ }
148
+ return new Yu.If(condition, thenExpr, elseExpr, mapLocation(node));
149
+ }
150
+ visitThrow(node) {
151
+ const exception = this.visit(node.exception);
152
+ return new Yu.Raise(exception, mapLocation(node));
153
+ }
154
+ visitTry(node) {
155
+ const body = this.visit(node.body);
156
+ const catchExprs = (node.catches || []).map((c) => this.visitCatch(c));
157
+ let finallyExpr;
158
+ if (node.always) {
159
+ finallyExpr = this.visit(node.always);
160
+ }
161
+ else {
162
+ finallyExpr = new Yu.Sequence([], mapLocation(node));
163
+ }
164
+ return new Yu.Try(body, catchExprs, finallyExpr, mapLocation(node));
165
+ }
166
+ visitCatch(node) {
167
+ const paramName = node.parameter.name;
168
+ const pattern = new Yu.VariablePattern(new Yu.SymbolPrimitive(paramName, mapLocation(node.parameter)), mapLocation(node.parameter));
169
+ const body = this.visit(node.body);
170
+ return new Yu.Catch([pattern], body, mapLocation(node));
171
+ }
172
+ visitSuper(node) {
173
+ return new Yu.Super(mapLocation(node));
174
+ }
175
+ visitSingleton(node) {
176
+ const identifier = new Yu.SymbolPrimitive(node.name, mapLocation(node));
177
+ const members = node.members.map((m) => this.visit(m));
178
+ const bodyExpression = new Yu.Sequence(members, mapLocation(node));
179
+ return new Yu.Object(identifier, bodyExpression, mapLocation(node));
180
+ }
181
+ visitClass(node) {
182
+ const identifier = new Yu.SymbolPrimitive(node.name, mapLocation(node));
183
+ const members = node.members.map((m) => this.visit(m));
184
+ const bodyExpression = new Yu.Sequence(members, mapLocation(node));
185
+ const classInstance = new Yu.Class(identifier, undefined, undefined, bodyExpression, mapLocation(node));
186
+ return classInstance;
187
+ }
188
+ visitMethod(node) {
189
+ const identifier = new Yu.SymbolPrimitive(node.name, mapLocation(node));
190
+ const patterns = (node.parameters || []).map((param) => this.visit(param));
191
+ if (node.body === "native")
192
+ throw Error("Native methods not supported yet.");
193
+ const bodySequence = this.visit(node.body);
194
+ const unguardedBody = new Yu.UnguardedBody(bodySequence, mapLocation(node.body));
195
+ const equation = new Yu.Equation(patterns, unguardedBody, undefined, mapLocation(node));
196
+ return new Yu.Method(identifier, [equation], mapLocation(node));
197
+ }
198
+ visitParameter(node) {
199
+ const nameSymbol = new Yu.SymbolPrimitive(node.name, mapLocation(node));
200
+ return new Yu.VariablePattern(nameSymbol, mapLocation(node));
201
+ }
202
+ visitReturn(node) {
203
+ const expression = this.visit(node.value);
204
+ return new Yu.Return(expression, mapLocation(node));
205
+ }
206
+ visitBody(node) {
207
+ const statements = node.sentences.map((s) => this.visit(s));
208
+ return new Yu.Sequence(statements, mapLocation(node));
209
+ }
210
+ visitSend(node) {
211
+ const receiver = this.visit(node.receiver);
212
+ const args = (node.args || []).map((arg) => this.visit(arg));
213
+ const op = node.message;
214
+ const loc = mapLocation(node);
215
+ if (args.length === 1) {
216
+ const binaryExpr = transformBinary(op, receiver, args[0], loc);
217
+ if (binaryExpr)
218
+ return binaryExpr;
219
+ }
220
+ if (args.length === 0) {
221
+ const unaryExpr = transformUnary(op, receiver, loc);
222
+ // note that binaryExpr and unaryExpr can be null if it transform functions cant match any operation to the selector
223
+ if (unaryExpr)
224
+ return unaryExpr;
225
+ }
226
+ const selector = new Yu.SymbolPrimitive(op, loc);
227
+ return new Yu.Send(receiver, selector, args, loc);
228
+ }
229
+ visitReference(node) {
230
+ if (node.name === "self")
231
+ return new Yu.Self(mapLocation(node));
232
+ return new Yu.SymbolPrimitive(node.name, mapLocation(node));
233
+ }
234
+ visitLiteral(node) {
235
+ const val = node.value;
236
+ const loc = mapLocation(node);
237
+ const isCollection = Array.isArray(val) &&
238
+ "name" in val[0] &&
239
+ WollokListTypes.includes(val[0].name);
240
+ if (isCollection)
241
+ return new Yu.ListPrimitive(val[1].map((element) => this.visit(element)), loc);
242
+ if (typeof val === "number")
243
+ return new Yu.NumberPrimitive(val, loc);
244
+ if (typeof val === "boolean")
245
+ return new Yu.BooleanPrimitive(val, loc);
246
+ if (val === null)
247
+ return new Yu.NilPrimitive(null, loc);
248
+ return new Yu.StringPrimitive(String(val), loc);
249
+ }
250
+ }
251
+ const WollokListTypes = ["wollok.lang.List", "wollok.lang.Set"];
252
+ function transformBinary(op, left, right, loc) {
253
+ // RangeExpression
254
+ if (op === "..")
255
+ return new Yu.RangeExpression(left, right, undefined, loc);
256
+ // Arithmetic
257
+ if (op in ARITHMETIC_BINARY_OPS)
258
+ return new Yu.ArithmeticBinaryOperation(ARITHMETIC_BINARY_OPS[op], left, right, loc);
259
+ // Comparison
260
+ if (op in COMPARISON_OPS)
261
+ return new Yu.ComparisonOperation(COMPARISON_OPS[op], left, right, loc);
262
+ // Logical
263
+ if (op in LOGICAL_BINARY_OPS)
264
+ return new Yu.LogicalBinaryOperation(LOGICAL_BINARY_OPS[op], left, right, loc);
265
+ // Bitwise
266
+ if (op in BITWISE_BINARY_OPS)
267
+ return new Yu.BitwiseBinaryOperation(BITWISE_BINARY_OPS[op], left, right, loc);
268
+ // String Concatenation
269
+ if (op === "++" || op === "concat")
270
+ return new Yu.StringOperation("Concat", left, right, loc);
271
+ return null;
272
+ }
273
+ function transformUnary(op, receiver, loc) {
274
+ // Logical Negation
275
+ if (["!", "negate"].includes(op))
276
+ return new Yu.LogicalUnaryOperation("Negation", receiver, loc);
277
+ // Arithmetic Negation
278
+ if (["invert", "-"].includes(op))
279
+ return new Yu.ArithmeticUnaryOperation("Negation", receiver, loc);
280
+ // Bitwise Negation
281
+ if (["~", "bitwiseNot"].includes(op))
282
+ return new Yu.BitwiseUnaryOperation("BitwiseNot", receiver, loc);
283
+ return null;
284
+ }
285
+ //# sourceMappingURL=transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "yukigo-wollok-parser",
3
+ "version": "0.1.0",
4
+ "description": "",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": "./dist/index.js",
10
+ "./package.json": "./package.json"
11
+ },
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "test": "mocha --import=tsx"
15
+ },
16
+ "keywords": [],
17
+ "author": "",
18
+ "license": "ISC",
19
+ "devDependencies": {
20
+ "@types/chai": "^5.2.2",
21
+ "@types/mocha": "^10.0.10",
22
+ "@types/moo": "^0.5.10",
23
+ "@types/node": "^24.2.0",
24
+ "chai": "^5.2.1",
25
+ "mocha": "^11.7.1",
26
+ "tsx": "^4.20.6",
27
+ "typescript": "^5.9.2"
28
+ },
29
+ "dependencies": {
30
+ "moo": "^0.5.2",
31
+ "nearley": "^2.20.1",
32
+ "wollok-ts": "^4.2.3",
33
+ "yukigo-ast": "0.1.0"
34
+ }
35
+ }
package/src/index.ts ADDED
@@ -0,0 +1,26 @@
1
+ import { AST, YukigoParser } from "yukigo-ast;
2
+ import { parse } from "wollok-ts";
3
+ import { WollokToYukigoTransformer } from "./transformer.js";
4
+
5
+ export class YukigoWollokParser implements YukigoParser {
6
+ public errors: string[] = [];
7
+ constructor() {
8
+ this.errors = [];
9
+ }
10
+
11
+ public parse(code: string): AST {
12
+ const parserResult = parse.File("example").parse(code);
13
+ if (parserResult.status === false) {
14
+ const { index, expected } = parserResult;
15
+ const expectation = expected.join(" or ");
16
+ const message = `Parse error at line ${index.line} column ${index.column}: expected ${expectation}.`;
17
+ throw new Error(message);
18
+ }
19
+ const resultAST = parserResult.value;
20
+
21
+ const transformer = new WollokToYukigoTransformer();
22
+ const yukigoAst = transformer.transform(resultAST);
23
+
24
+ return yukigoAst;
25
+ }
26
+ }