yukigo-haskell-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 +4 -0
- package/CHANGELOG.md +19 -0
- package/README.md +10 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/grammar.d.ts +28 -0
- package/dist/parser/grammar.js +404 -0
- package/dist/parser/grammar.js.map +1 -0
- package/dist/parser/layoutPreprocessor.d.ts +1 -0
- package/dist/parser/layoutPreprocessor.js +22 -0
- package/dist/parser/layoutPreprocessor.js.map +1 -0
- package/dist/parser/lexer.d.ts +42 -0
- package/dist/parser/lexer.js +75 -0
- package/dist/parser/lexer.js.map +1 -0
- package/dist/parser/preprocessor.d.ts +28 -0
- package/dist/parser/preprocessor.js +453 -0
- package/dist/parser/preprocessor.js.map +1 -0
- package/dist/prelude.d.ts +1 -0
- package/dist/prelude.js +205 -0
- package/dist/prelude.js.map +1 -0
- package/dist/typechecker/DeclarationCollector.d.ts +15 -0
- package/dist/typechecker/DeclarationCollector.js +80 -0
- package/dist/typechecker/DeclarationCollector.js.map +1 -0
- package/dist/typechecker/TypeBuilder.d.ts +12 -0
- package/dist/typechecker/TypeBuilder.js +113 -0
- package/dist/typechecker/TypeBuilder.js.map +1 -0
- package/dist/typechecker/checker.d.ts +80 -0
- package/dist/typechecker/checker.js +269 -0
- package/dist/typechecker/checker.js.map +1 -0
- package/dist/typechecker/core.d.ts +14 -0
- package/dist/typechecker/core.js +142 -0
- package/dist/typechecker/core.js.map +1 -0
- package/dist/typechecker/inference.d.ts +69 -0
- package/dist/typechecker/inference.js +984 -0
- package/dist/typechecker/inference.js.map +1 -0
- package/dist/utils/helpers.d.ts +2 -0
- package/dist/utils/helpers.js +25 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/types.d.ts +6 -0
- package/dist/utils/types.js +53 -0
- package/dist/utils/types.js.map +1 -0
- package/package.json +36 -0
- package/src/index.ts +55 -0
- package/src/parser/grammar.ne +463 -0
- package/src/parser/grammar.ts +512 -0
- package/src/parser/layoutPreprocessor.ts +21 -0
- package/src/parser/lexer.ts +77 -0
- package/src/parser/preprocessor.ne +375 -0
- package/src/parser/preprocessor.ts +502 -0
- package/src/prelude.ts +206 -0
- package/src/typechecker/DeclarationCollector.ts +104 -0
- package/src/typechecker/TypeBuilder.ts +148 -0
- package/src/typechecker/checker.ts +395 -0
- package/src/typechecker/core.ts +162 -0
- package/src/typechecker/inference.ts +1327 -0
- package/src/utils/helpers.ts +29 -0
- package/src/utils/types.ts +56 -0
- package/tests/parser.spec.ts +823 -0
- package/tests/prelude.spec.ts +22 -0
- package/tests/preprocessor.spec.ts +69 -0
- package/tests/typechecker.spec.ts +310 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/typechecker/inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Function } from "@yukigo/ast";
|
|
2
|
+
export function groupFunctionDeclarations(ast) {
|
|
3
|
+
const groups = {};
|
|
4
|
+
const others = [];
|
|
5
|
+
for (const node of ast) {
|
|
6
|
+
if (node instanceof Function) {
|
|
7
|
+
const name = node.identifier.value;
|
|
8
|
+
if (!groups[name]) {
|
|
9
|
+
groups[name] = [];
|
|
10
|
+
}
|
|
11
|
+
groups[name].push(node);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
others.push(node);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// Merge equations for each function name
|
|
18
|
+
const functionGroups = Object.values(groups).map((functions) => {
|
|
19
|
+
const identifier = functions[0].identifier;
|
|
20
|
+
const allEquations = functions.flatMap((f) => f.equations);
|
|
21
|
+
return new Function(identifier, allEquations, identifier.loc);
|
|
22
|
+
});
|
|
23
|
+
return [...others, ...functionGroups];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,yBAAyB,CAAC,GAAQ;IAChD,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,YAAY,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,cAAc,GAAe,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACzE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3D,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const keywords = [
|
|
2
|
+
"type",
|
|
3
|
+
"where",
|
|
4
|
+
"in",
|
|
5
|
+
"if",
|
|
6
|
+
"else",
|
|
7
|
+
"then",
|
|
8
|
+
"data",
|
|
9
|
+
"case",
|
|
10
|
+
"class",
|
|
11
|
+
"do",
|
|
12
|
+
"default",
|
|
13
|
+
"deriving",
|
|
14
|
+
"import",
|
|
15
|
+
"infix",
|
|
16
|
+
"infixl",
|
|
17
|
+
"infixr",
|
|
18
|
+
"instance",
|
|
19
|
+
"let",
|
|
20
|
+
"module",
|
|
21
|
+
"newtype",
|
|
22
|
+
"of",
|
|
23
|
+
"qualified",
|
|
24
|
+
"hiding",
|
|
25
|
+
"foreign",
|
|
26
|
+
];
|
|
27
|
+
export const typeMappings = {
|
|
28
|
+
Float: "YuNumber",
|
|
29
|
+
Double: "YuNumber",
|
|
30
|
+
Int: "YuNumber",
|
|
31
|
+
Integer: "YuNumber",
|
|
32
|
+
String: "YuString",
|
|
33
|
+
Char: "YuChar",
|
|
34
|
+
Boolean: "YuBoolean",
|
|
35
|
+
Bool: "YuBoolean",
|
|
36
|
+
};
|
|
37
|
+
export const typeClasses = new Map([
|
|
38
|
+
["Bounded", ["YuChar", "YuNumber"]],
|
|
39
|
+
["Enum", ["YuChar", "YuNumber"]],
|
|
40
|
+
["Ord", ["YuNumber", "YuString", "YuChar"]],
|
|
41
|
+
["Eq", ["YuNumber", "YuString", "YuChar", "YuBoolean"]],
|
|
42
|
+
["Floating", ["YuNumber"]],
|
|
43
|
+
["Fractional", ["YuNumber"]],
|
|
44
|
+
["Integral", ["YuNumber"]],
|
|
45
|
+
["Num", ["YuNumber"]],
|
|
46
|
+
["Random", ["YuBoolean", "YuChar", "YuNumber"]],
|
|
47
|
+
["Read", ["YuList", "YuChar", "YuNumber"]],
|
|
48
|
+
["Real", ["YuNumber"]],
|
|
49
|
+
["RealFloat", ["YuNumber"]],
|
|
50
|
+
["RealFrac", ["YuNumber"]],
|
|
51
|
+
["Show", ["YuNumber", "YuString", "YuChar", "YuList"]],
|
|
52
|
+
]);
|
|
53
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM;IACN,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,IAAI;IACJ,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,KAAK;IACL,QAAQ;IACR,SAAS;IACT,IAAI;IACJ,WAAW;IACX,QAAQ;IACR,SAAS;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAuC;IAC9D,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,WAAW;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA0B,IAAI,GAAG,CAAC;IACxD,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACvD,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "yukigo-haskell-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": "nearleyc ./src/parser/grammar.ne -o ./src/parser/grammar.ts && nearleyc ./src/parser/preprocessor.ne -o ./src/parser/preprocessor.ts && 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": "^6.2.0",
|
|
25
|
+
"mocha": "^11.7.1",
|
|
26
|
+
"tsx": "^4.20.6",
|
|
27
|
+
"typescript": "^5.9.2"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"moo": "^0.5.2",
|
|
31
|
+
"moo-ignore": "^2.5.3",
|
|
32
|
+
"moo-indentation-lexer": "^6.0.0",
|
|
33
|
+
"nearley": "^2.20.1",
|
|
34
|
+
"yukigo-ast": "0.1.0"
|
|
35
|
+
}
|
|
36
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import grammar from "./parser/grammar.js";
|
|
2
|
+
import nearley from "nearley";
|
|
3
|
+
import { groupFunctionDeclarations } from "./utils/helpers.js";
|
|
4
|
+
import { TypeChecker } from "./typechecker/checker.js";
|
|
5
|
+
import { AST, YukigoParser } from "yukigo-ast";
|
|
6
|
+
import { inspect } from "util";
|
|
7
|
+
import { preprocessor } from "./parser/layoutPreprocessor.js";
|
|
8
|
+
import { preludeCode } from "./prelude.js";
|
|
9
|
+
|
|
10
|
+
export class YukigoHaskellParser implements YukigoParser {
|
|
11
|
+
public errors: string[] = [];
|
|
12
|
+
private prelude: string;
|
|
13
|
+
constructor(prelude?: string) {
|
|
14
|
+
this.errors = [];
|
|
15
|
+
this.prelude = prelude ?? preludeCode;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
public parse(code: string): AST {
|
|
19
|
+
const processedCode = preprocessor(code);
|
|
20
|
+
const parser = new nearley.Parser(nearley.Grammar.fromCompiled(grammar));
|
|
21
|
+
try {
|
|
22
|
+
parser.feed(this.prelude + "\n\n" + processedCode);
|
|
23
|
+
parser.finish();
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.log(error)
|
|
26
|
+
if ("token" in error) {
|
|
27
|
+
const token = error.token;
|
|
28
|
+
const message = `Parser: Unexpected '${token.type}' token '${token.value}' at line ${token.line} col ${token.col}.`;
|
|
29
|
+
this.errors.push(message);
|
|
30
|
+
throw Error(message);
|
|
31
|
+
}
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
if (parser.results.length > 1) {
|
|
35
|
+
const msg = `Parser: Too much ambiguity. ${parser.results.length} ASTs parsed. Output not generated.`;
|
|
36
|
+
this.errors.push(msg);
|
|
37
|
+
throw Error(msg);
|
|
38
|
+
}
|
|
39
|
+
if (parser.results.length == 0) {
|
|
40
|
+
this.errors.push("Parser did not generate an AST.");
|
|
41
|
+
throw Error("Parser did not generate an AST.");
|
|
42
|
+
}
|
|
43
|
+
const ast = groupFunctionDeclarations(parser.results[0]);
|
|
44
|
+
try {
|
|
45
|
+
const typeChecker = new TypeChecker();
|
|
46
|
+
const errors = typeChecker.check(ast);
|
|
47
|
+
if (errors.length > 0) {
|
|
48
|
+
this.errors.push(...errors);
|
|
49
|
+
}
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.log(error);
|
|
52
|
+
}
|
|
53
|
+
return ast;
|
|
54
|
+
}
|
|
55
|
+
}
|