yukigo-haskell-parser 0.1.3 → 0.2.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.
- package/.mocharc.json +3 -3
- package/CHANGELOG.md +51 -9
- package/README.md +5 -5
- package/dist/index.js +21 -13
- package/dist/index.js.map +1 -1
- package/dist/parser/grammar.cjs +397 -0
- package/dist/parser/grammar.cjs.map +1 -0
- package/dist/parser/grammar.d.cts +38 -0
- package/dist/parser/lexer.d.ts +2 -1
- package/dist/parser/lexer.js +6 -1
- package/dist/parser/lexer.js.map +1 -1
- package/dist/prelude.js +279 -279
- package/dist/typechecker/DeclarationCollector.d.ts +2 -0
- package/dist/typechecker/DeclarationCollector.js +6 -5
- package/dist/typechecker/DeclarationCollector.js.map +1 -1
- package/dist/typechecker/TypeBuilder.js +9 -7
- package/dist/typechecker/TypeBuilder.js.map +1 -1
- package/dist/typechecker/checker.d.ts +9 -4
- package/dist/typechecker/checker.js +66 -94
- package/dist/typechecker/checker.js.map +1 -1
- package/dist/typechecker/core.js +8 -7
- package/dist/typechecker/core.js.map +1 -1
- package/dist/typechecker/inference.d.ts +4 -1
- package/dist/typechecker/inference.js +39 -19
- package/dist/typechecker/inference.js.map +1 -1
- package/dist/utils/helpers.d.ts +3 -0
- package/dist/utils/helpers.js +5 -0
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/types.d.ts +12 -3
- package/dist/utils/types.js +34 -22
- package/dist/utils/types.js.map +1 -1
- package/package.json +6 -9
- package/src/index.ts +223 -192
- package/src/parser/{grammar.ts → grammar.cjs} +191 -223
- package/src/parser/grammar.d.ts +3 -0
- package/src/parser/grammar.ne +521 -518
- package/src/parser/lexer.ts +357 -353
- package/src/prelude.ts +281 -281
- package/src/typechecker/DeclarationCollector.ts +160 -157
- package/src/typechecker/TypeBuilder.ts +153 -150
- package/src/typechecker/checker.ts +487 -501
- package/src/typechecker/core.ts +195 -192
- package/src/typechecker/inference.ts +1442 -1421
- package/src/utils/helpers.ts +34 -29
- package/src/utils/types.ts +75 -63
- package/tests/hspec.spec.ts +95 -92
- package/tests/lexer.spec.ts +175 -175
- package/tests/parser.spec.ts +838 -829
- package/tests/prelude.spec.ts +17 -17
- package/tests/typechecker.spec.ts +326 -327
- package/tsconfig.build.json +16 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +29 -26
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/parser/grammar.d.ts +0 -28
- package/dist/parser/grammar.js +0 -393
- package/dist/parser/grammar.js.map +0 -1
package/.mocharc.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extension": ["ts"],
|
|
3
|
-
"spec": "tests/**/*.spec.ts"
|
|
1
|
+
{
|
|
2
|
+
"extension": ["ts"],
|
|
3
|
+
"spec": "tests/**/*.spec.ts"
|
|
4
4
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,31 +1,73 @@
|
|
|
1
|
-
## 0.
|
|
1
|
+
## 0.2.2 (2026-08-04)
|
|
2
|
+
|
|
3
|
+
### 🩹 Fixes
|
|
4
|
+
|
|
5
|
+
- **yukigo:** fix v0 Mulang Inspections translation ([2995ccc](https://github.com/miyukiproject/yukigo/commit/2995ccc))
|
|
2
6
|
|
|
3
7
|
### 🧱 Updated Dependencies
|
|
4
8
|
|
|
5
|
-
- Updated yukigo-ast to 0.2
|
|
9
|
+
- Updated yukigo-ast to 0.3.2
|
|
10
|
+
|
|
11
|
+
### ❤️ Thank You
|
|
12
|
+
|
|
13
|
+
- noiseArch
|
|
6
14
|
|
|
7
|
-
## 0.1
|
|
15
|
+
## 0.2.1 (2026-08-01)
|
|
8
16
|
|
|
9
17
|
### 🧱 Updated Dependencies
|
|
10
18
|
|
|
11
|
-
- Updated yukigo-ast to 0.
|
|
19
|
+
- Updated yukigo-ast to 0.3.1
|
|
12
20
|
|
|
13
|
-
## 0.
|
|
21
|
+
## 0.2.0 (2026-08-01)
|
|
14
22
|
|
|
15
23
|
### 🚀 Features
|
|
16
24
|
|
|
17
|
-
- **yukigo:**
|
|
18
|
-
- **LogicEngine:** Added LogicEngine with unification algorithm ([57b48a0](https://github.com/miyukiproject/yukigo/commit/57b48a0))
|
|
25
|
+
- **yukigo-e2e:** Initial commit of Yukigo E2E package ([d4de9ea](https://github.com/miyukiproject/yukigo/commit/d4de9ea))
|
|
19
26
|
|
|
20
27
|
### 🩹 Fixes
|
|
21
28
|
|
|
22
|
-
- **
|
|
29
|
+
- **yukigo:** fix mapped runtime typenames ([7589d2f](https://github.com/miyukiproject/yukigo/commit/7589d2f))
|
|
30
|
+
- **yukigo-haskell-parser:** fix failing tests from haskell parser ([9e67474](https://github.com/miyukiproject/yukigo/commit/9e67474))
|
|
31
|
+
- **yukigo-haskell-parser:** grammar missidentified let declaration breaking with semicolon from lexer ([879ad1b](https://github.com/miyukiproject/yukigo/commit/879ad1b))
|
|
32
|
+
- fix parsers grammar compilation to export to .cjs ([ef59727](https://github.com/miyukiproject/yukigo/commit/ef59727))
|
|
33
|
+
- **haskell-parser:** fix bad fallback in DeclarationCollector ([a537aa1](https://github.com/miyukiproject/yukigo/commit/a537aa1))
|
|
23
34
|
|
|
24
35
|
### 🧱 Updated Dependencies
|
|
25
36
|
|
|
26
|
-
- Updated
|
|
37
|
+
- Updated yukigo-ast to 0.3.0
|
|
27
38
|
|
|
28
39
|
### ❤️ Thank You
|
|
29
40
|
|
|
30
41
|
- noiseArch
|
|
42
|
+
|
|
43
|
+
## 0.1.3 (2026-05-01)
|
|
44
|
+
|
|
45
|
+
### 🧱 Updated Dependencies
|
|
46
|
+
|
|
47
|
+
- Updated yukigo-ast to 0.2.1
|
|
48
|
+
|
|
49
|
+
## 0.1.2 (2026-04-11)
|
|
50
|
+
|
|
51
|
+
### 🧱 Updated Dependencies
|
|
52
|
+
|
|
53
|
+
- Updated yukigo-ast to 0.2.0
|
|
54
|
+
|
|
55
|
+
## 0.1.0 (2025-12-09)
|
|
56
|
+
|
|
57
|
+
### 🚀 Features
|
|
58
|
+
|
|
59
|
+
- **yukigo:** Nx Release added ([0bee88f](https://github.com/miyukiproject/yukigo/commit/0bee88f))
|
|
60
|
+
- **LogicEngine:** Added LogicEngine with unification algorithm ([57b48a0](https://github.com/miyukiproject/yukigo/commit/57b48a0))
|
|
61
|
+
|
|
62
|
+
### 🩹 Fixes
|
|
63
|
+
|
|
64
|
+
- **general:** Remove build step from tests command ([9d6e02f](https://github.com/miyukiproject/yukigo/commit/9d6e02f))
|
|
65
|
+
|
|
66
|
+
### 🧱 Updated Dependencies
|
|
67
|
+
|
|
68
|
+
- Updated @yukigo/ast to 0.1.0
|
|
69
|
+
|
|
70
|
+
### ❤️ Thank You
|
|
71
|
+
|
|
72
|
+
- noiseArch
|
|
31
73
|
- Valtolina Matias
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# Yukigo Haskell Parser
|
|
2
|
-
|
|
3
|
-
Parser for a subset of Haskell written in Typescript using [nearley.js](https://nearley.js.org/) and [moo](https://github.com/no-context/moo).
|
|
4
|
-
|
|
5
|
-
Parses a valid [yukigo](https://github.com/miyukiproject/yukigo) AST.
|
|
1
|
+
# Yukigo Haskell Parser
|
|
2
|
+
|
|
3
|
+
Parser for a subset of Haskell written in Typescript using [nearley.js](https://nearley.js.org/) and [moo](https://github.com/no-context/moo).
|
|
4
|
+
|
|
5
|
+
Parses a valid [yukigo](https://github.com/miyukiproject/yukigo) AST.
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import grammar from "./parser/grammar.
|
|
1
|
+
import grammar from "./parser/grammar.cjs";
|
|
2
2
|
import nearley from "nearley";
|
|
3
3
|
import { groupFunctionDeclarations } from "./utils/helpers.js";
|
|
4
4
|
import { TypeChecker } from "./typechecker/checker.js";
|
|
@@ -41,33 +41,39 @@ export class YukigoHaskellParser {
|
|
|
41
41
|
const processedCode = this.preprocessor(code);
|
|
42
42
|
const result = this.feedParser(processedCode);
|
|
43
43
|
const fullAst = this.prelude.concat(result);
|
|
44
|
-
const makePrim = (name) =>
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const makePrim = (name) => {
|
|
45
|
+
const returnExpr = new Return(new ArithmeticUnaryOperation("ToString", new SymbolPrimitive("x")));
|
|
46
|
+
return new Function(new SymbolPrimitive(name), [
|
|
47
|
+
new Equation([new VariablePattern(new SymbolPrimitive("x"))], new UnguardedBody(new Sequence([returnExpr])), returnExpr),
|
|
48
|
+
]);
|
|
49
|
+
};
|
|
47
50
|
const prims = [
|
|
48
51
|
makePrim("primShow"),
|
|
49
52
|
makePrim("primShowChar"),
|
|
50
53
|
makePrim("primShowString"),
|
|
51
|
-
makePrim("primShowList")
|
|
54
|
+
makePrim("primShowList"),
|
|
52
55
|
];
|
|
53
56
|
const resolveYukigoType = (t) => {
|
|
54
57
|
if (t instanceof SimpleType) {
|
|
55
58
|
const mapped = typeMappings[t.value];
|
|
56
|
-
if (mapped)
|
|
57
|
-
|
|
59
|
+
if (mapped) {
|
|
60
|
+
const runtimeTypeName = mapped.replace(/^Yu/, "");
|
|
61
|
+
return new SimpleType(runtimeTypeName, t.constraints, t.loc);
|
|
62
|
+
}
|
|
58
63
|
return t;
|
|
59
64
|
}
|
|
60
65
|
if (t instanceof ListType)
|
|
61
66
|
return t;
|
|
62
67
|
return t;
|
|
63
68
|
};
|
|
69
|
+
const primShowStringReturnExpr = new Return(new StringOperation("Concat", new StringPrimitive('"'), new StringOperation("Concat", new SymbolPrimitive("s"), new StringPrimitive('"'))));
|
|
64
70
|
const primShowString = new Function(new SymbolPrimitive("primShowString"), [
|
|
65
|
-
new Equation([new VariablePattern(new SymbolPrimitive("s"))], new UnguardedBody(new Sequence([
|
|
66
|
-
new Return(new StringOperation("Concat", new StringPrimitive("\""), new StringOperation("Concat", new SymbolPrimitive("s"), new StringPrimitive("\""))))
|
|
67
|
-
])))
|
|
71
|
+
new Equation([new VariablePattern(new SymbolPrimitive("s"))], new UnguardedBody(new Sequence([primShowStringReturnExpr])), primShowStringReturnExpr),
|
|
68
72
|
]);
|
|
69
73
|
// Transform Instance nodes into Function nodes with TypePatterns
|
|
70
|
-
const transformedAst = this.config.includePrims
|
|
74
|
+
const transformedAst = this.config.includePrims
|
|
75
|
+
? [...prims, primShowString]
|
|
76
|
+
: [];
|
|
71
77
|
for (const node of fullAst) {
|
|
72
78
|
if (node instanceof Instance) {
|
|
73
79
|
const instanceNode = node;
|
|
@@ -107,9 +113,11 @@ export class YukigoHaskellParser {
|
|
|
107
113
|
parser.feed(code);
|
|
108
114
|
parser.finish();
|
|
109
115
|
}
|
|
110
|
-
catch (
|
|
111
|
-
|
|
116
|
+
catch (e) {
|
|
117
|
+
const error = e; // Assert the shape
|
|
118
|
+
if (error.token) {
|
|
112
119
|
throw new UnexpectedToken(error.token);
|
|
120
|
+
}
|
|
113
121
|
throw error;
|
|
114
122
|
}
|
|
115
123
|
const { results } = parser;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|