@scinorandex/sparse 0.0.1 → 0.0.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/README.md +2 -2
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/generator.d.ts +4 -1
- package/dist/generator.js +47 -32
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/meta/common.d.ts +57 -0
- package/dist/meta/common.js +62 -0
- package/dist/meta/common.js.map +1 -0
- package/dist/meta/handwritten.d.ts +12 -0
- package/dist/{grammarParser.js → meta/handwritten.js} +24 -24
- package/dist/meta/handwritten.js.map +1 -0
- package/dist/meta/selfhosted.d.ts +23 -0
- package/dist/meta/selfhosted.js +206 -0
- package/dist/meta/selfhosted.js.map +1 -0
- package/dist/meta/states.d.ts +1580 -0
- package/dist/meta/states.js +1493 -0
- package/dist/meta/states.js.map +1 -0
- package/dist/parser.d.ts +16 -5
- package/dist/parser.js +25 -7
- package/dist/parser.js.map +1 -1
- package/dist/{tableParser.d.ts → table/handwritten.d.ts} +1 -1
- package/dist/{tableParser.js → table/handwritten.js} +2 -2
- package/dist/table/handwritten.js.map +1 -0
- package/dist/table/selfhosted.d.ts +2 -0
- package/dist/table/selfhosted.js +65 -0
- package/dist/table/selfhosted.js.map +1 -0
- package/dist/table/states.d.ts +592 -0
- package/dist/table/states.js +593 -0
- package/dist/table/states.js.map +1 -0
- package/dist/utils/Result.d.ts +1 -1
- package/dist/utils/errorWindowBuilder.d.ts +1 -1
- package/example/LoLang/example.ts +14 -7
- package/example/complicated/grammar.txt +37 -0
- package/example/math/example.ts +1 -4
- package/example/selfhosted/01-meta-grammar.txt +10 -0
- package/example/selfhosted/02-table-grammar.txt +6 -0
- package/example/selfhosted/codegen-meta.ts +1489 -0
- package/example/selfhosted/codegen-table.ts +589 -0
- package/example/selfhosted/example.ts +39 -0
- package/package.json +4 -4
- package/src/cli.ts +1 -1
- package/src/generator.ts +52 -34
- package/src/index.ts +3 -2
- package/src/meta/common.ts +74 -0
- package/src/{grammarParser.ts → meta/handwritten.ts} +17 -21
- package/src/meta/selfhosted.ts +272 -0
- package/src/meta/states.ts +1489 -0
- package/src/parser.ts +53 -19
- package/src/{tableParser.ts → table/handwritten.ts} +5 -5
- package/src/table/selfhosted.ts +67 -0
- package/src/table/states.ts +589 -0
- package/src/utils/Result.ts +1 -1
- package/src/utils/errorWindowBuilder.ts +1 -1
- package/tsconfig.build.json +30 -0
- package/tsconfig.json +6 -6
- package/dist/grammarParser.d.ts +0 -27
- package/dist/grammarParser.js.map +0 -1
- package/dist/tableParser.js.map +0 -1
package/README.md
CHANGED
|
@@ -99,7 +99,7 @@ Finally, you can define the parser's reduction function and optionally define th
|
|
|
99
99
|
|
|
100
100
|
```ts
|
|
101
101
|
const parser = parserGenerator.generate(lexer, {
|
|
102
|
-
reducer: (input,
|
|
102
|
+
reducer: (_, { input, index }) => new Node(input),
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
console.log(parser.parse().result!.toObject());
|
|
@@ -128,5 +128,5 @@ async function main() {
|
|
|
128
128
|
|
|
129
129
|
## Roadmap
|
|
130
130
|
|
|
131
|
-
1. Support grouping and other modifiers in the CFG. Currently, you have to unroll your grammar and remove kleene-star, kleene-plus,
|
|
131
|
+
1. Support grouping and other modifiers in the CFG. Currently, you have to unroll your grammar and remove kleene-star, kleene-plus, and other modifiers.
|
|
132
132
|
2. Potentially add LALR(1) support. Currently, the parser only supports outputting LR(1) tables. Tables can be significantly smaller if it made LALR(1) tables instead.
|
package/dist/cli.js
CHANGED
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
-
const
|
|
8
|
+
const index_1 = require("./index");
|
|
9
9
|
const generator_1 = require("./generator");
|
|
10
10
|
const minimist_1 = __importDefault(require("minimist"));
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
@@ -29,7 +29,7 @@ async function main() {
|
|
|
29
29
|
if (!(await checkFileExists(inputFile)))
|
|
30
30
|
return console.log(`File ${inputFile} does not exist`);
|
|
31
31
|
const grammar = await promises_1.default.readFile(args.input, "utf8");
|
|
32
|
-
const productionsResult = (0,
|
|
32
|
+
const productionsResult = (0, index_1.tryBuildProductions)(grammar);
|
|
33
33
|
if (productionsResult.success === false) {
|
|
34
34
|
console.log(productionsResult.reason);
|
|
35
35
|
console.log((0, errorWindowBuilder_1.buildErrorWindow)(grammar, productionsResult.token));
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,2DAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,2DAA6B;AAC7B,mCAA8C;AAC9C,2CAA6C;AAC7C,wDAAgC;AAChC,gDAAwB;AACxB,mEAA8D;AAE9D,MAAM,IAAI,GAAG,IAAA,kBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C,SAAS,eAAe,CAAC,QAAgB;IACvC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,kBAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC;aACnC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACzB,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,4BAA4B,UAAU,IAAI,CAAC,CAAC;IAEzF,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,SAAS,iBAAiB,CAAC,CAAC;IAEhG,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAAC;IACvD,IAAI,iBAAiB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAA,qCAAgB,EAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,0BAAc,EAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,eAAe,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,IAAA,qCAAgB,EAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/generator.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Production } from "./grammarParser";
|
|
2
1
|
import { TableState } from "./parser";
|
|
2
|
+
import { Production } from "./meta/common";
|
|
3
3
|
import { Result } from "./utils/Result";
|
|
4
4
|
type Item = Production & {
|
|
5
5
|
dot: number;
|
|
@@ -24,5 +24,8 @@ export declare class GeneratorResult {
|
|
|
24
24
|
}>[], GotoTable: Map<string, number>[]);
|
|
25
25
|
toTable(): string;
|
|
26
26
|
toStates(): TableState[];
|
|
27
|
+
toJSObject(): {
|
|
28
|
+
[k: string]: import("./parser").TableAction;
|
|
29
|
+
}[];
|
|
27
30
|
}
|
|
28
31
|
export {};
|
package/dist/generator.js
CHANGED
|
@@ -7,31 +7,31 @@ const EOF_STRING = "[EOF]";
|
|
|
7
7
|
function computeFirstSets(allProductions) {
|
|
8
8
|
const ret = new Map();
|
|
9
9
|
for (const production of allProductions)
|
|
10
|
-
ret.set(production.
|
|
10
|
+
ret.set(production.identifier, new Set());
|
|
11
11
|
let wasEdited = true;
|
|
12
12
|
while (wasEdited) {
|
|
13
13
|
wasEdited = false;
|
|
14
14
|
for (const production of allProductions) {
|
|
15
|
-
const toBeModified = ret.get(production.
|
|
15
|
+
const toBeModified = ret.get(production.identifier);
|
|
16
16
|
const firstRhsToken = production.rhs[0];
|
|
17
17
|
if (firstRhsToken.type === "variable") {
|
|
18
|
-
const add = ret.get(firstRhsToken.
|
|
18
|
+
const add = ret.get(firstRhsToken.identifier);
|
|
19
19
|
if (add == null) {
|
|
20
20
|
return {
|
|
21
21
|
success: false,
|
|
22
|
-
reason: `Variable "${firstRhsToken.
|
|
22
|
+
reason: `Variable "${firstRhsToken.identifier}" doesn't have a corresponding left hand side`,
|
|
23
23
|
token: firstRhsToken.token,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
if (!xContainsAllOfY(toBeModified, add)) {
|
|
27
27
|
wasEdited = true;
|
|
28
|
-
ret.set(production.
|
|
28
|
+
ret.set(production.identifier, new Set([...toBeModified, ...add]));
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
else if (firstRhsToken.type === "terminal") {
|
|
32
|
-
if (toBeModified.has(firstRhsToken.
|
|
32
|
+
if (toBeModified.has(firstRhsToken.identifier) == false) {
|
|
33
33
|
wasEdited = true;
|
|
34
|
-
ret.set(production.
|
|
34
|
+
ret.set(production.identifier, new Set([...toBeModified, firstRhsToken.identifier]));
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -45,8 +45,8 @@ function computeFollowSets(allProductions) {
|
|
|
45
45
|
const firstSets = firstSetsResult.value;
|
|
46
46
|
const ret = new Map();
|
|
47
47
|
for (const production of allProductions)
|
|
48
|
-
ret.set(production.
|
|
49
|
-
ret.get(allProductions[0].
|
|
48
|
+
ret.set(production.identifier, new Set());
|
|
49
|
+
ret.get(allProductions[0].identifier).add(EOF_STRING);
|
|
50
50
|
let wasEdited = true;
|
|
51
51
|
while (wasEdited) {
|
|
52
52
|
wasEdited = false;
|
|
@@ -55,9 +55,9 @@ function computeFollowSets(allProductions) {
|
|
|
55
55
|
const rhs = currentProduction.rhs;
|
|
56
56
|
for (let i = 0; i < rhs.length; i++) {
|
|
57
57
|
const currentRhsToken = rhs[i];
|
|
58
|
-
if (currentRhsToken.type === "variable" && currentRhsToken.
|
|
58
|
+
if (currentRhsToken.type === "variable" && currentRhsToken.identifier === variable) {
|
|
59
59
|
if (i === rhs.length - 1) {
|
|
60
|
-
const toBeAdded = ret.get(currentProduction.
|
|
60
|
+
const toBeAdded = ret.get(currentProduction.identifier);
|
|
61
61
|
const receiver = ret.get(variable);
|
|
62
62
|
if (!xContainsAllOfY(receiver, toBeAdded)) {
|
|
63
63
|
wasEdited = true;
|
|
@@ -68,17 +68,17 @@ function computeFollowSets(allProductions) {
|
|
|
68
68
|
const nextRhsToken = rhs[i + 1];
|
|
69
69
|
if (nextRhsToken.type === "terminal") {
|
|
70
70
|
const existing = ret.get(variable);
|
|
71
|
-
if (!existing.has(nextRhsToken.
|
|
71
|
+
if (!existing.has(nextRhsToken.identifier)) {
|
|
72
72
|
wasEdited = true;
|
|
73
|
-
ret.set(variable, new Set([...existing, nextRhsToken.
|
|
73
|
+
ret.set(variable, new Set([...existing, nextRhsToken.identifier]));
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
else if (nextRhsToken.type === "variable") {
|
|
77
|
-
const firstSet = firstSets.get(nextRhsToken.
|
|
77
|
+
const firstSet = firstSets.get(nextRhsToken.identifier);
|
|
78
78
|
if (firstSet == null)
|
|
79
79
|
return {
|
|
80
80
|
success: false,
|
|
81
|
-
reason: `Variable "${nextRhsToken.
|
|
81
|
+
reason: `Variable "${nextRhsToken.identifier}" doesn't have a corresponding left hand side`,
|
|
82
82
|
token: nextRhsToken.token,
|
|
83
83
|
};
|
|
84
84
|
if (!xContainsAllOfY(ret.get(variable), firstSet)) {
|
|
@@ -99,33 +99,39 @@ const generateStates = (productions) => {
|
|
|
99
99
|
if (followSetsResult.success == false)
|
|
100
100
|
return followSetsResult;
|
|
101
101
|
const { firstSets, followSets } = followSetsResult.value;
|
|
102
|
-
const determineNextLookAhead = (lhs, array) => {
|
|
102
|
+
const determineNextLookAhead = (lhs, identifier, array) => {
|
|
103
103
|
if (array.length === 0) {
|
|
104
|
-
const followSet = followSets.get(
|
|
104
|
+
const followSet = followSets.get(identifier);
|
|
105
105
|
if (followSet != undefined)
|
|
106
106
|
return { success: true, value: [...followSet] };
|
|
107
107
|
return {
|
|
108
108
|
success: false,
|
|
109
|
-
reason: `Variable ${
|
|
109
|
+
reason: `Variable ${identifier} not present in computed follow sets`,
|
|
110
110
|
token: lhs,
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
else {
|
|
114
114
|
const next = array[0];
|
|
115
115
|
if (next.type === "terminal")
|
|
116
|
-
return { success: true, value: [next.
|
|
117
|
-
const testing = firstSets.get(next.
|
|
116
|
+
return { success: true, value: [next.identifier] };
|
|
117
|
+
const testing = firstSets.get(next.identifier);
|
|
118
118
|
if (testing !== undefined)
|
|
119
119
|
return { success: true, value: [...testing] };
|
|
120
120
|
return {
|
|
121
121
|
success: false,
|
|
122
|
-
reason: `Variable ${next.
|
|
122
|
+
reason: `Variable ${next.identifier} not present in computed first sets`,
|
|
123
123
|
token: next.token,
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
127
|
function generateInitialItemSet(production) {
|
|
128
|
-
const initialItem = {
|
|
128
|
+
const initialItem = {
|
|
129
|
+
lhs: production.lhs,
|
|
130
|
+
identifier: production.identifier,
|
|
131
|
+
rhs: production.rhs,
|
|
132
|
+
dot: 0,
|
|
133
|
+
lookahead: [EOF_STRING],
|
|
134
|
+
};
|
|
129
135
|
return expandItemSet([initialItem]);
|
|
130
136
|
}
|
|
131
137
|
function expandItemSet(items) {
|
|
@@ -137,14 +143,20 @@ const generateStates = (productions) => {
|
|
|
137
143
|
if (after == null)
|
|
138
144
|
continue;
|
|
139
145
|
if (after.type === "variable") {
|
|
140
|
-
const newProductions = productions.filter((p) => p.
|
|
146
|
+
const newProductions = productions.filter((p) => p.identifier === after.identifier);
|
|
141
147
|
const rest = currentItem.rhs.slice(currentItem.dot + 1);
|
|
142
|
-
const lookaheadResult = determineNextLookAhead(currentItem.lhs, rest);
|
|
148
|
+
const lookaheadResult = determineNextLookAhead(currentItem.lhs, currentItem.identifier, rest);
|
|
143
149
|
if (lookaheadResult.success === false)
|
|
144
150
|
return lookaheadResult;
|
|
145
151
|
const lookahead = lookaheadResult.value;
|
|
146
152
|
for (const newProduction of newProductions) {
|
|
147
|
-
const newItem = {
|
|
153
|
+
const newItem = {
|
|
154
|
+
lhs: newProduction.lhs,
|
|
155
|
+
identifier: newProduction.identifier,
|
|
156
|
+
rhs: newProduction.rhs,
|
|
157
|
+
dot: 0,
|
|
158
|
+
lookahead,
|
|
159
|
+
};
|
|
148
160
|
const encoding = JSON.stringify(newItem);
|
|
149
161
|
if (itemSet.some((i) => JSON.stringify(i) === encoding) == false) {
|
|
150
162
|
unprocesssedItems.push(newItem);
|
|
@@ -174,7 +186,7 @@ const generateStates = (productions) => {
|
|
|
174
186
|
if (nextSymbol == null) {
|
|
175
187
|
const productionToReduceTo = productions
|
|
176
188
|
.map((p, i) => [p, i])
|
|
177
|
-
.find(([p, _]) => JSON.stringify(p.rhs) === JSON.stringify(item.rhs) && p.
|
|
189
|
+
.find(([p, _]) => JSON.stringify(p.rhs) === JSON.stringify(item.rhs) && p.identifier === item.identifier)[1];
|
|
178
190
|
for (const lookahead of item.lookahead) {
|
|
179
191
|
if (ActionTable[currentState.count] === undefined)
|
|
180
192
|
ActionTable[currentState.count] = new Map();
|
|
@@ -184,16 +196,16 @@ const generateStates = (productions) => {
|
|
|
184
196
|
}
|
|
185
197
|
const newItem = Object.assign(Object.assign({}, item), { dot: item.dot + 1 });
|
|
186
198
|
if (nextSymbol.type === "variable") {
|
|
187
|
-
if (nextStates_Goto.has(nextSymbol.
|
|
188
|
-
nextStates_Goto.get(nextSymbol.
|
|
199
|
+
if (nextStates_Goto.has(nextSymbol.identifier))
|
|
200
|
+
nextStates_Goto.get(nextSymbol.identifier).push(newItem);
|
|
189
201
|
else
|
|
190
|
-
nextStates_Goto.set(nextSymbol.
|
|
202
|
+
nextStates_Goto.set(nextSymbol.identifier, [newItem]);
|
|
191
203
|
}
|
|
192
204
|
else if (nextSymbol.type === "terminal") {
|
|
193
|
-
if (nextStates_Shift.has(nextSymbol.
|
|
194
|
-
nextStates_Shift.get(nextSymbol.
|
|
205
|
+
if (nextStates_Shift.has(nextSymbol.identifier))
|
|
206
|
+
nextStates_Shift.get(nextSymbol.identifier).push(newItem);
|
|
195
207
|
else
|
|
196
|
-
nextStates_Shift.set(nextSymbol.
|
|
208
|
+
nextStates_Shift.set(nextSymbol.identifier, [newItem]);
|
|
197
209
|
}
|
|
198
210
|
}
|
|
199
211
|
for (const [gotoTransition, gotoItems] of nextStates_Goto.entries()) {
|
|
@@ -285,6 +297,9 @@ class GeneratorResult {
|
|
|
285
297
|
return tableState;
|
|
286
298
|
});
|
|
287
299
|
}
|
|
300
|
+
toJSObject() {
|
|
301
|
+
return this.toStates().map((tableState) => tableState.toJSObject());
|
|
302
|
+
}
|
|
288
303
|
}
|
|
289
304
|
exports.GeneratorResult = GeneratorResult;
|
|
290
305
|
//# sourceMappingURL=generator.js.map
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { GeneratorResult, generateStates } from "./generator";
|
|
2
|
-
export {
|
|
2
|
+
export { buildProductions, tryBuildProductions } from "./meta/selfhosted";
|
|
3
3
|
export { Result } from "./utils/Result";
|
|
4
4
|
export { ParserRecoveryFunction, Sparse, LR1ParserGraveError, LR1StackSymbol, ParserResult, ParserError, } from "./parser";
|
|
5
|
-
export { buildStates } from "./
|
|
5
|
+
export { buildStates } from "./table/selfhosted";
|
|
6
|
+
export { Production } from "./meta/common";
|
package/dist/index.js
CHANGED
|
@@ -4,12 +4,12 @@ exports.buildStates = exports.LR1ParserGraveError = exports.Sparse = exports.try
|
|
|
4
4
|
var generator_1 = require("./generator");
|
|
5
5
|
Object.defineProperty(exports, "GeneratorResult", { enumerable: true, get: function () { return generator_1.GeneratorResult; } });
|
|
6
6
|
Object.defineProperty(exports, "generateStates", { enumerable: true, get: function () { return generator_1.generateStates; } });
|
|
7
|
-
var
|
|
8
|
-
Object.defineProperty(exports, "buildProductions", { enumerable: true, get: function () { return
|
|
9
|
-
Object.defineProperty(exports, "tryBuildProductions", { enumerable: true, get: function () { return
|
|
7
|
+
var selfhosted_1 = require("./meta/selfhosted");
|
|
8
|
+
Object.defineProperty(exports, "buildProductions", { enumerable: true, get: function () { return selfhosted_1.buildProductions; } });
|
|
9
|
+
Object.defineProperty(exports, "tryBuildProductions", { enumerable: true, get: function () { return selfhosted_1.tryBuildProductions; } });
|
|
10
10
|
var parser_1 = require("./parser");
|
|
11
11
|
Object.defineProperty(exports, "Sparse", { enumerable: true, get: function () { return parser_1.Sparse; } });
|
|
12
12
|
Object.defineProperty(exports, "LR1ParserGraveError", { enumerable: true, get: function () { return parser_1.LR1ParserGraveError; } });
|
|
13
|
-
var
|
|
14
|
-
Object.defineProperty(exports, "buildStates", { enumerable: true, get: function () { return
|
|
13
|
+
var selfhosted_2 = require("./table/selfhosted");
|
|
14
|
+
Object.defineProperty(exports, "buildStates", { enumerable: true, get: function () { return selfhosted_2.buildStates; } });
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8D;AAArD,4GAAA,eAAe,OAAA;AAAE,2GAAA,cAAc,OAAA;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA8D;AAArD,4GAAA,eAAe,OAAA;AAAE,2GAAA,cAAc,OAAA;AACxC,gDAA0E;AAAjE,8GAAA,gBAAgB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAE9C,mCAOkB;AALhB,gGAAA,MAAM,OAAA;AACN,6GAAA,mBAAmB,OAAA;AAKrB,iDAAiD;AAAxC,yGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Token } from "@scinorandex/slex";
|
|
2
|
+
export type Production = {
|
|
3
|
+
lhs: GrammarToken;
|
|
4
|
+
identifier: string;
|
|
5
|
+
originalProductionIndex: number;
|
|
6
|
+
name: string | null;
|
|
7
|
+
rhs: {
|
|
8
|
+
type: "terminal" | "variable";
|
|
9
|
+
token: GrammarToken;
|
|
10
|
+
identifier: string;
|
|
11
|
+
name: string | null;
|
|
12
|
+
}[];
|
|
13
|
+
};
|
|
14
|
+
export declare const dehydateProduction: (opts: Production) => {
|
|
15
|
+
lhs: {
|
|
16
|
+
column: number;
|
|
17
|
+
lexeme: string;
|
|
18
|
+
line: number;
|
|
19
|
+
type: GrammarTokenType;
|
|
20
|
+
};
|
|
21
|
+
identifier: string;
|
|
22
|
+
name: string | null;
|
|
23
|
+
originalProductionIndex: number;
|
|
24
|
+
rhs: {
|
|
25
|
+
type: "terminal" | "variable";
|
|
26
|
+
token: {
|
|
27
|
+
column: number;
|
|
28
|
+
lexeme: string;
|
|
29
|
+
line: number;
|
|
30
|
+
type: GrammarTokenType;
|
|
31
|
+
};
|
|
32
|
+
identifier: string;
|
|
33
|
+
name: string | null;
|
|
34
|
+
}[];
|
|
35
|
+
};
|
|
36
|
+
export declare const hydrateProduction: (production: ReturnType<typeof dehydateProduction>) => Production;
|
|
37
|
+
export type GrammarTokenMetadata = {};
|
|
38
|
+
export declare enum GrammarTokenType {
|
|
39
|
+
IDENTIFIER = 0,
|
|
40
|
+
L_ANGLE = 1,
|
|
41
|
+
R_ANGLE = 2,
|
|
42
|
+
L_BRACKET = 3,
|
|
43
|
+
R_BRACKET = 4,
|
|
44
|
+
L_PAREN = 5,
|
|
45
|
+
R_PAREN = 6,
|
|
46
|
+
PIPE = 7,
|
|
47
|
+
QUESTION_MARK = 8,
|
|
48
|
+
COLON = 9,
|
|
49
|
+
SEMICOLON = 10,
|
|
50
|
+
NUMBER = 11,
|
|
51
|
+
EQUALS = 12,
|
|
52
|
+
COMMA = 13,
|
|
53
|
+
EOF = 14,
|
|
54
|
+
PRODUCTION_NAME = 15,
|
|
55
|
+
TOKEN_NAME = 16
|
|
56
|
+
}
|
|
57
|
+
export type GrammarToken = Token<GrammarTokenType, GrammarTokenMetadata>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GrammarTokenType = exports.hydrateProduction = exports.dehydateProduction = void 0;
|
|
4
|
+
const slex_1 = require("@scinorandex/slex");
|
|
5
|
+
const dehydateGrammarToken = ({ column, lexeme, line, type }) => {
|
|
6
|
+
return { column, lexeme, line, type };
|
|
7
|
+
};
|
|
8
|
+
const hydrateGrammarToken = (token) => {
|
|
9
|
+
return new slex_1.Token(token.type, token.lexeme, new slex_1.ColumnAndRow(token.line, token.column), {});
|
|
10
|
+
};
|
|
11
|
+
const dehydateProduction = (opts) => {
|
|
12
|
+
const { lhs, identifier, rhs, originalProductionIndex, name } = opts;
|
|
13
|
+
return {
|
|
14
|
+
lhs: dehydateGrammarToken(lhs),
|
|
15
|
+
identifier,
|
|
16
|
+
name,
|
|
17
|
+
originalProductionIndex,
|
|
18
|
+
rhs: rhs.map(({ type, token, identifier, name }) => ({
|
|
19
|
+
type,
|
|
20
|
+
token: dehydateGrammarToken(token),
|
|
21
|
+
identifier,
|
|
22
|
+
name,
|
|
23
|
+
})),
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.dehydateProduction = dehydateProduction;
|
|
27
|
+
const hydrateProduction = (production) => {
|
|
28
|
+
return {
|
|
29
|
+
lhs: hydrateGrammarToken(production.lhs),
|
|
30
|
+
identifier: production.identifier,
|
|
31
|
+
originalProductionIndex: production.originalProductionIndex,
|
|
32
|
+
name: production.name,
|
|
33
|
+
rhs: production.rhs.map(({ type, token, name }) => ({
|
|
34
|
+
type,
|
|
35
|
+
token: hydrateGrammarToken(token),
|
|
36
|
+
identifier: token.lexeme,
|
|
37
|
+
name,
|
|
38
|
+
})),
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.hydrateProduction = hydrateProduction;
|
|
42
|
+
var GrammarTokenType;
|
|
43
|
+
(function (GrammarTokenType) {
|
|
44
|
+
GrammarTokenType[GrammarTokenType["IDENTIFIER"] = 0] = "IDENTIFIER";
|
|
45
|
+
GrammarTokenType[GrammarTokenType["L_ANGLE"] = 1] = "L_ANGLE";
|
|
46
|
+
GrammarTokenType[GrammarTokenType["R_ANGLE"] = 2] = "R_ANGLE";
|
|
47
|
+
GrammarTokenType[GrammarTokenType["L_BRACKET"] = 3] = "L_BRACKET";
|
|
48
|
+
GrammarTokenType[GrammarTokenType["R_BRACKET"] = 4] = "R_BRACKET";
|
|
49
|
+
GrammarTokenType[GrammarTokenType["L_PAREN"] = 5] = "L_PAREN";
|
|
50
|
+
GrammarTokenType[GrammarTokenType["R_PAREN"] = 6] = "R_PAREN";
|
|
51
|
+
GrammarTokenType[GrammarTokenType["PIPE"] = 7] = "PIPE";
|
|
52
|
+
GrammarTokenType[GrammarTokenType["QUESTION_MARK"] = 8] = "QUESTION_MARK";
|
|
53
|
+
GrammarTokenType[GrammarTokenType["COLON"] = 9] = "COLON";
|
|
54
|
+
GrammarTokenType[GrammarTokenType["SEMICOLON"] = 10] = "SEMICOLON";
|
|
55
|
+
GrammarTokenType[GrammarTokenType["NUMBER"] = 11] = "NUMBER";
|
|
56
|
+
GrammarTokenType[GrammarTokenType["EQUALS"] = 12] = "EQUALS";
|
|
57
|
+
GrammarTokenType[GrammarTokenType["COMMA"] = 13] = "COMMA";
|
|
58
|
+
GrammarTokenType[GrammarTokenType["EOF"] = 14] = "EOF";
|
|
59
|
+
GrammarTokenType[GrammarTokenType["PRODUCTION_NAME"] = 15] = "PRODUCTION_NAME";
|
|
60
|
+
GrammarTokenType[GrammarTokenType["TOKEN_NAME"] = 16] = "TOKEN_NAME";
|
|
61
|
+
})(GrammarTokenType || (exports.GrammarTokenType = GrammarTokenType = {}));
|
|
62
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/meta/common.ts"],"names":[],"mappings":";;;AAAA,4CAAwD;AAUxD,MAAM,oBAAoB,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAgB,EAAE,EAAE;IAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,KAA8C,EACC,EAAE;IACjD,OAAO,IAAI,YAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAE,EAAE;IACrD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO;QACL,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC;QAC9B,UAAU;QACV,IAAI;QACJ,uBAAuB;QACvB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI;YACJ,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC;YAClC,UAAU;YACV,IAAI;SACL,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAEK,MAAM,iBAAiB,GAAG,CAAC,UAAiD,EAAc,EAAE;IACjG,OAAO;QACL,GAAG,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC;QACxC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;QAC3D,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI;YACJ,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;YACjC,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,IAAI;SACL,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAGF,IAAY,gBAmBX;AAnBD,WAAY,gBAAgB;IAC1B,mEAAU,CAAA;IACV,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,iEAAS,CAAA;IACT,iEAAS,CAAA;IACT,6DAAO,CAAA;IACP,6DAAO,CAAA;IACP,uDAAI,CAAA;IACJ,yEAAa,CAAA;IACb,yDAAK,CAAA;IACL,kEAAS,CAAA;IACT,4DAAM,CAAA;IACN,4DAAM,CAAA;IACN,0DAAK,CAAA;IACL,sDAAG,CAAA;IAEH,8EAAe,CAAA;IACf,oEAAU,CAAA;AACZ,CAAC,EAnBW,gBAAgB,gCAAhB,gBAAgB,QAmB3B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Slex } from "@scinorandex/slex";
|
|
2
|
+
import { Result } from "../utils/Result";
|
|
3
|
+
import { GrammarToken, GrammarTokenMetadata, GrammarTokenType, Production } from "./common";
|
|
4
|
+
export declare const grammarLexerGenerator: Slex<GrammarTokenType, GrammarTokenMetadata>;
|
|
5
|
+
interface LexerInterface {
|
|
6
|
+
peekNextToken(): GrammarToken;
|
|
7
|
+
getNextToken(): GrammarToken;
|
|
8
|
+
hasNextToken(): boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const tryBuildProductions: (lexer: LexerInterface | string) => Result<Production[]>;
|
|
11
|
+
export declare const buildProductions: (lexer: LexerInterface | string) => Production[];
|
|
12
|
+
export {};
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildProductions = exports.tryBuildProductions = exports.grammarLexerGenerator =
|
|
3
|
+
exports.buildProductions = exports.tryBuildProductions = exports.grammarLexerGenerator = void 0;
|
|
4
4
|
const slex_1 = require("@scinorandex/slex");
|
|
5
|
-
|
|
6
|
-
(function (GrammarTokenType) {
|
|
7
|
-
GrammarTokenType[GrammarTokenType["PRODUCTION_NAME"] = 0] = "PRODUCTION_NAME";
|
|
8
|
-
GrammarTokenType[GrammarTokenType["TOKEN_NAME"] = 1] = "TOKEN_NAME";
|
|
9
|
-
GrammarTokenType[GrammarTokenType["COLON"] = 2] = "COLON";
|
|
10
|
-
GrammarTokenType[GrammarTokenType["SEMICOLON"] = 3] = "SEMICOLON";
|
|
11
|
-
GrammarTokenType[GrammarTokenType["EOF"] = 4] = "EOF";
|
|
12
|
-
})(GrammarTokenType || (exports.GrammarTokenType = GrammarTokenType = {}));
|
|
5
|
+
const common_1 = require("./common");
|
|
13
6
|
exports.grammarLexerGenerator = new slex_1.Slex({
|
|
14
|
-
EOF_TYPE: GrammarTokenType.EOF,
|
|
7
|
+
EOF_TYPE: common_1.GrammarTokenType.EOF,
|
|
15
8
|
isHigherPrecedence: () => false,
|
|
16
9
|
});
|
|
17
10
|
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");
|
|
@@ -20,10 +13,10 @@ exports.grammarLexerGenerator.addRule("letter", "${lowercase} | ${uppercase}");
|
|
|
20
13
|
exports.grammarLexerGenerator.addRule("digit", "0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9");
|
|
21
14
|
exports.grammarLexerGenerator.addRule("alphanumeric", "${letter} | ${digit}");
|
|
22
15
|
exports.grammarLexerGenerator.addRule("identifier", "(${letter} | ${digit} | $_)*");
|
|
23
|
-
exports.grammarLexerGenerator.addRule("colon", "$:", GrammarTokenType.COLON);
|
|
24
|
-
exports.grammarLexerGenerator.addRule("semicolon", "$;", GrammarTokenType.SEMICOLON);
|
|
25
|
-
exports.grammarLexerGenerator.addRule("production_name", "$< ${identifier} $>", GrammarTokenType.PRODUCTION_NAME);
|
|
26
|
-
exports.grammarLexerGenerator.addRule("token_name", "$[ ${identifier} $]", GrammarTokenType.TOKEN_NAME);
|
|
16
|
+
exports.grammarLexerGenerator.addRule("colon", "$:", common_1.GrammarTokenType.COLON);
|
|
17
|
+
exports.grammarLexerGenerator.addRule("semicolon", "$;", common_1.GrammarTokenType.SEMICOLON);
|
|
18
|
+
exports.grammarLexerGenerator.addRule("production_name", "$< ${identifier} $>", common_1.GrammarTokenType.PRODUCTION_NAME);
|
|
19
|
+
exports.grammarLexerGenerator.addRule("token_name", "$[ ${identifier} $]", common_1.GrammarTokenType.TOKEN_NAME);
|
|
27
20
|
const tryBuildProductions = (lexer) => {
|
|
28
21
|
if (typeof lexer === "string")
|
|
29
22
|
lexer = exports.grammarLexerGenerator.generate(lexer, () => ({}));
|
|
@@ -34,24 +27,31 @@ const tryBuildProductions = (lexer) => {
|
|
|
34
27
|
throw new Error(`Expected ${type}, got ${token.type}`);
|
|
35
28
|
lexer.getNextToken();
|
|
36
29
|
};
|
|
30
|
+
let productionIndex = 0;
|
|
37
31
|
const buildProduction = () => {
|
|
38
32
|
const productionLHS = lexer.getNextToken();
|
|
39
|
-
expect(GrammarTokenType.COLON);
|
|
40
|
-
const production = {
|
|
41
|
-
|
|
33
|
+
expect(common_1.GrammarTokenType.COLON);
|
|
34
|
+
const production = {
|
|
35
|
+
lhs: productionLHS,
|
|
36
|
+
identifier: productionLHS.lexeme,
|
|
37
|
+
rhs: [],
|
|
38
|
+
name: null,
|
|
39
|
+
originalProductionIndex: productionIndex++,
|
|
40
|
+
};
|
|
41
|
+
while (lexer.peekNextToken().type != common_1.GrammarTokenType.SEMICOLON) {
|
|
42
42
|
const productionRHS = lexer.getNextToken();
|
|
43
|
-
if (productionRHS.type == GrammarTokenType.PRODUCTION_NAME)
|
|
44
|
-
production.rhs.push({ type: "variable", token: productionRHS });
|
|
45
|
-
else if (productionRHS.type == GrammarTokenType.TOKEN_NAME)
|
|
46
|
-
production.rhs.push({ type: "terminal", token: productionRHS });
|
|
43
|
+
if (productionRHS.type == common_1.GrammarTokenType.PRODUCTION_NAME)
|
|
44
|
+
production.rhs.push({ type: "variable", token: productionRHS, identifier: productionRHS.lexeme, name: null });
|
|
45
|
+
else if (productionRHS.type == common_1.GrammarTokenType.TOKEN_NAME)
|
|
46
|
+
production.rhs.push({ type: "terminal", token: productionRHS, identifier: productionRHS.lexeme, name: null });
|
|
47
47
|
else
|
|
48
48
|
return {
|
|
49
49
|
success: false,
|
|
50
|
-
reason: `Unexpected token type: ${GrammarTokenType[productionRHS.type]}`,
|
|
50
|
+
reason: `Unexpected token type: ${common_1.GrammarTokenType[productionRHS.type]}`,
|
|
51
51
|
token: productionRHS,
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
expect(GrammarTokenType.SEMICOLON);
|
|
54
|
+
expect(common_1.GrammarTokenType.SEMICOLON);
|
|
55
55
|
return { success: true, value: production };
|
|
56
56
|
};
|
|
57
57
|
while (lexer.hasNextToken()) {
|
|
@@ -70,4 +70,4 @@ const buildProductions = (lexer) => {
|
|
|
70
70
|
return result.value;
|
|
71
71
|
};
|
|
72
72
|
exports.buildProductions = buildProductions;
|
|
73
|
-
//# sourceMappingURL=
|
|
73
|
+
//# sourceMappingURL=handwritten.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handwritten.js","sourceRoot":"","sources":["../../src/meta/handwritten.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AAEzC,qCAA4F;AAE/E,QAAA,qBAAqB,GAAG,IAAI,WAAI,CAAyC;IACpF,QAAQ,EAAE,yBAAgB,CAAC,GAAG;IAC9B,kBAAkB,EAAE,GAAG,EAAE,CAAC,KAAK;CAChC,CAAC,CAAC;AAEH,6BAAqB,CAAC,OAAO,CAC3B,WAAW,EACX,uGAAuG,CACxG,CAAC;AACF,6BAAqB,CAAC,OAAO,CAC3B,WAAW,EACX,uGAAuG,CACxG,CAAC;AACF,6BAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AACvE,6BAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;AAChF,6BAAqB,CAAC,OAAO,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;AACtE,6BAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;AAC5E,6BAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,yBAAgB,CAAC,KAAK,CAAC,CAAC;AACrE,6BAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,yBAAgB,CAAC,SAAS,CAAC,CAAC;AAC7E,6BAAqB,CAAC,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,yBAAgB,CAAC,eAAe,CAAC,CAAC;AAC1G,6BAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAgB,CAAC,UAAU,CAAC,CAAC;AAQzF,MAAM,mBAAmB,GAAG,CAAC,KAA8B,EAAwB,EAAE;IAC1F,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,KAAK,GAAG,6BAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzF,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,MAAM,GAAG,CAAC,IAAsB,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,KAAK,CAAC,YAAY,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,MAAM,eAAe,GAAG,GAAuB,EAAE;QAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,CAAC,yBAAgB,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,UAAU,GAAe;YAC7B,GAAG,EAAE,aAAa;YAClB,UAAU,EAAE,aAAa,CAAC,MAAM;YAChC,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,IAAI;YACV,uBAAuB,EAAE,eAAe,EAAE;SAC3C,CAAC;QAEF,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,IAAI,yBAAgB,CAAC,SAAS,EAAE,CAAC;YAChE,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAE3C,IAAI,aAAa,CAAC,IAAI,IAAI,yBAAgB,CAAC,eAAe;gBACxD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3G,IAAI,aAAa,CAAC,IAAI,IAAI,yBAAgB,CAAC,UAAU;gBACxD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAE9G,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,0BAA0B,yBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBACxE,KAAK,EAAE,aAAa;iBACrB,CAAC;QACN,CAAC;QAED,MAAM,CAAC,yBAAgB,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,MAAM,CAAC;QAC5C,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC/C,CAAC,CAAC;AAnDW,QAAA,mBAAmB,uBAmD9B;AAEK,MAAM,gBAAgB,GAAG,CAAC,KAA8B,EAAgB,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAC1B,MAAM,IAAI,KAAK,CACb,sBAAsB,MAAM,CAAC,MAAM,8BAA8B,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAC5G,CAAC;IACJ,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAPW,QAAA,gBAAgB,oBAO3B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Slex } from "@scinorandex/slex";
|
|
2
|
+
import { Result, Sparse } from "../index";
|
|
3
|
+
import { selfhosted } from "./states";
|
|
4
|
+
import { GrammarToken, GrammarTokenMetadata, GrammarTokenType, Production } from "./common";
|
|
5
|
+
export declare const grammarLexerGenerator: Slex<GrammarTokenType, GrammarTokenMetadata>;
|
|
6
|
+
export declare abstract class BaseNode {
|
|
7
|
+
}
|
|
8
|
+
export declare class ListNode<T> extends BaseNode {
|
|
9
|
+
private items;
|
|
10
|
+
constructor(items: T | T[]);
|
|
11
|
+
add(item: T): this;
|
|
12
|
+
getItems(): T[];
|
|
13
|
+
getItemsReversed(): T[];
|
|
14
|
+
}
|
|
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 {
|
|
18
|
+
peekNextToken(): GrammarToken;
|
|
19
|
+
getNextToken(): GrammarToken;
|
|
20
|
+
hasNextToken(): boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare const buildProductions: (lexer: LexerInterface | string) => Production[];
|
|
23
|
+
export {};
|