parser-lr 0.7.0 → 0.8.1
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/bin/parser-lr.js +404 -874
- package/bin/parser-lr.js.map +1 -1
- package/dist/lib/diagnostics/format-diagnostic.d.ts +31 -0
- package/dist/lib/diagnostics/format-diagnostic.d.ts.map +1 -0
- package/dist/lib/diagnostics/format-diagnostic.js +36 -0
- package/dist/lib/diagnostics/format-diagnostic.js.map +1 -0
- package/dist/lib/diagnostics/index.d.ts +5 -0
- package/dist/lib/diagnostics/index.d.ts.map +1 -0
- package/dist/lib/diagnostics/index.js +3 -0
- package/dist/lib/diagnostics/index.js.map +1 -0
- package/dist/lib/diagnostics/source-position.d.ts +24 -0
- package/dist/lib/diagnostics/source-position.d.ts.map +1 -0
- package/dist/lib/diagnostics/source-position.js +39 -0
- package/dist/lib/diagnostics/source-position.js.map +1 -0
- package/dist/lib/grammar/ast-type.d.ts +2 -0
- package/dist/lib/grammar/ast-type.d.ts.map +1 -1
- package/dist/lib/grammar/grammar-from-cst.js +8 -4
- package/dist/lib/grammar/grammar-from-cst.js.map +1 -1
- package/dist/lib/grammar/grammar.json +86 -820
- package/dist/lib/grammar/index.d.ts +1 -1
- package/dist/lib/grammar/index.d.ts.map +1 -1
- package/dist/lib/grammar/production.d.ts +2 -0
- package/dist/lib/grammar/production.d.ts.map +1 -1
- package/dist/lib/grammar/table-validator.d.ts +12 -2
- package/dist/lib/grammar/table-validator.d.ts.map +1 -1
- package/dist/lib/grammar/table-validator.js +68 -25
- package/dist/lib/grammar/table-validator.js.map +1 -1
- package/dist/lib/grammar/transform-rule.d.ts +3 -0
- package/dist/lib/grammar/transform-rule.d.ts.map +1 -1
- package/dist/lib/grammar-entry.d.ts +1 -1
- package/dist/lib/grammar-entry.d.ts.map +1 -1
- package/dist/lib/grammar-entry.js.map +1 -1
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parse-context.d.ts +7 -0
- package/dist/lib/parse-context.d.ts.map +1 -1
- package/dist/lib/parse-context.js +9 -0
- package/dist/lib/parse-context.js.map +1 -1
- package/dist/lib/parse-table/table/lr-parse-table.d.ts.map +1 -1
- package/dist/lib/parse-table/table/lr-parse-table.js +10 -3
- package/dist/lib/parse-table/table/lr-parse-table.js.map +1 -1
- package/dist/lib/parser-lr.d.ts +15 -0
- package/dist/lib/parser-lr.d.ts.map +1 -1
- package/dist/lib/parser-lr.js +38 -9
- package/dist/lib/parser-lr.js.map +1 -1
- package/docs/The Ferrite Programming Language.md +568 -0
- package/docs/grammar.md +55 -3
- package/grammars/6502.grammar +2 -2
- package/grammars/ferrite.grammar +107 -97
- package/grammars/grammar.grammar +19 -140
- package/grammars/lisp.grammar +3 -2
- package/package.json +1 -1
|
@@ -12,5 +12,5 @@ export type { BuildTransform, DropTransform, FlattenTransform, FoldLeftTransform
|
|
|
12
12
|
export type { TransformAlternative, TransformRule } from './transform-rule.js';
|
|
13
13
|
export { TransformSchema } from './transform-schema.js';
|
|
14
14
|
export { formatTableValidationIssues, validateGrammarTable, } from './table-validator.js';
|
|
15
|
-
export type { TableValidationIssue, TableValidationSeverity } from './table-validator.js';
|
|
15
|
+
export type { FormatTableValidationOptions, TableValidationIssue, TableValidationSeverity, } from './table-validator.js';
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACR,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SourceLocation } from '../ast/ast-node.js';
|
|
1
2
|
import type { Expression } from './expression.js';
|
|
2
3
|
/**
|
|
3
4
|
* Named production (`identifier = expression ;`).
|
|
@@ -5,5 +6,6 @@ import type { Expression } from './expression.js';
|
|
|
5
6
|
export interface Production {
|
|
6
7
|
readonly name: string;
|
|
7
8
|
readonly expression: Expression;
|
|
9
|
+
readonly location?: SourceLocation | null;
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=production.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/production.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/production.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC7C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SourceLocation } from '../ast/ast-node.js';
|
|
1
2
|
import type { Grammar } from './grammar.js';
|
|
2
3
|
/**
|
|
3
4
|
* Severity of one grammar table validation issue.
|
|
@@ -9,6 +10,14 @@ export type TableValidationSeverity = 'error' | 'warning';
|
|
|
9
10
|
export interface TableValidationIssue {
|
|
10
11
|
readonly severity: TableValidationSeverity;
|
|
11
12
|
readonly message: string;
|
|
13
|
+
readonly location: SourceLocation | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Optional path and source text used when formatting validation diagnostics.
|
|
17
|
+
*/
|
|
18
|
+
export interface FormatTableValidationOptions {
|
|
19
|
+
readonly path?: string | null;
|
|
20
|
+
readonly source?: string | null;
|
|
12
21
|
}
|
|
13
22
|
/**
|
|
14
23
|
* Validates transform and AST consistency for a parsed grammar.
|
|
@@ -18,9 +27,10 @@ export interface TableValidationIssue {
|
|
|
18
27
|
*/
|
|
19
28
|
export declare function validateGrammarTable(grammar: Grammar): TableValidationIssue[];
|
|
20
29
|
/**
|
|
21
|
-
* Formats validation issues as stderr
|
|
30
|
+
* Formats validation issues as stderr diagnostic lines.
|
|
22
31
|
*
|
|
23
32
|
* @param issues - Validation issues to format.
|
|
33
|
+
* @param options - Optional grammar path and source text for line numbers.
|
|
24
34
|
*/
|
|
25
|
-
export declare function formatTableValidationIssues(issues: readonly TableValidationIssue[]): string[];
|
|
35
|
+
export declare function formatTableValidationIssues(issues: readonly TableValidationIssue[], options?: FormatTableValidationOptions): string[];
|
|
26
36
|
//# sourceMappingURL=table-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-validator.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAM5C;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAEzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAiC7E;AA4YD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,OAAO,GAAE,4BAAiC,GAC3C,MAAM,EAAE,CASV"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { formatDiagnostic } from '../diagnostics/format-diagnostic.js';
|
|
1
2
|
import { EbnfDesugarer } from '../parse-table/bnf/desugar-ebnf.js';
|
|
2
3
|
/**
|
|
3
4
|
* Validates transform and AST consistency for a parsed grammar.
|
|
@@ -14,8 +15,8 @@ export function validateGrammarTable(grammar) {
|
|
|
14
15
|
for (const rule of grammar.transformSchema.rules) {
|
|
15
16
|
validateTransformProductionExists(rule, bnfProductionNames, issues);
|
|
16
17
|
for (const alternative of rule.alternatives) {
|
|
17
|
-
validateTransformExpression(grammar, alternative
|
|
18
|
-
collectPassCollapseWarnings(grammar, rule, alternative
|
|
18
|
+
validateTransformExpression(grammar, alternative, issues);
|
|
19
|
+
collectPassCollapseWarnings(grammar, rule, alternative, bnf.productions, issues);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
}
|
|
@@ -34,37 +35,47 @@ export function validateGrammarTable(grammar) {
|
|
|
34
35
|
*/
|
|
35
36
|
function collectDuplicateDefinitionWarnings(grammar, issues) {
|
|
36
37
|
// Flag repeated production names in the grammar section.
|
|
37
|
-
|
|
38
|
+
reportDuplicateDefinitions(grammar.productions.map((production) => ({
|
|
39
|
+
name: production.name,
|
|
40
|
+
location: production.location ?? null,
|
|
41
|
+
})), 'grammar', 'production', issues);
|
|
38
42
|
// Flag repeated ast type names.
|
|
39
43
|
if (grammar.astSchema !== null) {
|
|
40
|
-
|
|
44
|
+
reportDuplicateDefinitions(grammar.astSchema.types.map((type) => ({
|
|
45
|
+
name: type.name,
|
|
46
|
+
location: type.location ?? null,
|
|
47
|
+
})), 'ast', 'type', issues);
|
|
41
48
|
}
|
|
42
49
|
// Flag repeated transform rules for the same production.
|
|
43
50
|
if (grammar.transformSchema !== null) {
|
|
44
|
-
|
|
51
|
+
reportDuplicateDefinitions(grammar.transformSchema.rules.map((rule) => ({
|
|
52
|
+
name: rule.production,
|
|
53
|
+
location: rule.location ?? null,
|
|
54
|
+
})), 'transform', 'rule', issues);
|
|
45
55
|
}
|
|
46
56
|
}
|
|
47
57
|
/**
|
|
48
58
|
* Records a warning for each name that appears more than once.
|
|
49
59
|
*
|
|
50
|
-
* @param
|
|
60
|
+
* @param definitions - Declared names and locations in source order.
|
|
51
61
|
* @param section - Grammar section name for the message.
|
|
52
62
|
* @param kind - Declaration kind for the message.
|
|
53
63
|
* @param issues - Issue list to append to.
|
|
54
64
|
*/
|
|
55
|
-
function
|
|
65
|
+
function reportDuplicateDefinitions(definitions, section, kind, issues) {
|
|
56
66
|
const seen = new Set();
|
|
57
67
|
const reported = new Set();
|
|
58
|
-
for (const
|
|
59
|
-
if (seen.has(name) && !reported.has(name)) {
|
|
68
|
+
for (const definition of definitions) {
|
|
69
|
+
if (seen.has(definition.name) && !reported.has(definition.name)) {
|
|
60
70
|
issues.push({
|
|
61
71
|
severity: 'warning',
|
|
62
|
-
message: `duplicate ${section} ${kind} ${JSON.stringify(name)}; `
|
|
72
|
+
message: `duplicate ${section} ${kind} ${JSON.stringify(definition.name)}; `
|
|
63
73
|
+ `the later definition overrides the earlier one`,
|
|
74
|
+
location: definition.location,
|
|
64
75
|
});
|
|
65
|
-
reported.add(name);
|
|
76
|
+
reported.add(definition.name);
|
|
66
77
|
}
|
|
67
|
-
seen.add(name);
|
|
78
|
+
seen.add(definition.name);
|
|
68
79
|
}
|
|
69
80
|
}
|
|
70
81
|
/**
|
|
@@ -75,29 +86,50 @@ function reportDuplicateNames(names, section, kind, issues) {
|
|
|
75
86
|
* @param issues - Issue list to append to.
|
|
76
87
|
*/
|
|
77
88
|
function validateTransformProductionExists(rule, bnfProductionNames, issues) {
|
|
78
|
-
|
|
89
|
+
// Accept direct production names.
|
|
90
|
+
if (bnfProductionNames.has(rule.production)) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Match authored `$repeat_0` aliases to globally numbered repeats.
|
|
94
|
+
const repeatPrefix = syntheticRepeatPrefix(rule.production);
|
|
95
|
+
const matchesRepeat = repeatPrefix !== null
|
|
96
|
+
&& [...bnfProductionNames].some((productionName) => syntheticRepeatPrefix(productionName) === repeatPrefix);
|
|
97
|
+
if (!matchesRepeat) {
|
|
79
98
|
issues.push({
|
|
80
99
|
severity: 'error',
|
|
81
100
|
message: `transform rule for unknown production ${JSON.stringify(rule.production)}`,
|
|
101
|
+
location: rule.location ?? null,
|
|
82
102
|
});
|
|
83
103
|
}
|
|
84
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns the stable prefix of a numbered synthetic repeat production.
|
|
107
|
+
*
|
|
108
|
+
* @param name - Production or transform-rule name.
|
|
109
|
+
* @returns Prefix ending in `$repeat`, or null for a regular production.
|
|
110
|
+
*/
|
|
111
|
+
function syntheticRepeatPrefix(name) {
|
|
112
|
+
const match = /^(.+\$repeat)_\d+$/.exec(name);
|
|
113
|
+
return match?.[1] ?? null;
|
|
114
|
+
}
|
|
85
115
|
/**
|
|
86
116
|
* Validates one transform expression against the grammar AST schema.
|
|
87
117
|
*
|
|
88
118
|
* @param grammar - Parsed grammar model.
|
|
89
|
-
* @param
|
|
119
|
+
* @param alternative - Transform alternative owning the expression.
|
|
90
120
|
* @param issues - Issue list to append to.
|
|
91
121
|
*/
|
|
92
|
-
function validateTransformExpression(grammar,
|
|
122
|
+
function validateTransformExpression(grammar, alternative, issues) {
|
|
123
|
+
const expression = alternative.expression;
|
|
124
|
+
const location = alternative.location ?? null;
|
|
93
125
|
switch (expression.kind) {
|
|
94
126
|
case 'build':
|
|
95
|
-
validateAstTarget(grammar, expression.typeName, expression.variant, issues);
|
|
127
|
+
validateAstTarget(grammar, expression.typeName, expression.variant, location, issues);
|
|
96
128
|
break;
|
|
97
129
|
case 'foldLeft':
|
|
98
130
|
case 'foldRight':
|
|
99
131
|
case 'flatten':
|
|
100
|
-
validateAstTarget(grammar, expression.typeName, expression.variant, issues);
|
|
132
|
+
validateAstTarget(grammar, expression.typeName, expression.variant, location, issues);
|
|
101
133
|
break;
|
|
102
134
|
case 'drop':
|
|
103
135
|
case 'pass':
|
|
@@ -110,13 +142,15 @@ function validateTransformExpression(grammar, expression, issues) {
|
|
|
110
142
|
* @param grammar - Parsed grammar model.
|
|
111
143
|
* @param typeName - AST type name from a transform expression.
|
|
112
144
|
* @param variant - AST variant label from a transform expression.
|
|
145
|
+
* @param location - Source span of the transform alternative.
|
|
113
146
|
* @param issues - Issue list to append to.
|
|
114
147
|
*/
|
|
115
|
-
function validateAstTarget(grammar, typeName, variant, issues) {
|
|
148
|
+
function validateAstTarget(grammar, typeName, variant, location, issues) {
|
|
116
149
|
if (grammar.astSchema === null) {
|
|
117
150
|
issues.push({
|
|
118
151
|
severity: 'error',
|
|
119
152
|
message: `transform references ${typeName}.${variant} but the grammar has no ast section`,
|
|
153
|
+
location,
|
|
120
154
|
});
|
|
121
155
|
return;
|
|
122
156
|
}
|
|
@@ -125,6 +159,7 @@ function validateAstTarget(grammar, typeName, variant, issues) {
|
|
|
125
159
|
issues.push({
|
|
126
160
|
severity: 'error',
|
|
127
161
|
message: `transform references undefined ast type ${JSON.stringify(typeName)}`,
|
|
162
|
+
location,
|
|
128
163
|
});
|
|
129
164
|
return;
|
|
130
165
|
}
|
|
@@ -133,6 +168,7 @@ function validateAstTarget(grammar, typeName, variant, issues) {
|
|
|
133
168
|
issues.push({
|
|
134
169
|
severity: 'error',
|
|
135
170
|
message: `transform references ${typeName}.${variant} which is not declared in ast`,
|
|
171
|
+
location,
|
|
136
172
|
});
|
|
137
173
|
}
|
|
138
174
|
}
|
|
@@ -163,11 +199,12 @@ function collectAstVariants(expression) {
|
|
|
163
199
|
*
|
|
164
200
|
* @param grammar - Parsed grammar model.
|
|
165
201
|
* @param rule - Parent production transform rule.
|
|
166
|
-
* @param
|
|
202
|
+
* @param alternative - Transform alternative containing the pass expression.
|
|
167
203
|
* @param bnfProductions - Desugared BNF productions.
|
|
168
204
|
* @param issues - Issue list to append to.
|
|
169
205
|
*/
|
|
170
|
-
function collectPassCollapseWarnings(grammar, rule,
|
|
206
|
+
function collectPassCollapseWarnings(grammar, rule, alternative, bnfProductions, issues) {
|
|
207
|
+
const expression = alternative.expression;
|
|
171
208
|
if (expression.kind !== 'pass') {
|
|
172
209
|
return;
|
|
173
210
|
}
|
|
@@ -190,6 +227,7 @@ function collectPassCollapseWarnings(grammar, rule, expression, bnfProductions,
|
|
|
190
227
|
message: `pass(${expression.reference}) on ${rule.production} binds ${boundSymbol} `
|
|
191
228
|
+ `which has no transform rule and can match a single terminal; `
|
|
192
229
|
+ `add a transform for ${boundSymbol} or use build`,
|
|
230
|
+
location: alternative.location ?? null,
|
|
193
231
|
});
|
|
194
232
|
}
|
|
195
233
|
/**
|
|
@@ -246,13 +284,18 @@ function isTerminalSymbol(symbol) {
|
|
|
246
284
|
return symbol?.kind === 'terminal' || symbol?.kind === 'token';
|
|
247
285
|
}
|
|
248
286
|
/**
|
|
249
|
-
* Formats validation issues as stderr
|
|
287
|
+
* Formats validation issues as stderr diagnostic lines.
|
|
250
288
|
*
|
|
251
289
|
* @param issues - Validation issues to format.
|
|
290
|
+
* @param options - Optional grammar path and source text for line numbers.
|
|
252
291
|
*/
|
|
253
|
-
export function formatTableValidationIssues(issues) {
|
|
254
|
-
return issues.map((issue) =>
|
|
255
|
-
|
|
256
|
-
:
|
|
292
|
+
export function formatTableValidationIssues(issues, options = {}) {
|
|
293
|
+
return issues.map((issue) => formatDiagnostic({
|
|
294
|
+
severity: issue.severity,
|
|
295
|
+
message: issue.message,
|
|
296
|
+
path: options.path,
|
|
297
|
+
source: options.source,
|
|
298
|
+
location: issue.location,
|
|
299
|
+
}));
|
|
257
300
|
}
|
|
258
301
|
//# sourceMappingURL=table-validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-validator.js","sourceRoot":"","sources":["../../../src/lib/grammar/table-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SourceLocation } from '../ast/ast-node.js';
|
|
1
2
|
import type { TransformExpression } from './transform-expression.js';
|
|
2
3
|
/**
|
|
3
4
|
* Maps one CST `#` alternative to a transform expression.
|
|
@@ -5,6 +6,7 @@ import type { TransformExpression } from './transform-expression.js';
|
|
|
5
6
|
export interface TransformAlternative {
|
|
6
7
|
readonly label: string;
|
|
7
8
|
readonly expression: TransformExpression;
|
|
9
|
+
readonly location?: SourceLocation | null;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* CST production transform (`production -> #alt expr | … ;`).
|
|
@@ -12,5 +14,6 @@ export interface TransformAlternative {
|
|
|
12
14
|
export interface TransformRule {
|
|
13
15
|
readonly production: string;
|
|
14
16
|
readonly alternatives: readonly TransformAlternative[];
|
|
17
|
+
readonly location?: SourceLocation | null;
|
|
15
18
|
}
|
|
16
19
|
//# sourceMappingURL=transform-rule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-rule.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/transform-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"transform-rule.d.ts","sourceRoot":"","sources":["../../../src/lib/grammar/transform-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IAEjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC7C"}
|
|
@@ -13,7 +13,7 @@ export type { BuildTransform, DropTransform, FlattenTransform, FoldLeftTransform
|
|
|
13
13
|
export type { TransformAlternative, TransformRule } from './grammar/transform-rule.js';
|
|
14
14
|
export { TransformSchema } from './grammar/transform-schema.js';
|
|
15
15
|
export { formatTableValidationIssues, validateGrammarTable, } from './grammar/table-validator.js';
|
|
16
|
-
export type { TableValidationIssue, TableValidationSeverity } from './grammar/table-validator.js';
|
|
16
|
+
export type { FormatTableValidationOptions, TableValidationIssue, TableValidationSeverity, } from './grammar/table-validator.js';
|
|
17
17
|
import { ParseContext } from './parse-context.js';
|
|
18
18
|
import type { LrAlgorithm } from './parse-table/lr-algorithm.js';
|
|
19
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar-entry.d.ts","sourceRoot":"","sources":["../../src/lib/grammar-entry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,
|
|
1
|
+
{"version":3,"file":"grammar-entry.d.ts","sourceRoot":"","sources":["../../src/lib/grammar-entry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,4BAA4B,EAC5B,oBAAoB,EACpB,uBAAuB,GAC1B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAKjE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,WAAmB,GAC/B,YAAY,CAOd;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAEvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,0BAA0B,GAAG,YAAY,CAiBzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar-entry.js","sourceRoot":"","sources":["../../src/lib/grammar-entry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAapD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAanE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"grammar-entry.js","sourceRoot":"","sources":["../../src/lib/grammar-entry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAapD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAanE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACH,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACnC,MAAc,EACd,YAAyB,KAAK;IAG9B,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE5C,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAYD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAmC;IAEvE,mEAAmE;IACnE,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EACvC,CAAC;QACG,OAAO,uBAAuB,CAC1B,OAAO,CAAC,aAAa,EACrB,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CACtC,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EACnC,CAAC;QACG,OAAO,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,IAAI,iBAAiB,CAAC,wCAAwC,CAAC,CAAC;AAC1E,CAAC"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -16,12 +16,15 @@ export type { CompiledLexerRules, CompiledRule, Token } from './lexer/index.js';
|
|
|
16
16
|
export { LrAlgorithmError, PARSE_TABLE_VERSION, ParseTable, ParseTableError, isLrAlgorithm, parseLrAlgorithm, tokenInventory } from './parse-table/index.js';
|
|
17
17
|
export type { LrAlgorithm, ParseTableJson } from './parse-table/index.js';
|
|
18
18
|
export { formatUserError, isParserLrError, messageContainsStackTrace, ParserLrError } from './errors/index.js';
|
|
19
|
+
export { formatDiagnostic, formatDiagnosticLocationPrefix, offsetToPosition, resolveDiagnosticOffset, } from './diagnostics/index.js';
|
|
20
|
+
export type { DiagnosticSeverity, FormatDiagnosticOptions, SourcePosition } from './diagnostics/index.js';
|
|
19
21
|
export { ParseContextError } from './parse-context-error.js';
|
|
20
22
|
export { ParseOutputError } from './parse-output-error.js';
|
|
21
23
|
export { ParseContext } from './parse-context.js';
|
|
22
24
|
export type { ParseContextSources } from './parse-context.js';
|
|
23
25
|
export { formatParseOutput } from './parse-output.js';
|
|
24
26
|
export { ParserLr } from './parser-lr.js';
|
|
27
|
+
export type { ParserLrParseResult } from './parser-lr.js';
|
|
25
28
|
export { parseWithTable, parseWithTableResult, ShiftReduceEngine } from './shift-reduce/index.js';
|
|
26
29
|
export type { ShiftReduceParseResult } from './shift-reduce/index.js';
|
|
27
30
|
export { transformCst, CstTransformer } from './transform/index.js';
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7J,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EACR,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACtB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7J,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EACH,gBAAgB,EAChB,8BAA8B,EAC9B,gBAAgB,EAChB,uBAAuB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { Lexer, LexerCompileError, LexerInputError, LexerStateError, lexChunkStr
|
|
|
6
6
|
export { DEFAULT_LEXER_STATE, EOF_TOKEN_NAME, LexerError, compileLexerRules, eofToken, isEofToken, token, } from './lexer/index.js';
|
|
7
7
|
export { LrAlgorithmError, PARSE_TABLE_VERSION, ParseTable, ParseTableError, isLrAlgorithm, parseLrAlgorithm, tokenInventory } from './parse-table/index.js';
|
|
8
8
|
export { formatUserError, isParserLrError, messageContainsStackTrace, ParserLrError } from './errors/index.js';
|
|
9
|
+
export { formatDiagnostic, formatDiagnosticLocationPrefix, offsetToPosition, resolveDiagnosticOffset, } from './diagnostics/index.js';
|
|
9
10
|
export { ParseContextError } from './parse-context-error.js';
|
|
10
11
|
export { ParseOutputError } from './parse-output-error.js';
|
|
11
12
|
export { ParseContext } from './parse-context.js';
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA4B5C,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7J,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA4B5C,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9J,OAAO,EACH,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,KAAK,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7J,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EACH,gBAAgB,EAChB,8BAA8B,EAC9B,gBAAgB,EAChB,uBAAuB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -78,6 +78,13 @@ export declare class ParseContext {
|
|
|
78
78
|
* @returns Transformed AST, CST when no transform rules exist, or null on syntax error.
|
|
79
79
|
*/
|
|
80
80
|
parse(tokens: readonly Token[]): AstNode | null;
|
|
81
|
+
/**
|
|
82
|
+
* Parses a token stream and retains syntax-error offset details.
|
|
83
|
+
*
|
|
84
|
+
* @param tokens - Token stream ending with `$eof`.
|
|
85
|
+
* @returns Tree and optional syntax-error details.
|
|
86
|
+
*/
|
|
87
|
+
parseResult(tokens: readonly Token[]): import("./parser-lr.js").ParserLrParseResult;
|
|
81
88
|
/**
|
|
82
89
|
* Lexes and parses source text into an AST, applying transforms when present.
|
|
83
90
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-context.d.ts","sourceRoot":"","sources":["../../src/lib/parse-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,YAAY;aASD,MAAM,EAAE,QAAQ;aAChB,KAAK,EAAE,UAAU;IARrC;;;;;OAKG;gBAEiB,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,UAAU;IAKrC;;;;;OAKG;WACW,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAOvD;;;;;OAKG;WACW,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IAUrE;;;;OAIG;IACI,WAAW,IAAI,KAAK;IAK3B;;;;;OAKG;IACI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,EAAE;IAK5C;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAKnE;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAKlF;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,KAAK,EAAE;IAKjE;;;;;OAKG;IACU,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAK1F;;;;;OAKG;IACI,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAKtD;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAIrD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAEhC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
1
|
+
{"version":3,"file":"parse-context.d.ts","sourceRoot":"","sources":["../../src/lib/parse-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,YAAY;aASD,MAAM,EAAE,QAAQ;aAChB,KAAK,EAAE,UAAU;IARrC;;;;;OAKG;gBAEiB,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,UAAU;IAKrC;;;;;OAKG;WACW,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAOvD;;;;;OAKG;WACW,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY;IAUrE;;;;OAIG;IACI,WAAW,IAAI,KAAK;IAK3B;;;;;OAKG;IACI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,EAAE;IAK5C;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAKnE;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAKlF;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,KAAK,EAAE;IAKjE;;;;;OAKG;IACU,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAK1F;;;;;OAKG;IACI,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAKtD;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE;IAK3C;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAIrD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAEhC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
@@ -101,6 +101,15 @@ export class ParseContext {
|
|
|
101
101
|
parse(tokens) {
|
|
102
102
|
return this.parser.parse(tokens);
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Parses a token stream and retains syntax-error offset details.
|
|
106
|
+
*
|
|
107
|
+
* @param tokens - Token stream ending with `$eof`.
|
|
108
|
+
* @returns Tree and optional syntax-error details.
|
|
109
|
+
*/
|
|
110
|
+
parseResult(tokens) {
|
|
111
|
+
return this.parser.parseResult(tokens);
|
|
112
|
+
}
|
|
104
113
|
/**
|
|
105
114
|
* Lexes and parses source text into an AST, applying transforms when present.
|
|
106
115
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-context.js","sourceRoot":"","sources":["../../src/lib/parse-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,OAAO,YAAY;IASD;IACA;IARpB;;;;;OAKG;IACH,YACoB,MAAgB,EAChB,KAAiB;QADjB,WAAM,GAAN,MAAM,CAAU;QAChB,UAAK,GAAL,KAAK,CAAY;IAGrC,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,aAAa,CAAC,IAAY;QAEpC,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,OAA4B;QAElD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EACnC,CAAC;YACG,OAAO,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,WAAW;QAEd,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,MAAc;QAErB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,MAAwB;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,MAA6B;QAE/C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,MAAwB;QAE1C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,MAA6B;QAE1D,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAwB;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,MAAc;QAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"parse-context.js","sourceRoot":"","sources":["../../src/lib/parse-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,OAAO,YAAY;IASD;IACA;IARpB;;;;;OAKG;IACH,YACoB,MAAgB,EAChB,KAAiB;QADjB,WAAM,GAAN,MAAM,CAAU;QAChB,UAAK,GAAL,KAAK,CAAY;IAGrC,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,aAAa,CAAC,IAAY;QAEpC,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,OAA4B;QAElD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EACnC,CAAC;YACG,OAAO,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,WAAW;QAEd,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,MAAc;QAErB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,MAAwB;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,MAA6B;QAE/C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACI,cAAc,CAAC,MAAwB;QAE1C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,MAA6B;QAE1D,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAwB;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,MAAwB;QAEvC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,MAAc;QAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lr-parse-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGpE;;GAEG;AACH,qBAAa,YAAY;aAcD,SAAS,EAAE,WAAW;aACtB,OAAO,EAAE,UAAU;aACnB,WAAW,EAAE,SAAS,aAAa,EAAE;aACrC,UAAU,EAAE,MAAM;aAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;aAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAlBvD;;;;;;;;;;OAUG;gBAEiB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAKvD;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKhE;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAG/E;
|
|
1
|
+
{"version":3,"file":"lr-parse-table.d.ts","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGpE;;GAEG;AACH,qBAAa,YAAY;aAcD,SAAS,EAAE,WAAW;aACtB,OAAO,EAAE,UAAU;aACnB,WAAW,EAAE,SAAS,aAAa,EAAE;aACrC,UAAU,EAAE,MAAM;aAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;aAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAlBvD;;;;;;;;;;OAUG;gBAEiB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,SAAS,aAAa,EAAE,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EAC9D,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvD,SAAS,EAAE,SAAS,aAAa,EAAE;IAKvD;;OAEG;IACH,IAAW,cAAc,IAAI,OAAO,CAGnC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAKhE;;;;;OAKG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYrF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAYnF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAG/E;AAID;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAqB1E;AAiBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAa3E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAa7E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAG5F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAGhF"}
|
|
@@ -104,6 +104,7 @@ export function formatLrConflicts(table) {
|
|
|
104
104
|
export function formatLrConflictWarnings(table) {
|
|
105
105
|
return table.conflicts.map((conflict) => formatParseConflictWarning(conflict));
|
|
106
106
|
}
|
|
107
|
+
import { formatDiagnostic } from '../../diagnostics/format-diagnostic.js';
|
|
107
108
|
/**
|
|
108
109
|
* Formats one resolved conflict as a warning line.
|
|
109
110
|
*
|
|
@@ -112,13 +113,19 @@ export function formatLrConflictWarnings(table) {
|
|
|
112
113
|
export function formatParseConflictWarning(conflict) {
|
|
113
114
|
const tokenLabel = formatConflictTokenLabel(conflict.symbol);
|
|
114
115
|
if (conflict.kind === 'shift-reduce') {
|
|
115
|
-
return
|
|
116
|
+
return formatDiagnostic({
|
|
117
|
+
severity: 'warning',
|
|
118
|
+
message: `state ${String(conflict.state)}: shift/reduce conflict on ${tokenLabel} resolved as shift`,
|
|
119
|
+
});
|
|
116
120
|
}
|
|
117
121
|
const keptProduction = conflict.existing.kind === 'reduce'
|
|
118
122
|
? conflict.existing.productionId
|
|
119
123
|
: conflict.incoming.productionId;
|
|
120
|
-
return
|
|
121
|
-
|
|
124
|
+
return formatDiagnostic({
|
|
125
|
+
severity: 'warning',
|
|
126
|
+
message: `state ${String(conflict.state)}: reduce/reduce conflict on ${tokenLabel} `
|
|
127
|
+
+ `resolved using rule ${String(keptProduction)}`,
|
|
128
|
+
});
|
|
122
129
|
}
|
|
123
130
|
/**
|
|
124
131
|
* Returns a readable terminal label for conflict warning text.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lr-parse-table.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lr-parse-table.js","sourceRoot":"","sources":["../../../../src/lib/parse-table/table/lr-parse-table.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/parser-lr.d.ts
CHANGED
|
@@ -4,6 +4,14 @@ import { Lexer } from './lexer/lexer.js';
|
|
|
4
4
|
import type { Token } from './lexer/token.js';
|
|
5
5
|
import type { LrAlgorithm } from './parse-table/lr-algorithm.js';
|
|
6
6
|
import { ParseTable } from './parse-table/parse-table.js';
|
|
7
|
+
/**
|
|
8
|
+
* Result of parsing a token stream into an AST or CST.
|
|
9
|
+
*/
|
|
10
|
+
export interface ParserLrParseResult {
|
|
11
|
+
readonly tree: AstNode | null;
|
|
12
|
+
readonly errorOffset: number | null;
|
|
13
|
+
readonly errorMessage: string | null;
|
|
14
|
+
}
|
|
7
15
|
/**
|
|
8
16
|
* Shift-reduce parser for EBNF grammars.
|
|
9
17
|
*/
|
|
@@ -72,6 +80,13 @@ export declare class ParserLr {
|
|
|
72
80
|
* @returns Parse tree rooted at the grammar start symbol, or null on syntax error.
|
|
73
81
|
*/
|
|
74
82
|
parseCst(tokens: readonly Token[]): AstNode | null;
|
|
83
|
+
/**
|
|
84
|
+
* Parses a token stream and retains syntax-error offset details.
|
|
85
|
+
*
|
|
86
|
+
* @param tokens - Token stream ending with `$eof`.
|
|
87
|
+
* @returns Tree and optional syntax-error details.
|
|
88
|
+
*/
|
|
89
|
+
parseResult(tokens: readonly Token[]): ParserLrParseResult;
|
|
75
90
|
/**
|
|
76
91
|
* Parses a token stream into an AST when transform rules are declared.
|
|
77
92
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-lr.d.ts","sourceRoot":"","sources":["../../src/lib/parser-lr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACH,KAAK,EAKR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"parser-lr.d.ts","sourceRoot":"","sources":["../../src/lib/parser-lr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACH,KAAK,EAKR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAEhC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,QAAQ;aASG,OAAO,EAAE,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAR1B;;;;;OAKG;gBAEiB,OAAO,EAAE,OAAO,EACf,KAAK,GAAE,UAAU,GAAG,IAAW;IAKpD;;;;;OAKG;WACW,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ;IAKzD;;;;OAIG;IACI,WAAW,IAAI,KAAK;IAK3B;;;;;OAKG;IACI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,EAAE;IAK5C;;;;;OAKG;IACI,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAKnE;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAKlF;;;;;OAKG;IACI,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,KAAK,EAAE;IAKjE;;;;;OAKG;IACU,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAK1F;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAUzD;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,mBAAmB;IAwCjE;;;;;OAKG;IACI,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAKzD;;;;;OAKG;IACI,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,OAAO,GAAG,IAAI;IAKtD;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAKlD;;;;;OAKG;IACI,eAAe,CAAC,SAAS,GAAE,WAAmB,GAAG,UAAU;CAIrE"}
|