parser-lr 0.3.1 → 0.4.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/README.md +6 -6
- package/bin/parser-lr.js +1100 -16
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/grammar/grammar.json +1068 -0
- package/dist/lib/parse-context.d.ts +6 -6
- package/dist/lib/parse-context.js +6 -6
- package/dist/lib/parse-table/parse-table-json.d.ts +4 -0
- package/dist/lib/parse-table/parse-table-json.d.ts.map +1 -1
- package/dist/lib/parse-table/parse-table-json.js.map +1 -1
- package/dist/lib/parse-table/parse-table.d.ts +13 -3
- package/dist/lib/parse-table/parse-table.d.ts.map +1 -1
- package/dist/lib/parse-table/parse-table.js +22 -6
- package/dist/lib/parse-table/parse-table.js.map +1 -1
- package/dist/lib/parser-lr.d.ts +2 -2
- package/dist/lib/parser-lr.js +2 -2
- package/docs/grammar.md +2 -2
- package/package.json +1 -1
|
@@ -28,8 +28,8 @@ export declare class ParseContext {
|
|
|
28
28
|
/**
|
|
29
29
|
* Builds a parse context from serialized parse table JSON.
|
|
30
30
|
*
|
|
31
|
-
* @param json - Serialized parse table JSON.
|
|
32
|
-
* @returns Parser and parse table ready for lexing
|
|
31
|
+
* @param json - Serialized parse table JSON including `ast` and `transform` when present.
|
|
32
|
+
* @returns Parser and parse table ready for lexing and full AST parsing.
|
|
33
33
|
*/
|
|
34
34
|
static fromTableJson(json: string): ParseContext;
|
|
35
35
|
/**
|
|
@@ -81,17 +81,17 @@ export declare class ParseContext {
|
|
|
81
81
|
*/
|
|
82
82
|
lexChunkStreamAsync(chunks: AsyncIterable<string>): Promise<readonly Token[]>;
|
|
83
83
|
/**
|
|
84
|
-
* Parses a token stream into
|
|
84
|
+
* Parses a token stream into an AST, applying transforms from the grammar or table when present.
|
|
85
85
|
*
|
|
86
86
|
* @param tokens - Token stream ending with `$eof`.
|
|
87
|
-
* @returns
|
|
87
|
+
* @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
|
|
88
88
|
*/
|
|
89
89
|
parse(tokens: readonly Token[]): AstNode | null;
|
|
90
90
|
/**
|
|
91
|
-
* Lexes and parses source text into
|
|
91
|
+
* Lexes and parses source text into an AST, applying transforms when present.
|
|
92
92
|
*
|
|
93
93
|
* @param source - Input text to parse.
|
|
94
|
-
* @returns
|
|
94
|
+
* @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
|
|
95
95
|
*/
|
|
96
96
|
parseSource(source: string): AstNode | null;
|
|
97
97
|
}
|
|
@@ -35,8 +35,8 @@ export class ParseContext {
|
|
|
35
35
|
/**
|
|
36
36
|
* Builds a parse context from serialized parse table JSON.
|
|
37
37
|
*
|
|
38
|
-
* @param json - Serialized parse table JSON.
|
|
39
|
-
* @returns Parser and parse table ready for lexing
|
|
38
|
+
* @param json - Serialized parse table JSON including `ast` and `transform` when present.
|
|
39
|
+
* @returns Parser and parse table ready for lexing and full AST parsing.
|
|
40
40
|
*/
|
|
41
41
|
static fromTableJson(json) {
|
|
42
42
|
const table = ParseTable.fromJsonString(json);
|
|
@@ -112,19 +112,19 @@ export class ParseContext {
|
|
|
112
112
|
return this.parser.lexChunkStreamAsync(chunks);
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
115
|
-
* Parses a token stream into
|
|
115
|
+
* Parses a token stream into an AST, applying transforms from the grammar or table when present.
|
|
116
116
|
*
|
|
117
117
|
* @param tokens - Token stream ending with `$eof`.
|
|
118
|
-
* @returns
|
|
118
|
+
* @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
|
|
119
119
|
*/
|
|
120
120
|
parse(tokens) {
|
|
121
121
|
return this.parser.parse(tokens);
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
|
-
* Lexes and parses source text into
|
|
124
|
+
* Lexes and parses source text into an AST, applying transforms when present.
|
|
125
125
|
*
|
|
126
126
|
* @param source - Input text to parse.
|
|
127
|
-
* @returns
|
|
127
|
+
* @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
|
|
128
128
|
*/
|
|
129
129
|
parseSource(source) {
|
|
130
130
|
return this.parser.parseSource(source);
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { AstType } from '../grammar/ast-type.js';
|
|
2
|
+
import type { TransformRule } from '../grammar/transform-rule.js';
|
|
1
3
|
import type { ParseTableJson } from './parse-table.js';
|
|
2
4
|
/**
|
|
3
5
|
* Serialized production metadata referenced by reduce actions.
|
|
@@ -36,6 +38,8 @@ export interface ParseTableJsonV2 extends ParseTableJson {
|
|
|
36
38
|
readonly productions: readonly ParseTableProductionJson[];
|
|
37
39
|
readonly actions: readonly ParseTableActionJson[];
|
|
38
40
|
readonly gotos: readonly ParseTableGotoJson[];
|
|
41
|
+
readonly ast?: readonly AstType[];
|
|
42
|
+
readonly transform?: readonly TransformRule[];
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
41
45
|
* Returns whether a JSON object is a version 2 parse table payload.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-table-json.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAErC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IAEpD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,gBAAgB,CAGjF;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"parse-table-json.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IAErC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IAEpD,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC1D,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACjD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,gBAAgB,CAGjF;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-table-json.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-table-json.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table-json.ts"],"names":[],"mappings":"AAqDA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IAEnD,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { AstSchema } from '../grammar/ast-schema.js';
|
|
2
|
+
import type { AstType } from '../grammar/ast-type.js';
|
|
1
3
|
import { Grammar } from '../grammar/grammar.js';
|
|
2
4
|
import type { TokenRule } from '../grammar/token-rule.js';
|
|
5
|
+
import type { TransformRule } from '../grammar/transform-rule.js';
|
|
6
|
+
import { TransformSchema } from '../grammar/transform-schema.js';
|
|
3
7
|
import type { LrAlgorithm } from './lr-algorithm.js';
|
|
4
8
|
import { type ParseTableActionJson, type ParseTableGotoJson, type ParseTableProductionJson } from './parse-table-json.js';
|
|
5
9
|
import type { ParseAction, ParseConflict } from './table/parse-action.js';
|
|
@@ -23,6 +27,8 @@ export interface ParseTableJson {
|
|
|
23
27
|
readonly productions?: readonly ParseTableProductionJson[];
|
|
24
28
|
readonly actions?: readonly ParseTableActionJson[];
|
|
25
29
|
readonly gotos?: readonly ParseTableGotoJson[];
|
|
30
|
+
readonly ast?: readonly AstType[];
|
|
31
|
+
readonly transform?: readonly TransformRule[];
|
|
26
32
|
}
|
|
27
33
|
/**
|
|
28
34
|
* LR parse table metadata, including lexer inventory and parser table entries.
|
|
@@ -37,6 +43,8 @@ export declare class ParseTable {
|
|
|
37
43
|
readonly algorithm: LrAlgorithm;
|
|
38
44
|
readonly parserStateCount: number;
|
|
39
45
|
readonly conflicts: readonly ParseConflict[];
|
|
46
|
+
readonly astSchema: AstSchema | null;
|
|
47
|
+
readonly transformSchema: TransformSchema | null;
|
|
40
48
|
private readonly actionByState;
|
|
41
49
|
private readonly gotoByState;
|
|
42
50
|
private readonly productionById;
|
|
@@ -55,8 +63,10 @@ export declare class ParseTable {
|
|
|
55
63
|
* @param actions - ACTION entries keyed by state and terminal symbol.
|
|
56
64
|
* @param gotos - GOTO entries keyed by state and non-terminal name.
|
|
57
65
|
* @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
|
|
66
|
+
* @param astSchema - AST types from the `ast` section, or null when absent.
|
|
67
|
+
* @param transformSchema - CST-to-AST rules from the `transform` section, or null when absent.
|
|
58
68
|
*/
|
|
59
|
-
constructor(grammarName: string, startSymbol: string, tokens: readonly string[], tokenRules: readonly TokenRule[], skipRules: readonly TokenRule[], states: readonly string[], algorithm: LrAlgorithm, parserStateCount?: number, productions?: readonly ParseTableProductionJson[], actions?: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos?: ReadonlyMap<number, ReadonlyMap<string, number>>, conflicts?: readonly ParseConflict[]);
|
|
69
|
+
constructor(grammarName: string, startSymbol: string, tokens: readonly string[], tokenRules: readonly TokenRule[], skipRules: readonly TokenRule[], states: readonly string[], algorithm: LrAlgorithm, parserStateCount?: number, productions?: readonly ParseTableProductionJson[], actions?: ReadonlyMap<number, ReadonlyMap<string, ParseAction>>, gotos?: ReadonlyMap<number, ReadonlyMap<string, number>>, conflicts?: readonly ParseConflict[], astSchema?: AstSchema | null, transformSchema?: TransformSchema | null);
|
|
60
70
|
/**
|
|
61
71
|
* Whether the table includes parser ACTION/GOTO entries.
|
|
62
72
|
*/
|
|
@@ -104,9 +114,9 @@ export declare class ParseTable {
|
|
|
104
114
|
*/
|
|
105
115
|
toJson(): ParseTableJson;
|
|
106
116
|
/**
|
|
107
|
-
* Builds a grammar
|
|
117
|
+
* Builds a grammar from this table, including AST and transform schemas when present.
|
|
108
118
|
*
|
|
109
|
-
* @returns A grammar suitable for lexing
|
|
119
|
+
* @returns A grammar suitable for lexing and CST-to-AST transforms.
|
|
110
120
|
*/
|
|
111
121
|
toGrammar(): Grammar;
|
|
112
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-table.d.ts","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { AstSchema } from '../grammar/ast-schema.js';
|
|
1
2
|
import { Grammar } from '../grammar/grammar.js';
|
|
3
|
+
import { TransformSchema } from '../grammar/transform-schema.js';
|
|
2
4
|
import { desugarEbnf } from './bnf/desugar-ebnf.js';
|
|
3
5
|
import { buildLrTable } from './build-lr-table.js';
|
|
4
6
|
import { ParseTableError } from './parse-table-error.js';
|
|
@@ -22,6 +24,8 @@ export class ParseTable {
|
|
|
22
24
|
algorithm;
|
|
23
25
|
parserStateCount;
|
|
24
26
|
conflicts;
|
|
27
|
+
astSchema;
|
|
28
|
+
transformSchema;
|
|
25
29
|
actionByState;
|
|
26
30
|
gotoByState;
|
|
27
31
|
productionById;
|
|
@@ -40,8 +44,10 @@ export class ParseTable {
|
|
|
40
44
|
* @param actions - ACTION entries keyed by state and terminal symbol.
|
|
41
45
|
* @param gotos - GOTO entries keyed by state and non-terminal name.
|
|
42
46
|
* @param conflicts - Shift/reduce and reduce/reduce conflicts resolved during construction.
|
|
47
|
+
* @param astSchema - AST types from the `ast` section, or null when absent.
|
|
48
|
+
* @param transformSchema - CST-to-AST rules from the `transform` section, or null when absent.
|
|
43
49
|
*/
|
|
44
|
-
constructor(grammarName, startSymbol, tokens, tokenRules, skipRules, states, algorithm, parserStateCount = 0, productions = [], actions = new Map(), gotos = new Map(), conflicts = []) {
|
|
50
|
+
constructor(grammarName, startSymbol, tokens, tokenRules, skipRules, states, algorithm, parserStateCount = 0, productions = [], actions = new Map(), gotos = new Map(), conflicts = [], astSchema = null, transformSchema = null) {
|
|
45
51
|
this.grammarName = grammarName;
|
|
46
52
|
this.startSymbol = startSymbol;
|
|
47
53
|
this.tokens = tokens;
|
|
@@ -51,6 +57,8 @@ export class ParseTable {
|
|
|
51
57
|
this.algorithm = algorithm;
|
|
52
58
|
this.parserStateCount = parserStateCount;
|
|
53
59
|
this.conflicts = conflicts;
|
|
60
|
+
this.astSchema = astSchema;
|
|
61
|
+
this.transformSchema = transformSchema;
|
|
54
62
|
this.actionByState = actions;
|
|
55
63
|
this.gotoByState = gotos;
|
|
56
64
|
const productionById = new Map();
|
|
@@ -103,7 +111,13 @@ export class ParseTable {
|
|
|
103
111
|
if (!isParseTableJsonV2(json)) {
|
|
104
112
|
return new ParseTable(json.grammarName, json.startSymbol, [...json.tokens], [...json.tokenRules], [...json.skipRules], [...json.states], json.algorithm);
|
|
105
113
|
}
|
|
106
|
-
|
|
114
|
+
const astSchema = json.ast === undefined
|
|
115
|
+
? null
|
|
116
|
+
: new AstSchema([...json.ast]);
|
|
117
|
+
const transformSchema = json.transform === undefined
|
|
118
|
+
? null
|
|
119
|
+
: new TransformSchema([...json.transform]);
|
|
120
|
+
return new ParseTable(json.grammarName, json.startSymbol, [...json.tokens], [...json.tokenRules], [...json.skipRules], [...json.states], json.algorithm, json.parserStateCount, [...json.productions], ParseTable.actionsFromJson(json.actions), ParseTable.gotosFromJson(json.gotos), [], astSchema, transformSchema);
|
|
107
121
|
}
|
|
108
122
|
/**
|
|
109
123
|
* Parses a parse table from a JSON string.
|
|
@@ -161,16 +175,18 @@ export class ParseTable {
|
|
|
161
175
|
productions: [...this.productionById.values()].sort((left, right) => left.id - right.id),
|
|
162
176
|
actions: ParseTable.actionsToJson(this.actionByState),
|
|
163
177
|
gotos: ParseTable.gotosToJson(this.gotoByState),
|
|
178
|
+
...(this.astSchema === null ? {} : { ast: [...this.astSchema.types] }),
|
|
179
|
+
...(this.transformSchema === null ? {} : { transform: [...this.transformSchema.rules] }),
|
|
164
180
|
};
|
|
165
181
|
return json;
|
|
166
182
|
}
|
|
167
183
|
/**
|
|
168
|
-
* Builds a grammar
|
|
184
|
+
* Builds a grammar from this table, including AST and transform schemas when present.
|
|
169
185
|
*
|
|
170
|
-
* @returns A grammar suitable for lexing
|
|
186
|
+
* @returns A grammar suitable for lexing and CST-to-AST transforms.
|
|
171
187
|
*/
|
|
172
188
|
toGrammar() {
|
|
173
|
-
return new Grammar(this.grammarName, this.tokenRules, this.skipRules, this.states, this.startSymbol, []);
|
|
189
|
+
return new Grammar(this.grammarName, this.tokenRules, this.skipRules, this.states, this.startSymbol, [], this.astSchema, this.transformSchema);
|
|
174
190
|
}
|
|
175
191
|
/**
|
|
176
192
|
* Returns the ACTION entry for a parser state and terminal symbol key.
|
|
@@ -212,7 +228,7 @@ export class ParseTable {
|
|
|
212
228
|
variant: production.variant,
|
|
213
229
|
origin: production.origin,
|
|
214
230
|
}));
|
|
215
|
-
return new ParseTable(grammar.name, grammar.startSymbol, tokenInventory(grammar), [...grammar.tokenRules], [...grammar.skipRules], [...grammar.states], lrTable.algorithm, lrTable.stateCount, productions, lrTable.actions, lrTable.gotos, [...lrTable.conflicts]);
|
|
231
|
+
return new ParseTable(grammar.name, grammar.startSymbol, tokenInventory(grammar), [...grammar.tokenRules], [...grammar.skipRules], [...grammar.states], lrTable.algorithm, lrTable.stateCount, productions, lrTable.actions, lrTable.gotos, [...lrTable.conflicts], grammar.astSchema, grammar.transformSchema);
|
|
216
232
|
}
|
|
217
233
|
/**
|
|
218
234
|
* Converts ACTION maps into JSON rows.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACH,kBAAkB,GAKrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,mBAAmB,EACnB,0BAA0B,GAE7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,oDAAoD;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-table.js","sourceRoot":"","sources":["../../../src/lib/parse-table/parse-table.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/parser-lr.d.ts
CHANGED
|
@@ -20,8 +20,8 @@ export declare class ParserLr {
|
|
|
20
20
|
/**
|
|
21
21
|
* Creates a parser from a serialized parse table.
|
|
22
22
|
*
|
|
23
|
-
* @param table - Parse table containing lexer metadata and
|
|
24
|
-
* @returns A parser that
|
|
23
|
+
* @param table - Parse table containing lexer metadata, parser entries, and optional AST transforms.
|
|
24
|
+
* @returns A parser that lexes, parses, and applies transforms from the table JSON.
|
|
25
25
|
*/
|
|
26
26
|
static fromParseTable(table: ParseTable): ParserLr;
|
|
27
27
|
/**
|
package/dist/lib/parser-lr.js
CHANGED
|
@@ -21,8 +21,8 @@ export class ParserLr {
|
|
|
21
21
|
/**
|
|
22
22
|
* Creates a parser from a serialized parse table.
|
|
23
23
|
*
|
|
24
|
-
* @param table - Parse table containing lexer metadata and
|
|
25
|
-
* @returns A parser that
|
|
24
|
+
* @param table - Parse table containing lexer metadata, parser entries, and optional AST transforms.
|
|
25
|
+
* @returns A parser that lexes, parses, and applies transforms from the table JSON.
|
|
26
26
|
*/
|
|
27
27
|
static fromParseTable(table) {
|
|
28
28
|
return new ParserLr(table.toGrammar(), table);
|
package/docs/grammar.md
CHANGED
|
@@ -162,9 +162,9 @@ See [`grammars/calc.grammar`](../grammars/calc.grammar) for a small working gram
|
|
|
162
162
|
## Building and using a grammar
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
parser-lr table generate -g mylang.grammar -o mylang.
|
|
165
|
+
parser-lr table generate -g mylang.grammar -o mylang.json
|
|
166
166
|
parser-lr parse -i source.txt -g mylang.grammar
|
|
167
|
-
parser-lr parse -i source.txt -t mylang.
|
|
167
|
+
parser-lr parse -i source.txt -t mylang.json
|
|
168
168
|
```
|
|
169
169
|
|
|
170
170
|
See the [project README](../README.md) for install and library usage.
|