@scinorandex/sparse 0.1.1 → 0.1.3
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/.github/workflows/ci.yml +41 -0
- package/AGENTS.md +31 -11
- package/README.md +289 -29
- package/dist/cli.js +113 -24
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +3 -1
- package/dist/generator.js +29 -5
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +16 -4
- package/dist/index.js +34 -1
- package/dist/index.js.map +1 -1
- package/dist/meta/common.d.ts +17 -0
- package/dist/meta/common.js +66 -1
- package/dist/meta/common.js.map +1 -1
- package/dist/meta/selfhosted.d.ts +4 -5
- package/dist/meta/selfhosted.js +49 -36
- package/dist/meta/selfhosted.js.map +1 -1
- package/dist/parser.d.ts +55 -35
- package/dist/parser.js +141 -18
- package/dist/parser.js.map +1 -1
- package/dist/table/selfhosted.d.ts +10 -1
- package/dist/table/selfhosted.js +32 -12
- package/dist/table/selfhosted.js.map +1 -1
- package/dist/table/validate.d.ts +17 -0
- package/dist/table/validate.js +84 -0
- package/dist/table/validate.js.map +1 -0
- package/dist/utils/Stack.d.ts +4 -0
- package/dist/utils/Stack.js +16 -1
- package/dist/utils/Stack.js.map +1 -1
- package/dist/utils/errorWindowBuilder.js +11 -11
- package/dist/utils/errorWindowBuilder.js.map +1 -1
- package/dist/utils/loadFiles.d.ts +8 -0
- package/dist/utils/loadFiles.js +47 -0
- package/dist/utils/loadFiles.js.map +1 -0
- package/dist/utils/reducers.d.ts +9 -0
- package/dist/utils/reducers.js +56 -0
- package/dist/utils/reducers.js.map +1 -0
- package/example/LoLang/example.ts +16 -15
- package/example/kleene-test/example.ts +35 -17
- package/example/math/example.ts +12 -7
- package/example/selfhosted/example.ts +30 -24
- package/opencode.json +1 -1
- package/package.json +2 -2
- package/src/cli.ts +132 -23
- package/src/generator.ts +49 -8
- package/src/index.ts +55 -3
- package/src/meta/common.ts +116 -0
- package/src/meta/selfhosted.ts +42 -11
- package/src/parser.ts +243 -51
- package/src/table/selfhosted.ts +48 -12
- package/src/table/validate.ts +143 -0
- package/src/utils/Stack.ts +22 -2
- package/src/utils/errorWindowBuilder.ts +15 -13
- package/src/utils/loadFiles.ts +54 -0
- package/src/utils/reducers.ts +93 -0
- package/test/cli.test.ts +144 -0
- package/test/codegen.test.ts +75 -0
- package/test/grammar.test.ts +243 -0
- package/test/helpers.ts +59 -0
- package/test/lalr.test.ts +110 -0
- package/test/parser.test.ts +377 -0
- package/test/table.test.ts +144 -0
- package/tsconfig.json +1 -1
- package/example/LoLang/table2.txt +0 -497
- package/example/complicated/grammar.txt +0 -37
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Slex } from "@scinorandex/slex";
|
|
2
2
|
import { Result, Sparse } from "../index";
|
|
3
3
|
import { selfhosted } from "./states";
|
|
4
|
-
import { GrammarToken, GrammarTokenMetadata, GrammarTokenType, Production } from "./common";
|
|
4
|
+
import { GrammarToken, GrammarTokenMetadata, GrammarTokenType, Production, ValidateProductionsOptions } from "./common";
|
|
5
5
|
export declare const grammarLexerGenerator: Slex<GrammarTokenType, GrammarTokenMetadata>;
|
|
6
6
|
export declare abstract class BaseNode {
|
|
7
7
|
}
|
|
@@ -13,11 +13,10 @@ export declare class ListNode<T> extends BaseNode {
|
|
|
13
13
|
getItemsReversed(): T[];
|
|
14
14
|
}
|
|
15
15
|
export declare function getSelfHostedParserGenerator(e?: typeof selfhosted): Sparse<GrammarTokenType, GrammarTokenMetadata, BaseNode>;
|
|
16
|
-
export declare const tryBuildProductions: (lexer: LexerInterface | string) => Result<Production[]>;
|
|
17
|
-
interface LexerInterface {
|
|
16
|
+
export declare const tryBuildProductions: (lexer: LexerInterface | string, options?: ValidateProductionsOptions) => Result<Production[]>;
|
|
17
|
+
export interface LexerInterface {
|
|
18
18
|
peekNextToken(): GrammarToken;
|
|
19
19
|
getNextToken(): GrammarToken;
|
|
20
20
|
hasNextToken(): boolean;
|
|
21
21
|
}
|
|
22
|
-
export declare const buildProductions: (lexer: LexerInterface | string) => Production[];
|
|
23
|
-
export {};
|
|
22
|
+
export declare const buildProductions: (lexer: LexerInterface | string, options?: ValidateProductionsOptions) => Production[];
|
package/dist/meta/selfhosted.js
CHANGED
|
@@ -3,38 +3,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.buildProductions = exports.tryBuildProductions = exports.ListNode = exports.BaseNode = exports.grammarLexerGenerator = void 0;
|
|
4
4
|
exports.getSelfHostedParserGenerator = getSelfHostedParserGenerator;
|
|
5
5
|
const slex_1 = require("@scinorandex/slex");
|
|
6
|
+
const common_1 = require("../meta/common");
|
|
6
7
|
const index_1 = require("../index");
|
|
7
8
|
const states_1 = require("./states");
|
|
8
9
|
const parser_1 = require("../parser");
|
|
9
|
-
const
|
|
10
|
+
const common_2 = require("./common");
|
|
10
11
|
exports.grammarLexerGenerator = new slex_1.Slex({
|
|
11
|
-
EOF_TYPE:
|
|
12
|
+
EOF_TYPE: common_2.GrammarTokenType.EOF,
|
|
12
13
|
isHigherPrecedence: () => false,
|
|
13
|
-
ignoreTokens: [
|
|
14
|
+
ignoreTokens: [common_2.GrammarTokenType.SINGLE_LINE_COMMENT, common_2.GrammarTokenType.MULTI_LINE_COMMENT],
|
|
14
15
|
});
|
|
15
16
|
exports.grammarLexerGenerator.addRule("lowercase", "a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z");
|
|
16
17
|
exports.grammarLexerGenerator.addRule("uppercase", "A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z");
|
|
17
18
|
exports.grammarLexerGenerator.addRule("letter", "${lowercase} | ${uppercase}");
|
|
18
19
|
exports.grammarLexerGenerator.addRule("digit", "0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9");
|
|
19
20
|
exports.grammarLexerGenerator.addRule("alphanumeric", "${letter} | ${digit}");
|
|
20
|
-
exports.grammarLexerGenerator.addRule("identifier", "(${letter} | $_) (${letter} | ${digit} | $_)*",
|
|
21
|
-
exports.grammarLexerGenerator.addRule("colon", "$:",
|
|
22
|
-
exports.grammarLexerGenerator.addRule("semicolon", "$;",
|
|
23
|
-
exports.grammarLexerGenerator.addRule("langle", "$<",
|
|
24
|
-
exports.grammarLexerGenerator.addRule("rangle", "$>",
|
|
25
|
-
exports.grammarLexerGenerator.addRule("lbracket", "$[",
|
|
26
|
-
exports.grammarLexerGenerator.addRule("rbracket", "$]",
|
|
27
|
-
exports.grammarLexerGenerator.addRule("lparen", "$(",
|
|
28
|
-
exports.grammarLexerGenerator.addRule("rparen", "$)",
|
|
29
|
-
exports.grammarLexerGenerator.addRule("pipe", "$|",
|
|
30
|
-
exports.grammarLexerGenerator.addRule("equals", "$=",
|
|
31
|
-
exports.grammarLexerGenerator.addRule("comma", "$,",
|
|
32
|
-
exports.grammarLexerGenerator.addRule("question_mark", "$?",
|
|
33
|
-
exports.grammarLexerGenerator.addRule("star", "$*",
|
|
34
|
-
exports.grammarLexerGenerator.addRule("plus", "$+",
|
|
35
|
-
exports.grammarLexerGenerator.addRule("number", "(${digit})+",
|
|
36
|
-
exports.grammarLexerGenerator.addRule("single_line_comment", "$/$/(($\n)!)*",
|
|
37
|
-
exports.grammarLexerGenerator.addRule("multi_line_comment", "$/$*(($*)!|($*($/)!))*$*$/",
|
|
21
|
+
exports.grammarLexerGenerator.addRule("identifier", "(${letter} | $_) (${letter} | ${digit} | $_ | $-)*", common_2.GrammarTokenType.IDENTIFIER);
|
|
22
|
+
exports.grammarLexerGenerator.addRule("colon", "$:", common_2.GrammarTokenType.COLON);
|
|
23
|
+
exports.grammarLexerGenerator.addRule("semicolon", "$;", common_2.GrammarTokenType.SEMICOLON);
|
|
24
|
+
exports.grammarLexerGenerator.addRule("langle", "$<", common_2.GrammarTokenType.L_ANGLE);
|
|
25
|
+
exports.grammarLexerGenerator.addRule("rangle", "$>", common_2.GrammarTokenType.R_ANGLE);
|
|
26
|
+
exports.grammarLexerGenerator.addRule("lbracket", "$[", common_2.GrammarTokenType.L_BRACKET);
|
|
27
|
+
exports.grammarLexerGenerator.addRule("rbracket", "$]", common_2.GrammarTokenType.R_BRACKET);
|
|
28
|
+
exports.grammarLexerGenerator.addRule("lparen", "$(", common_2.GrammarTokenType.L_PAREN);
|
|
29
|
+
exports.grammarLexerGenerator.addRule("rparen", "$)", common_2.GrammarTokenType.R_PAREN);
|
|
30
|
+
exports.grammarLexerGenerator.addRule("pipe", "$|", common_2.GrammarTokenType.PIPE);
|
|
31
|
+
exports.grammarLexerGenerator.addRule("equals", "$=", common_2.GrammarTokenType.EQUALS);
|
|
32
|
+
exports.grammarLexerGenerator.addRule("comma", "$,", common_2.GrammarTokenType.COMMA);
|
|
33
|
+
exports.grammarLexerGenerator.addRule("question_mark", "$?", common_2.GrammarTokenType.QUESTION_MARK);
|
|
34
|
+
exports.grammarLexerGenerator.addRule("star", "$*", common_2.GrammarTokenType.STAR);
|
|
35
|
+
exports.grammarLexerGenerator.addRule("plus", "$+", common_2.GrammarTokenType.PLUS);
|
|
36
|
+
exports.grammarLexerGenerator.addRule("number", "(${digit})+", common_2.GrammarTokenType.NUMBER);
|
|
37
|
+
exports.grammarLexerGenerator.addRule("single_line_comment", "$/$/(($\n)!)*", common_2.GrammarTokenType.SINGLE_LINE_COMMENT);
|
|
38
|
+
exports.grammarLexerGenerator.addRule("multi_line_comment", "$/$*(($*)!|($*($/)!))*$*$/", common_2.GrammarTokenType.MULTI_LINE_COMMENT);
|
|
38
39
|
class BaseNode {
|
|
39
40
|
}
|
|
40
41
|
exports.BaseNode = BaseNode;
|
|
@@ -108,23 +109,23 @@ function expandProduction(production, ctx) {
|
|
|
108
109
|
const beforeItems = rhs.slice(0, i);
|
|
109
110
|
const afterItems = rhs.slice(i + 1);
|
|
110
111
|
if (item instanceof GroupedTokenNode) {
|
|
111
|
-
if (item.modifier ===
|
|
112
|
+
if (item.modifier === common_2.GrammarTokenType.QUESTION_MARK) {
|
|
112
113
|
const withoutCurrentItem = production.fork(new ListNode([...beforeItems, ...afterItems].toReversed()));
|
|
113
114
|
const withCurrentItem = production.fork(new ListNode([...beforeItems, ...item.inside.getItemsReversed(), ...afterItems].toReversed()));
|
|
114
115
|
const newProductions = [withoutCurrentItem, withCurrentItem];
|
|
115
116
|
return newProductions.flatMap((prod) => expandProduction(prod, ctx));
|
|
116
117
|
}
|
|
117
|
-
else if (item.modifier ===
|
|
118
|
+
else if (item.modifier === common_2.GrammarTokenType.STAR || item.modifier === common_2.GrammarTokenType.PLUS) {
|
|
118
119
|
const inside = item.inside.getItemsReversed();
|
|
119
120
|
const newProductionIdentifier = ctx.getAutogeneratedId();
|
|
120
121
|
const raw = new StubTokenNode("variable", new ListNode([production.lhs]), "rest", newProductionIdentifier);
|
|
121
|
-
const pump = new GroupedTokenNode(new ListNode([raw]),
|
|
122
|
+
const pump = new GroupedTokenNode(new ListNode([raw]), common_2.GrammarTokenType.QUESTION_MARK);
|
|
122
123
|
const stub = new ProductionNode(production.lhs, new ListNode([...inside, pump].toReversed()), ctx.getNextProductionIndex(), newProductionIdentifier, "autogenerated-kleene");
|
|
123
|
-
const currentReplacement = production.fork(new ListNode([...beforeItems, item.modifier ===
|
|
124
|
+
const currentReplacement = production.fork(new ListNode([...beforeItems, item.modifier === common_2.GrammarTokenType.STAR ? pump : raw, ...afterItems].toReversed()));
|
|
124
125
|
return [currentReplacement, stub].flatMap((prod) => expandProduction(prod, ctx));
|
|
125
126
|
}
|
|
126
127
|
else
|
|
127
|
-
throw new Error(`Unknown modifier ${
|
|
128
|
+
throw new Error(`Unknown modifier ${common_2.GrammarTokenType[item.modifier]}`);
|
|
128
129
|
}
|
|
129
130
|
else if (item instanceof TokenNode) {
|
|
130
131
|
if (item.variables.getItems().length > 1) {
|
|
@@ -206,9 +207,9 @@ class ProgramNode extends BaseNode {
|
|
|
206
207
|
}
|
|
207
208
|
function getSelfHostedParserGenerator(e = states_1.selfhosted) {
|
|
208
209
|
return new index_1.Sparse({
|
|
209
|
-
productions: e.productions.map((production) => (0,
|
|
210
|
+
productions: e.productions.map((production) => (0, common_2.hydrateProduction)(production)),
|
|
210
211
|
states: e.states.map((state) => parser_1.TableState.fromJSObject(state)),
|
|
211
|
-
toStringifiedTokenType: (type) =>
|
|
212
|
+
toStringifiedTokenType: (type) => common_2.GrammarTokenType[type],
|
|
212
213
|
});
|
|
213
214
|
}
|
|
214
215
|
const reducers = {
|
|
@@ -237,22 +238,34 @@ const reducers = {
|
|
|
237
238
|
return bag.rest.add(bag.identifier);
|
|
238
239
|
},
|
|
239
240
|
};
|
|
240
|
-
const tryBuildProductions = (lexer) => {
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
const tryBuildProductions = (lexer, options = {}) => {
|
|
242
|
+
try {
|
|
243
|
+
if (typeof lexer === "string")
|
|
244
|
+
lexer = exports.grammarLexerGenerator.generate(lexer, () => ({}));
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
return { success: false, reason: (0, common_1.describeThrowable)(err), token: (0, common_1.syntheticGrammarToken)() };
|
|
248
|
+
}
|
|
243
249
|
const parserGenerator = getSelfHostedParserGenerator();
|
|
244
250
|
const parser = parserGenerator.generate(lexer, {
|
|
245
251
|
reducer: ({ bag, name }) => {
|
|
246
252
|
return reducers[name !== null && name !== void 0 ? name : ""](bag);
|
|
247
253
|
},
|
|
248
254
|
});
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
255
|
+
let programNode;
|
|
256
|
+
try {
|
|
257
|
+
programNode = parser.parse().result;
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
if (err instanceof parser_1.LR1ParserGraveError && err.currentToken != null)
|
|
261
|
+
return { success: false, reason: err.reason, token: err.currentToken };
|
|
262
|
+
return { success: false, reason: (0, common_1.describeThrowable)(err), token: (0, common_1.syntheticGrammarToken)() };
|
|
263
|
+
}
|
|
264
|
+
return (0, common_2.validateProductions)(programNode.getProductions(), options);
|
|
252
265
|
};
|
|
253
266
|
exports.tryBuildProductions = tryBuildProductions;
|
|
254
|
-
const buildProductions = (lexer) => {
|
|
255
|
-
const result = (0, exports.tryBuildProductions)(lexer);
|
|
267
|
+
const buildProductions = (lexer, options = {}) => {
|
|
268
|
+
const result = (0, exports.tryBuildProductions)(lexer, options);
|
|
256
269
|
if (result.success === false)
|
|
257
270
|
throw new Error(`Encountered error "${result.reason}" while parsing grammar at ${result.token.line}:${result.token.column}`);
|
|
258
271
|
return result.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selfhosted.js","sourceRoot":"","sources":["../../src/meta/selfhosted.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selfhosted.js","sourceRoot":"","sources":["../../src/meta/selfhosted.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import { Slex, Token } from "@scinorandex/slex";
|
|
2
2
|
import { Stack } from "./utils/Stack";
|
|
3
3
|
import { Result } from "./utils/Result";
|
|
4
|
-
import { Production } from "./meta/common";
|
|
4
|
+
import { GrammarToken, Production, ProductionWarning } from "./meta/common";
|
|
5
5
|
export type TableAction = {
|
|
6
6
|
type: "shift" | "reduce" | "goto";
|
|
7
7
|
value: number;
|
|
8
8
|
};
|
|
9
9
|
export declare class TableState {
|
|
10
10
|
readonly actions: Map<string, TableAction>;
|
|
11
|
-
|
|
11
|
+
readonly rawActions: Map<string, string>;
|
|
12
|
+
constructor(actions?: Map<string, TableAction>, rawActions?: Map<string, string>);
|
|
12
13
|
getTerminalAction(terminal: string): TableAction | undefined;
|
|
13
14
|
getVariableAction(variable: string): TableAction | undefined;
|
|
15
|
+
getTerminalKeys(): string[];
|
|
16
|
+
getVariableKeys(): string[];
|
|
17
|
+
private getKeys;
|
|
14
18
|
toJSObject(): {
|
|
15
19
|
[k: string]: TableAction;
|
|
16
20
|
};
|
|
17
21
|
static fromJSObject(json: ReturnType<TableState["toJSObject"]>): TableState;
|
|
18
22
|
}
|
|
19
|
-
type ReducerType<TokenType, Metadata, Node> = (newInput: {
|
|
23
|
+
export type ReducerType<TokenType, Metadata, Node> = (newInput: {
|
|
20
24
|
bag: any;
|
|
21
25
|
name: string | null;
|
|
22
26
|
}, oldInput: {
|
|
@@ -30,27 +34,39 @@ export type LR1StackSymbol<TokenType, Metadata, Node> = {
|
|
|
30
34
|
type: "node";
|
|
31
35
|
node: Node;
|
|
32
36
|
};
|
|
37
|
+
export type SparseOptions<TokenType> = {
|
|
38
|
+
productions: Production[];
|
|
39
|
+
states: TableState[];
|
|
40
|
+
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
41
|
+
validate?: boolean;
|
|
42
|
+
source?: string;
|
|
43
|
+
};
|
|
44
|
+
export type FromProductionsOptions<TokenType> = {
|
|
45
|
+
productions: Production[];
|
|
46
|
+
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
47
|
+
mode?: "lr1" | "lalr1";
|
|
48
|
+
onWarning?: (warning: ProductionWarning) => void;
|
|
49
|
+
onProgress?: (statesGenerated: number) => void;
|
|
50
|
+
};
|
|
33
51
|
export declare class Sparse<TokenType, Metadata, Node> {
|
|
34
|
-
readonly options:
|
|
35
|
-
|
|
36
|
-
|
|
52
|
+
readonly options: SparseOptions<TokenType>;
|
|
53
|
+
constructor(options: SparseOptions<TokenType>);
|
|
54
|
+
static tryFromProductions<TokenType, Metadata, Node>(options: FromProductionsOptions<TokenType>): Result<Sparse<TokenType, Metadata, Node>>;
|
|
55
|
+
static fromProductions<TokenType, Metadata, Node>(options: FromProductionsOptions<TokenType>): Sparse<TokenType, Metadata, Node>;
|
|
56
|
+
static tryFromGrammarFile<TokenType, Metadata, Node>(options: {
|
|
57
|
+
grammarPath: string;
|
|
58
|
+
tablePath: string;
|
|
37
59
|
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
60
|
+
onWarning?: (warning: ProductionWarning) => void;
|
|
61
|
+
validate?: boolean;
|
|
62
|
+
}): Promise<Result<Sparse<TokenType, Metadata, Node>>>;
|
|
63
|
+
static fromGrammarFile<TokenType, Metadata, Node>(options: {
|
|
64
|
+
grammarPath: string;
|
|
65
|
+
tablePath: string;
|
|
42
66
|
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
47
|
-
mode?: "lr1" | "lalr1";
|
|
48
|
-
}): Result<Sparse<TokenType, Metadata, Node>>;
|
|
49
|
-
static fromProductions<TokenType, Metadata, Node>(options: {
|
|
50
|
-
productions: Production[];
|
|
51
|
-
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
52
|
-
mode?: "lr1" | "lalr1";
|
|
53
|
-
}): Sparse<TokenType, Metadata, Node>;
|
|
67
|
+
onWarning?: (warning: ProductionWarning) => void;
|
|
68
|
+
validate?: boolean;
|
|
69
|
+
}): Promise<Sparse<TokenType, Metadata, Node>>;
|
|
54
70
|
generate(lexer: ReturnType<Slex<TokenType, Metadata>["generate"]>, options: {
|
|
55
71
|
reducer: ReducerType<TokenType, Metadata, Node>;
|
|
56
72
|
recover?: ParserRecoveryFunction<TokenType, Metadata, Node>;
|
|
@@ -72,6 +88,10 @@ export type ParserRecoveryFunction<TokenType, Metadata, Node> = (options: {
|
|
|
72
88
|
success: true;
|
|
73
89
|
token?: Token<TokenType, Metadata>;
|
|
74
90
|
};
|
|
91
|
+
insertToken: (token: Token<TokenType, Metadata>) => {
|
|
92
|
+
success: false;
|
|
93
|
+
reason: string;
|
|
94
|
+
} | undefined;
|
|
75
95
|
states: TableState[];
|
|
76
96
|
}) => {
|
|
77
97
|
success: true;
|
|
@@ -88,28 +108,28 @@ export type ParserResult<TokenType, Metadata, Node> = {
|
|
|
88
108
|
result: Node | null;
|
|
89
109
|
errors: ParserError<TokenType, Metadata>[];
|
|
90
110
|
};
|
|
91
|
-
declare class LR1Parser<TokenType, Metadata, Node> {
|
|
92
|
-
readonly options:
|
|
93
|
-
productions: Production[];
|
|
94
|
-
states: TableState[];
|
|
95
|
-
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
96
|
-
};
|
|
111
|
+
export declare class LR1Parser<TokenType, Metadata, Node> {
|
|
112
|
+
readonly options: SparseOptions<TokenType>;
|
|
97
113
|
readonly reducer: ReducerType<TokenType, Metadata, Node>;
|
|
98
114
|
readonly recover: ParserRecoveryFunction<TokenType, Metadata, Node> | null;
|
|
99
115
|
readonly lexer: ReturnType<Slex<TokenType, Metadata>["generate"]>;
|
|
100
116
|
statesStack: Stack<number>;
|
|
101
117
|
symbolsStack: Stack<LR1StackSymbol<TokenType, Metadata, Node>>;
|
|
102
118
|
exceptions: ParserError<TokenType, Metadata>[];
|
|
103
|
-
constructor(options:
|
|
104
|
-
|
|
105
|
-
states: TableState[];
|
|
106
|
-
toStringifiedTokenType: (tokenType: TokenType) => string;
|
|
107
|
-
}, reducer: ReducerType<TokenType, Metadata, Node>, recover: ParserRecoveryFunction<TokenType, Metadata, Node> | null, lexer: ReturnType<Slex<TokenType, Metadata>["generate"]>);
|
|
119
|
+
constructor(options: SparseOptions<TokenType>, reducer: ReducerType<TokenType, Metadata, Node>, recover: ParserRecoveryFunction<TokenType, Metadata, Node> | null, lexer: ReturnType<Slex<TokenType, Metadata>["generate"]>);
|
|
120
|
+
reset(): void;
|
|
108
121
|
parse(): ParserResult<TokenType, Metadata, Node>;
|
|
122
|
+
private pushState;
|
|
123
|
+
private insertToken;
|
|
124
|
+
private syntaxErrorMessage;
|
|
109
125
|
}
|
|
110
126
|
export declare class LR1ParserGraveError<TokenType, Metadata> extends Error {
|
|
111
127
|
readonly reason: string;
|
|
112
|
-
readonly currentToken: Token<TokenType, Metadata
|
|
113
|
-
constructor(reason: string, currentToken: Token<TokenType, Metadata
|
|
128
|
+
readonly currentToken: Token<TokenType, Metadata> | null;
|
|
129
|
+
constructor(reason: string, currentToken: Token<TokenType, Metadata> | null, err?: Error);
|
|
130
|
+
}
|
|
131
|
+
export declare class SparseGrammarError extends Error {
|
|
132
|
+
readonly reason: string;
|
|
133
|
+
readonly token: GrammarToken;
|
|
134
|
+
constructor(reason: string, token: GrammarToken);
|
|
114
135
|
}
|
|
115
|
-
export {};
|
package/dist/parser.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LR1ParserGraveError = exports.Sparse = exports.TableState = void 0;
|
|
3
|
+
exports.SparseGrammarError = exports.LR1ParserGraveError = exports.LR1Parser = exports.Sparse = exports.TableState = void 0;
|
|
4
4
|
const generator_1 = require("./generator");
|
|
5
5
|
const Stack_1 = require("./utils/Stack");
|
|
6
|
+
const loadFiles_1 = require("./utils/loadFiles");
|
|
7
|
+
const validate_1 = require("./table/validate");
|
|
6
8
|
class TableState {
|
|
7
|
-
constructor(actions = new Map()) {
|
|
9
|
+
constructor(actions = new Map(), rawActions = new Map()) {
|
|
8
10
|
this.actions = actions;
|
|
11
|
+
this.rawActions = rawActions;
|
|
9
12
|
}
|
|
10
13
|
getTerminalAction(terminal) {
|
|
11
14
|
return this.actions.get(`[${terminal}]`);
|
|
@@ -13,20 +16,48 @@ class TableState {
|
|
|
13
16
|
getVariableAction(variable) {
|
|
14
17
|
return this.actions.get(variable);
|
|
15
18
|
}
|
|
19
|
+
getTerminalKeys() {
|
|
20
|
+
return this.getKeys("[", "]");
|
|
21
|
+
}
|
|
22
|
+
getVariableKeys() {
|
|
23
|
+
return this.getKeys("<", ">");
|
|
24
|
+
}
|
|
25
|
+
getKeys(prefix, suffix) {
|
|
26
|
+
const keys = [];
|
|
27
|
+
for (const key of this.actions.keys())
|
|
28
|
+
if (key.startsWith(prefix) && key.endsWith(suffix))
|
|
29
|
+
keys.push(key.substring(prefix.length, key.length - suffix.length));
|
|
30
|
+
return keys.sort();
|
|
31
|
+
}
|
|
16
32
|
toJSObject() {
|
|
17
33
|
return Object.fromEntries(this.actions);
|
|
18
34
|
}
|
|
19
35
|
static fromJSObject(json) {
|
|
20
|
-
|
|
36
|
+
const actions = new Map(Object.entries(json));
|
|
37
|
+
const rawActions = new Map([...actions].map(([key, action]) => [
|
|
38
|
+
key,
|
|
39
|
+
action.type === "goto" ? `${action.value}` : `${action.type === "shift" ? "s" : "r"}${action.value}`,
|
|
40
|
+
]));
|
|
41
|
+
return new TableState(actions, rawActions);
|
|
21
42
|
}
|
|
22
43
|
}
|
|
23
44
|
exports.TableState = TableState;
|
|
24
45
|
class Sparse {
|
|
25
46
|
constructor(options) {
|
|
26
47
|
this.options = options;
|
|
48
|
+
if (options.validate === true) {
|
|
49
|
+
const result = (0, validate_1.validateTable)(options.productions, options.states, { source: options.source });
|
|
50
|
+
if (result.success === false)
|
|
51
|
+
throw new Error(`The parsing table does not match the grammar: ${result.reason}`);
|
|
52
|
+
}
|
|
27
53
|
}
|
|
28
54
|
static tryFromProductions(options) {
|
|
29
|
-
const
|
|
55
|
+
const startedAt = Date.now();
|
|
56
|
+
const statesResult = (0, generator_1.generateStates)(options.productions, {
|
|
57
|
+
mode: options.mode,
|
|
58
|
+
onWarning: options.onWarning,
|
|
59
|
+
onProgress: options.onProgress,
|
|
60
|
+
});
|
|
30
61
|
if (statesResult.success === false)
|
|
31
62
|
return statesResult;
|
|
32
63
|
const states = statesResult.value;
|
|
@@ -40,7 +71,37 @@ class Sparse {
|
|
|
40
71
|
static fromProductions(options) {
|
|
41
72
|
const result = Sparse.tryFromProductions(options);
|
|
42
73
|
if (result.success === false)
|
|
43
|
-
throw new
|
|
74
|
+
throw new SparseGrammarError(result.reason, result.token);
|
|
75
|
+
return result.value;
|
|
76
|
+
}
|
|
77
|
+
static async tryFromGrammarFile(options) {
|
|
78
|
+
const productionsResult = await (0, loadFiles_1.loadGrammar)(options.grammarPath, { onWarning: options.onWarning });
|
|
79
|
+
if (productionsResult.success === false)
|
|
80
|
+
return productionsResult;
|
|
81
|
+
const statesResult = await (0, loadFiles_1.loadTable)(options.tablePath, { productions: productionsResult.value });
|
|
82
|
+
if (statesResult.success === false)
|
|
83
|
+
return statesResult;
|
|
84
|
+
if (options.validate !== false) {
|
|
85
|
+
const tableResult = (0, validate_1.validateTable)(productionsResult.value, statesResult.value, {
|
|
86
|
+
source: options.tablePath,
|
|
87
|
+
});
|
|
88
|
+
if (tableResult.success === false)
|
|
89
|
+
return tableResult;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
value: new Sparse({
|
|
94
|
+
productions: productionsResult.value,
|
|
95
|
+
states: statesResult.value,
|
|
96
|
+
toStringifiedTokenType: options.toStringifiedTokenType,
|
|
97
|
+
source: options.grammarPath,
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
static async fromGrammarFile(options) {
|
|
102
|
+
const result = await Sparse.tryFromGrammarFile(options);
|
|
103
|
+
if (result.success === false)
|
|
104
|
+
throw new SparseGrammarError(result.reason, result.token);
|
|
44
105
|
return result.value;
|
|
45
106
|
}
|
|
46
107
|
generate(lexer, options) {
|
|
@@ -59,16 +120,29 @@ class LR1Parser {
|
|
|
59
120
|
this.symbolsStack = new Stack_1.Stack();
|
|
60
121
|
this.exceptions = [];
|
|
61
122
|
}
|
|
123
|
+
reset() {
|
|
124
|
+
this.statesStack = new Stack_1.Stack([0]);
|
|
125
|
+
this.symbolsStack = new Stack_1.Stack();
|
|
126
|
+
this.exceptions = [];
|
|
127
|
+
}
|
|
62
128
|
parse() {
|
|
63
129
|
var _a;
|
|
64
130
|
const { productions, states, toStringifiedTokenType } = this.options;
|
|
131
|
+
if (states.length === 0)
|
|
132
|
+
throw new LR1ParserGraveError("The parsing table is empty, so no token can be parsed", null);
|
|
133
|
+
const currentStates = () => {
|
|
134
|
+
const state = states[this.statesStack.peek()];
|
|
135
|
+
if (state == null)
|
|
136
|
+
throw new LR1ParserGraveError(`The parsing table is out of sync with the grammar: state ${this.statesStack.peek()} does not exist (the table has ${states.length} states)`, null);
|
|
137
|
+
return state;
|
|
138
|
+
};
|
|
65
139
|
while (true) {
|
|
66
|
-
let currentState =
|
|
140
|
+
let currentState = currentStates();
|
|
67
141
|
let token = this.lexer.peekNextToken();
|
|
68
|
-
let action =
|
|
142
|
+
let action = currentState.getTerminalAction(toStringifiedTokenType(token.type));
|
|
69
143
|
if (action == null) {
|
|
70
144
|
if (this.recover === null)
|
|
71
|
-
throw new LR1ParserGraveError(
|
|
145
|
+
throw new LR1ParserGraveError(this.syntaxErrorMessage(currentState, token), token);
|
|
72
146
|
const recoveryResult = this.recover({
|
|
73
147
|
lexer: this.lexer,
|
|
74
148
|
states,
|
|
@@ -77,24 +151,29 @@ class LR1Parser {
|
|
|
77
151
|
addError: (reason) => this.exceptions.push({ message: reason, token: this.lexer.peekNextToken() }),
|
|
78
152
|
crash: (reason) => ({ success: false, reason }),
|
|
79
153
|
finish: (options) => ({ success: true, token: options === null || options === void 0 ? void 0 : options.newToken }),
|
|
80
|
-
|
|
154
|
+
insertToken: (newToken) => this.insertToken(newToken),
|
|
155
|
+
isSafe: () => currentStates().actions.has(`[${toStringifiedTokenType(this.lexer.peekNextToken().type)}]`),
|
|
81
156
|
});
|
|
82
157
|
if (recoveryResult.success === false)
|
|
83
158
|
throw new LR1ParserGraveError(recoveryResult.reason, token);
|
|
84
159
|
token = (_a = recoveryResult.token) !== null && _a !== void 0 ? _a : this.lexer.peekNextToken();
|
|
85
|
-
currentState =
|
|
86
|
-
action =
|
|
160
|
+
currentState = currentStates();
|
|
161
|
+
action = currentState.getTerminalAction(toStringifiedTokenType(token.type));
|
|
162
|
+
if (action == null)
|
|
163
|
+
throw new LR1ParserGraveError(this.syntaxErrorMessage(currentState, token), token);
|
|
87
164
|
}
|
|
88
165
|
const fixedAction = action;
|
|
89
166
|
if (fixedAction.type === "shift") {
|
|
90
167
|
token = this.lexer.getNextToken();
|
|
91
|
-
this.
|
|
168
|
+
this.pushState(fixedAction.value);
|
|
92
169
|
this.symbolsStack.push({ type: "token", token: token });
|
|
93
170
|
}
|
|
94
171
|
else if (fixedAction.type === "reduce") {
|
|
95
172
|
if (fixedAction.value === 0)
|
|
96
173
|
break;
|
|
97
174
|
const production = productions[fixedAction.value];
|
|
175
|
+
if (production == null)
|
|
176
|
+
throw new LR1ParserGraveError(`The parsing table is out of sync with the grammar: it reduces by production ${fixedAction.value}, but the grammar only has ${productions.length} productions`, token);
|
|
98
177
|
const popped = [];
|
|
99
178
|
for (let i = 0; i < production.rhs.length; i++) {
|
|
100
179
|
popped.unshift(this.symbolsStack.pop());
|
|
@@ -115,29 +194,73 @@ class LR1Parser {
|
|
|
115
194
|
this.symbolsStack.push({ type: "node", node });
|
|
116
195
|
}
|
|
117
196
|
catch (err) {
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
throw new LR1ParserGraveError(`Error while performing reduction for production
|
|
197
|
+
const cause = err instanceof Error ? err.message : String(err);
|
|
198
|
+
const input = truncate(JSON.stringify(popped), 500);
|
|
199
|
+
throw new LR1ParserGraveError(`Error while performing the reduction for production ${productionIndex}${describeProduction(production)}: ${cause}\nReduction input: ${input}`, token, err instanceof Error ? err : undefined);
|
|
121
200
|
}
|
|
122
201
|
const topNode = this.statesStack.peek();
|
|
123
|
-
const gotoAction =
|
|
202
|
+
const gotoAction = currentStates().getVariableAction(production.identifier);
|
|
124
203
|
if (gotoAction == undefined)
|
|
125
204
|
throw new LR1ParserGraveError(`No GOTO action for for state: ${topNode} and production: ${production.identifier}. Actions: Reduce by production ${productionIndex}`, token);
|
|
126
205
|
else if (gotoAction.type !== "goto")
|
|
127
206
|
throw new LR1ParserGraveError(`Expected GOTO action for state: ${topNode} and production: ${production.identifier}. Actions: Reduce by production ${productionIndex}. Received: ${gotoAction.type}`, token);
|
|
128
|
-
this.
|
|
207
|
+
this.pushState(gotoAction.value);
|
|
129
208
|
}
|
|
130
209
|
}
|
|
210
|
+
if (this.symbolsStack.isEmpty)
|
|
211
|
+
return { result: null, errors: this.exceptions };
|
|
131
212
|
const top = this.symbolsStack.peek();
|
|
132
213
|
return { result: top.type === "node" ? top.node : null, errors: this.exceptions };
|
|
133
214
|
}
|
|
215
|
+
pushState(state) {
|
|
216
|
+
if (state === undefined || this.options.states[state] == null)
|
|
217
|
+
throw new LR1ParserGraveError(`The parsing table is out of sync with the grammar: it points at state ${state}, but the table only has ${this.options.states.length} states`, null);
|
|
218
|
+
this.statesStack.push(state);
|
|
219
|
+
}
|
|
220
|
+
insertToken(token) {
|
|
221
|
+
var _a;
|
|
222
|
+
const state = this.options.states[this.statesStack.peek()];
|
|
223
|
+
const action = state === null || state === void 0 ? void 0 : state.getTerminalAction(this.options.toStringifiedTokenType(token.type));
|
|
224
|
+
if (action == null)
|
|
225
|
+
return {
|
|
226
|
+
success: false,
|
|
227
|
+
reason: `Cannot insert ${this.options.toStringifiedTokenType(token.type)} here: state ${this.statesStack.peek()} does not accept it. Expected ${(_a = state === null || state === void 0 ? void 0 : state.getTerminalKeys().join(", ")) !== null && _a !== void 0 ? _a : "nothing"}`,
|
|
228
|
+
};
|
|
229
|
+
if (action.type !== "shift")
|
|
230
|
+
return {
|
|
231
|
+
success: false,
|
|
232
|
+
reason: `Cannot insert ${this.options.toStringifiedTokenType(token.type)} here: state ${this.statesStack.peek()} reduces on it instead of shifting it`,
|
|
233
|
+
};
|
|
234
|
+
this.pushState(action.value);
|
|
235
|
+
this.symbolsStack.push({ type: "token", token });
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
syntaxErrorMessage(state, token) {
|
|
239
|
+
const expected = state.getTerminalKeys();
|
|
240
|
+
const got = this.options.toStringifiedTokenType(token.type);
|
|
241
|
+
const lexeme = token.lexeme === "" ? "" : ` ("${token.lexeme}")`;
|
|
242
|
+
return `Invalid syntax at ${token.line}:${token.column}: got ${got}${lexeme}, but expected ${expected.length === 0 ? "the end of the input" : `one of [${expected.join("], [")}]`}`;
|
|
243
|
+
}
|
|
134
244
|
}
|
|
245
|
+
exports.LR1Parser = LR1Parser;
|
|
135
246
|
class LR1ParserGraveError extends Error {
|
|
136
247
|
constructor(reason, currentToken, err) {
|
|
137
|
-
super(reason);
|
|
248
|
+
super(reason, err === undefined ? undefined : { cause: err });
|
|
138
249
|
this.reason = reason;
|
|
139
250
|
this.currentToken = currentToken;
|
|
251
|
+
this.name = "LR1ParserGraveError";
|
|
140
252
|
}
|
|
141
253
|
}
|
|
142
254
|
exports.LR1ParserGraveError = LR1ParserGraveError;
|
|
255
|
+
class SparseGrammarError extends Error {
|
|
256
|
+
constructor(reason, token) {
|
|
257
|
+
super(`Encountered error "${reason}" at ${token.line}:${token.column}`);
|
|
258
|
+
this.reason = reason;
|
|
259
|
+
this.token = token;
|
|
260
|
+
this.name = "SparseGrammarError";
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
exports.SparseGrammarError = SparseGrammarError;
|
|
264
|
+
const truncate = (value, max) => value.length <= max ? value : `${value.slice(0, max)}... (${value.length} characters)`;
|
|
265
|
+
const describeProduction = (production) => production.name == null ? ` (${production.identifier})` : ` ("${production.name}")`;
|
|
143
266
|
//# sourceMappingURL=parser.js.map
|