@plurnk/plurnk-parser 1.18.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/LICENSE +21 -0
- package/README.md +71 -0
- package/SPEC.md +35 -0
- package/bin/plurnk-parser.js +43 -0
- package/dist/AstBuilder.d.ts +21 -0
- package/dist/AstBuilder.d.ts.map +1 -0
- package/dist/AstBuilder.js +871 -0
- package/dist/AstBuilder.js.map +1 -0
- package/dist/PlurnkErrorStrategy.d.ts +11 -0
- package/dist/PlurnkErrorStrategy.d.ts.map +1 -0
- package/dist/PlurnkErrorStrategy.js +288 -0
- package/dist/PlurnkErrorStrategy.js.map +1 -0
- package/dist/PlurnkParser.d.ts +15 -0
- package/dist/PlurnkParser.d.ts.map +1 -0
- package/dist/PlurnkParser.js +324 -0
- package/dist/PlurnkParser.js.map +1 -0
- package/dist/RecordingListener.d.ts +9 -0
- package/dist/RecordingListener.d.ts.map +1 -0
- package/dist/RecordingListener.js +37 -0
- package/dist/RecordingListener.js.map +1 -0
- package/dist/generated/plurnkLexer.d.ts +172 -0
- package/dist/generated/plurnkLexer.d.ts.map +1 -0
- package/dist/generated/plurnkLexer.js +1168 -0
- package/dist/generated/plurnkLexer.js.map +1 -0
- package/dist/generated/plurnkParser.d.ts +437 -0
- package/dist/generated/plurnkParser.d.ts.map +1 -0
- package/dist/generated/plurnkParser.js +2974 -0
- package/dist/generated/plurnkParser.js.map +1 -0
- package/dist/generated/plurnkParserVisitor.d.ts +263 -0
- package/dist/generated/plurnkParserVisitor.d.ts.map +1 -0
- package/dist/generated/plurnkParserVisitor.js +227 -0
- package/dist/generated/plurnkParserVisitor.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { CharStream, CommonTokenStream, Token } from "antlr4ng";
|
|
2
|
+
import { plurnkLexer } from "./generated/plurnkLexer.js";
|
|
3
|
+
import { plurnkParser } from "./generated/plurnkParser.js";
|
|
4
|
+
import AstBuilder from "./AstBuilder.js";
|
|
5
|
+
import PlurnkErrorStrategy from "./PlurnkErrorStrategy.js";
|
|
6
|
+
import RecordingListener from "./RecordingListener.js";
|
|
7
|
+
import { PlanValue, PlurnkParseError, TurnDisposition, } from "@plurnk/plurnk-contracts";
|
|
8
|
+
import { writtenOp } from "@plurnk/plurnk-contracts";
|
|
9
|
+
// Statement-bearing contexts the extraction builds into items. `statement` (statementSeq) and
|
|
10
|
+
// `midStatement` (mid-turn ops) each wrap one op; the turn disposition attaches as a direct
|
|
11
|
+
// `dispositionStatement` child of a turn; `clientStatement` wraps one op in the
|
|
12
|
+
// client tier.
|
|
13
|
+
const STATEMENT_RULES = new Set([
|
|
14
|
+
plurnkParser.RULE_statement,
|
|
15
|
+
plurnkParser.RULE_midStatement,
|
|
16
|
+
plurnkParser.RULE_dispositionStatement,
|
|
17
|
+
plurnkParser.RULE_clientStatement,
|
|
18
|
+
]);
|
|
19
|
+
// One-turn containers, flattened in source order for model and saved programs.
|
|
20
|
+
const CONTAINER_RULES = new Set([
|
|
21
|
+
plurnkParser.RULE_modelTurn,
|
|
22
|
+
plurnkParser.RULE_turn,
|
|
23
|
+
]);
|
|
24
|
+
export default class PlurnkParser {
|
|
25
|
+
static NO_VALID_OPERATION = "no valid Plurnk operation was found.";
|
|
26
|
+
// {§statement-rendering} — a wider fence keeps shorter inner fences as body ({§fence-closer});
|
|
27
|
+
// a body that itself holds a heading line of four or more backticks needs the numeric
|
|
28
|
+
// delimiter, since such a line ends any block it stands in ({§fence-heading-in-body}).
|
|
29
|
+
static frame(header, body) {
|
|
30
|
+
const longest = (body?.match(/`+/g) ?? []).reduce((maximum, ticks) => Math.max(maximum, ticks.length), 0);
|
|
31
|
+
const fence = "`".repeat(Math.max(4, longest + 1));
|
|
32
|
+
const nested = body !== null && /^`{4,}[0-9]*[A-Za-z]/mu.test(body);
|
|
33
|
+
let delimiter = "";
|
|
34
|
+
if (nested) {
|
|
35
|
+
let candidate = 42;
|
|
36
|
+
while (new RegExp(`^\`{3,}${candidate}(?![0-9])`, "mu").test(body))
|
|
37
|
+
candidate += 1;
|
|
38
|
+
delimiter = String(candidate);
|
|
39
|
+
}
|
|
40
|
+
return `${fence}${delimiter}${header}\n${body === null ? "" : `${body}\n`}${fence}${delimiter}`;
|
|
41
|
+
}
|
|
42
|
+
// {§statement-rendering} — framing is syntax, never persisted AST state.
|
|
43
|
+
static stringify(statements) {
|
|
44
|
+
return statements.map((statement) => {
|
|
45
|
+
const name = writtenOp(statement);
|
|
46
|
+
const modifiers = [];
|
|
47
|
+
// {§naked-pattern} — a lifted matcher is written back bare when the bare form reads back
|
|
48
|
+
// identically; otherwise as its `pattern` option ({§matcher-option}), the escape.
|
|
49
|
+
const naked = (raw) => raw.trim() === raw && raw !== "" && !/[\r\n]/u.test(raw) && !raw.includes("<!--")
|
|
50
|
+
&& (/^(\/|\$|~|&|\^)/u.test(raw) || ((statement.op === "FIND" || statement.op === "READ" || statement.op === "KILL") && !/^[[(<`]/u.test(raw)));
|
|
51
|
+
const metadataOf = (metadata, matcher, bare) => metadata !== null && metadata !== undefined ? metadata.map((block) => `[${block}]`)
|
|
52
|
+
: matcher !== null && matcher !== undefined ? [bare && naked(matcher.raw) ? matcher.raw : `[${JSON.stringify({ pattern: matcher.raw })}]`]
|
|
53
|
+
: [];
|
|
54
|
+
// {§local-path-fragment} — a bare path renders its channel back as `#channel`.
|
|
55
|
+
const spelled = (target) => target.kind === "local" && target.fragment !== undefined && target.fragment !== null ? `${target.raw}#${target.fragment}` : target.raw;
|
|
56
|
+
const selection = (resource) => {
|
|
57
|
+
modifiers.push(`(${spelled(resource.target)})`);
|
|
58
|
+
if (resource.lineMarker !== null)
|
|
59
|
+
modifiers.push(`<${resource.lineMarker.marks.join(",")}>`);
|
|
60
|
+
modifiers.push(...metadataOf(resource.metadata, resource.matcher, false));
|
|
61
|
+
};
|
|
62
|
+
if (statement.op === "COPY" || statement.op === "MOVE") {
|
|
63
|
+
selection(statement.source);
|
|
64
|
+
selection(statement.destination);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (statement.target !== null) {
|
|
68
|
+
modifiers.push(`(${spelled(statement.target)})`);
|
|
69
|
+
}
|
|
70
|
+
if (statement.lineMarker !== null)
|
|
71
|
+
modifiers.push(`<${statement.lineMarker.marks.join(",")}>`);
|
|
72
|
+
modifiers.push(...metadataOf(statement.metadata, "matcher" in statement ? statement.matcher : null, true));
|
|
73
|
+
}
|
|
74
|
+
if (statement.aside !== null)
|
|
75
|
+
modifiers.push(`<!-- ${statement.aside} -->`);
|
|
76
|
+
const body = TurnDisposition.is(statement) ? PlanValue.stringify(statement.body)
|
|
77
|
+
: statement.op === "COPY" || statement.op === "MOVE" || statement.body === null ? null
|
|
78
|
+
: typeof statement.body === "string" ? statement.body : statement.body.raw;
|
|
79
|
+
const header = `${name}${modifiers.length === 0 ? "" : ` ${modifiers.join(" ")}`}`;
|
|
80
|
+
return PlurnkParser.frame(header, body);
|
|
81
|
+
}).join("\n\n");
|
|
82
|
+
}
|
|
83
|
+
// Parse one model turn. An omitted disposition is silent continuation; a present one
|
|
84
|
+
// may sit anywhere in the turn ({§disposition-anywhere}) and the runtime executes it last.
|
|
85
|
+
// Outside text never becomes a parse item. {§whitespace-contract} {§turn-shape}
|
|
86
|
+
static parse(input, options = {}) {
|
|
87
|
+
const result = PlurnkParser.#run(input, (parser) => parser.document(), undefined, options);
|
|
88
|
+
PlurnkParser.#adviseBareHeadings(input, result.items, options.executors ?? []);
|
|
89
|
+
// Value-adds layered on ANTLR's diagnostics while the document boundary
|
|
90
|
+
// remains trustworthy. Neither changes what parsed.
|
|
91
|
+
if (result.unparsedTail === undefined)
|
|
92
|
+
PlurnkParser.#requireSourceOperation(result.items);
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
// {§turn-shape} — no source operation is reported as its own fact, beside every diagnostic
|
|
96
|
+
// that explains it: a host admits a turn whose only diagnostic is this one as an empty turn
|
|
97
|
+
// ({§empty-turn}) and rejects one that also carries a malformed heading.
|
|
98
|
+
static #requireSourceOperation(items) {
|
|
99
|
+
if (items.some((item) => item.kind === "statement"))
|
|
100
|
+
return;
|
|
101
|
+
// The grammar's end-of-input complaint only restates the absence; specific diagnostics
|
|
102
|
+
// (an unclosed slot, a stray character) stay, so the host can tell prose from a malformed heading.
|
|
103
|
+
const restatesAbsence = (item) => item.kind === "error" && item.error.source === "parser" && /^unexpected end of input/u.test(item.error.message);
|
|
104
|
+
const kept = items.filter((item) => !restatesAbsence(item));
|
|
105
|
+
items.length = 0;
|
|
106
|
+
items.push(...kept);
|
|
107
|
+
const anchor = items.find((i) => i.kind === "error" && i.error.severity === "error")?.error;
|
|
108
|
+
items.push({
|
|
109
|
+
kind: "error",
|
|
110
|
+
error: new PlurnkParseError(anchor?.line ?? 1, anchor?.column ?? 0, "parser", PlurnkParser.NO_VALID_OPERATION),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Collapse a lexer per-character cascade: the SIGNAL/TARGET modes emit one 'unrecognized
|
|
114
|
+
// character' error PER bad char, so a single malformed `[signal]` floods 10+ near-identical
|
|
115
|
+
// rows. Keep the first of each consecutive same-context run (adjacent columns, same mode
|
|
116
|
+
// context) - the model needs one steer to the fix, not a per-character wall. Mutates in place.
|
|
117
|
+
static #dedupeLexerCascade(errors) {
|
|
118
|
+
for (let i = errors.length - 1; i >= 1; i--) {
|
|
119
|
+
const cur = errors[i];
|
|
120
|
+
const prev = errors[i - 1];
|
|
121
|
+
if (cur.source !== "lexer" || prev.source !== "lexer")
|
|
122
|
+
continue;
|
|
123
|
+
if (cur.line !== prev.line || cur.column !== prev.column + 1)
|
|
124
|
+
continue;
|
|
125
|
+
if (PlurnkParser.#lexerContext(cur.message) !== PlurnkParser.#lexerContext(prev.message))
|
|
126
|
+
continue;
|
|
127
|
+
errors.splice(i, 1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// The mode-context tail of a lexer message (the part after `unrecognized character <ch> `),
|
|
131
|
+
// e.g. `in signal - expected integer for SEND/KILL, then \`]\``. Two adjacent chars sharing
|
|
132
|
+
// it belong to the same cascade.
|
|
133
|
+
static #lexerContext(message) {
|
|
134
|
+
const m = /unrecognized character (?:'[^']*'|end of input) (.+)$/.exec(message);
|
|
135
|
+
return m ? m[1] : message;
|
|
136
|
+
}
|
|
137
|
+
// Parse a bare sequence of statements - teaching-example collections, single ops,
|
|
138
|
+
// documentation snippets. No turn shape; outside text is ignored in every tier.
|
|
139
|
+
// Not for model output; use `parse` for that.
|
|
140
|
+
static parseStatements(input, options = {}) {
|
|
141
|
+
return PlurnkParser.#run(input, (parser) => parser.statementSeq(), undefined, options);
|
|
142
|
+
}
|
|
143
|
+
// Parse saved turns in source order; dispositions separate them. Each turn
|
|
144
|
+
// requires a disposition, including when ordinary operations follow it.
|
|
145
|
+
static parseLog(input, options = {}) {
|
|
146
|
+
return PlurnkParser.#run(input, (parser) => parser.log(), undefined, options);
|
|
147
|
+
}
|
|
148
|
+
// Parse the CLIENT tier - a bare sequence of protocol statements plus the client-only utility
|
|
149
|
+
// op LOOK. The topmost subset (one above Script); never used for model output. The
|
|
150
|
+
// protocol entry points reject LOOK, so a client op only parses here.
|
|
151
|
+
static parseClient(input, options = {}) {
|
|
152
|
+
return PlurnkParser.#run(input, (parser) => parser.clientStatementSeq(), (ctx) => AstBuilder.buildClient(ctx), options);
|
|
153
|
+
}
|
|
154
|
+
static #run(input, parseFn, buildFn = ((ctx) => AstBuilder.build(ctx)), options = {}) {
|
|
155
|
+
const lexer = new plurnkLexer(CharStream.fromString(input));
|
|
156
|
+
for (const name of options.executors ?? [])
|
|
157
|
+
lexer.knownExecutors.add(name);
|
|
158
|
+
AstBuilder.executorSpellings = new Map([...lexer.knownExecutors].map((name) => [name.toLowerCase(), name]));
|
|
159
|
+
const errors = [];
|
|
160
|
+
lexer.removeErrorListeners();
|
|
161
|
+
lexer.addErrorListener(new RecordingListener("lexer", errors));
|
|
162
|
+
const tokenStream = new CommonTokenStream(lexer);
|
|
163
|
+
const parser = new plurnkParser(tokenStream);
|
|
164
|
+
parser.removeErrorListeners();
|
|
165
|
+
parser.addErrorListener(new RecordingListener("parser", errors));
|
|
166
|
+
parser.errorHandler = new PlurnkErrorStrategy();
|
|
167
|
+
const tree = parseFn(parser);
|
|
168
|
+
PlurnkParser.#dedupeLexerCascade(errors);
|
|
169
|
+
const unparsedTail = PlurnkParser.#unparsedTail(lexer);
|
|
170
|
+
const items = [];
|
|
171
|
+
const consumedErrors = new Set();
|
|
172
|
+
PlurnkParser.#collect(tree, errors, consumedErrors, items, buildFn, unparsedTail?.from);
|
|
173
|
+
// {§heading-inline-body} — a body that began on the heading line ran as the body; say so,
|
|
174
|
+
// right after its statement, so the form is learned from the packet, not from silence.
|
|
175
|
+
for (const note of lexer.takeInlineBodies()) {
|
|
176
|
+
const advisory = {
|
|
177
|
+
kind: "error",
|
|
178
|
+
error: new PlurnkParseError(note.line, note.column, "parser", `\`${note.heading.replace(/^`+/, "")}\` body text was on the OP line and was taken as the body; body content goes immediately beneath the opening fence line.`, "warning"),
|
|
179
|
+
};
|
|
180
|
+
const at = items.findIndex((item) => item.kind === "statement" && item.statement.position?.line === note.line);
|
|
181
|
+
if (at !== -1)
|
|
182
|
+
items.splice(at + 1, 0, advisory);
|
|
183
|
+
}
|
|
184
|
+
for (const err of errors) {
|
|
185
|
+
if (!consumedErrors.has(err)
|
|
186
|
+
&& (unparsedTail === undefined || PlurnkParser.#isBefore(err, unparsedTail.from))) {
|
|
187
|
+
items.push({ kind: "error", error: err });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// {§unclosed-aside} — the aside ran to the end of the line; say so once.
|
|
191
|
+
for (const note of lexer.takeUnclosedAsides()) {
|
|
192
|
+
items.push({
|
|
193
|
+
kind: "error",
|
|
194
|
+
error: new PlurnkParseError(note.line, note.column, "parser", "The aside was not closed with `-->`; it was read to the end of the line.", "warning"),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
// {§interstitial-fence} — a tagged fence that opened nothing is prose; say so once, as a
|
|
198
|
+
// warning, so a misspelled executor is never a silent loss.
|
|
199
|
+
for (const note of lexer.takeUnknownTags()) {
|
|
200
|
+
items.push({
|
|
201
|
+
kind: "error",
|
|
202
|
+
error: new PlurnkParseError(note.line, note.column, "parser", `\`${note.tag}\` is not an operation or a known executor here; the block was read as prose and nothing ran.`, "warning"),
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return { items, unparsedTail };
|
|
206
|
+
}
|
|
207
|
+
// Determine the public trust boundary before visiting recovered contexts. The parser may
|
|
208
|
+
// synthesize tree nodes after an unfinished lexer mode, but those nodes have no public AST
|
|
209
|
+
// meaning and can violate AstBuilder's complete-statement precondition. {§unparsed-tail-boundary}
|
|
210
|
+
static #unparsedTail(lexer) {
|
|
211
|
+
const modeName = lexer.modeNames[lexer.mode] ?? "";
|
|
212
|
+
// {§closer-fallback} — a block still open at the end of the input ended there; only an
|
|
213
|
+
// unfinished target or metadata slot loses the boundary.
|
|
214
|
+
if (modeName !== "TARGET" && modeName !== "METADATA")
|
|
215
|
+
return undefined;
|
|
216
|
+
const openTag = lexer.getOpenTag();
|
|
217
|
+
const from = { line: lexer.getOpenTagLine(), column: lexer.getOpenTagColumn() };
|
|
218
|
+
const heading = lexer.getOpenHeading().replace(/^`+[0-9]*/, "") || openTag;
|
|
219
|
+
const reason = modeName === "METADATA"
|
|
220
|
+
? `metadata modifier of \`${heading}\` opened at line ${from.line} but never closed - add \`]\``
|
|
221
|
+
: modeName === "TARGET"
|
|
222
|
+
? `target slot of \`${heading}\` opened at line ${from.line} but never closed - add \`)\``
|
|
223
|
+
: `${openTag} block opened at line ${from.line} but was not closed with ${lexer.getFenceLength()} backticks`;
|
|
224
|
+
return { from, reason };
|
|
225
|
+
}
|
|
226
|
+
// {§bare-heading-advisory} — an operation heading written outside any fence is prose, and prose
|
|
227
|
+
// is silent; one warning names the fence form so the loss is never quiet ({§interstitial-fence}).
|
|
228
|
+
static #adviseBareHeadings(input, items, executors) {
|
|
229
|
+
const names = ["FIND", "READ", "EDIT", "COPY", "MOVE", "SEND", "WORK", "FORK", "BARE", "KILL", "TASK", ...executors]
|
|
230
|
+
.map((name) => name.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"));
|
|
231
|
+
const headingShape = new RegExp(`^[ \\t]*(${names.join("|")})(?=\\s*(?:\\(|<|\\[|$))`, "u");
|
|
232
|
+
const covered = new Set();
|
|
233
|
+
for (const item of items) {
|
|
234
|
+
if (item.kind !== "statement")
|
|
235
|
+
continue;
|
|
236
|
+
const start = item.statement.position.line;
|
|
237
|
+
const body = item.statement.body;
|
|
238
|
+
const raw = typeof body === "string" ? body : body !== null && typeof body === "object" && "raw" in body ? String(body.raw ?? "") : "";
|
|
239
|
+
const span = raw === "" ? 0 : raw.split("\n").length;
|
|
240
|
+
for (let line = start; line <= start + span + 1; line += 1)
|
|
241
|
+
covered.add(line);
|
|
242
|
+
}
|
|
243
|
+
const lines = input.split("\n");
|
|
244
|
+
lines.forEach((text, index) => {
|
|
245
|
+
const line = index + 1;
|
|
246
|
+
if (covered.has(line))
|
|
247
|
+
return;
|
|
248
|
+
const match = headingShape.exec(text);
|
|
249
|
+
if (match === null)
|
|
250
|
+
return;
|
|
251
|
+
items.push({
|
|
252
|
+
kind: "error",
|
|
253
|
+
error: new PlurnkParseError(line, 0, "parser", `\`${match[1]}\` on line ${line} is outside any fence, so it is prose and nothing ran; an operation opens with \`\`\`\`${match[1]} on the fence line.`, "warning"),
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
// Walk statement containers in source order; bounded malformed statements become errors.
|
|
258
|
+
static #collect(ctx, errors, consumedErrors, items, buildFn, boundary) {
|
|
259
|
+
for (const child of ctx.children ?? []) {
|
|
260
|
+
const c = child;
|
|
261
|
+
const start = c.start ?? c.symbol;
|
|
262
|
+
const stop = c.stop ?? c.symbol;
|
|
263
|
+
if (!start)
|
|
264
|
+
continue;
|
|
265
|
+
if (boundary !== undefined && !PlurnkParser.#isBefore(start, boundary))
|
|
266
|
+
continue;
|
|
267
|
+
if (c.ruleIndex !== undefined && STATEMENT_RULES.has(c.ruleIndex)) {
|
|
268
|
+
const errorsForStatement = errors.filter((e) => !consumedErrors.has(e) && PlurnkParser.#errorInRange(e, start, stop ?? start));
|
|
269
|
+
const errForStatement = errorsForStatement[0];
|
|
270
|
+
if (errForStatement) {
|
|
271
|
+
// One malformed statement projects one hard diagnostic. {§error-shape}
|
|
272
|
+
for (const error of errorsForStatement)
|
|
273
|
+
consumedErrors.add(error);
|
|
274
|
+
items.push({ kind: "error", error: errForStatement });
|
|
275
|
+
}
|
|
276
|
+
else if ((c.getChildCount?.() ?? 0) === 0 || c.exception || c.start?.type === Token.EOF) {
|
|
277
|
+
// A phantom statement context synthesized during error recovery (a required
|
|
278
|
+
// slot the parser opened then failed to fill, or a disposition the log rule
|
|
279
|
+
// demanded at the end of the input): nothing real was matched, so building it
|
|
280
|
+
// would build the recovery token. Surface the parser's own diagnostic instead.
|
|
281
|
+
const pending = errors.find((e) => !consumedErrors.has(e) && !PlurnkParser.#isBefore(e, start));
|
|
282
|
+
if (pending) {
|
|
283
|
+
consumedErrors.add(pending);
|
|
284
|
+
items.push({ kind: "error", error: pending });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
try {
|
|
289
|
+
items.push({ kind: "statement", statement: buildFn(c) });
|
|
290
|
+
// {§misplaced-aside-advisory} — the builder's advisories follow their statement.
|
|
291
|
+
for (const advisory of AstBuilder.takeAdvisories())
|
|
292
|
+
items.push({ kind: "error", error: advisory });
|
|
293
|
+
}
|
|
294
|
+
catch (e) {
|
|
295
|
+
// A genuine visitor contract violation (e.g. a malformed URI) is a
|
|
296
|
+
// PlurnkParseError - surface it as an error item. Anything else is an
|
|
297
|
+
// internal bug, not a parse error: let it crash rather than masquerade
|
|
298
|
+
// as a model-facing parse-error item.
|
|
299
|
+
if (!(e instanceof PlurnkParseError))
|
|
300
|
+
throw e;
|
|
301
|
+
items.push({ kind: "error", error: e });
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else if (c.ruleIndex !== undefined && CONTAINER_RULES.has(c.ruleIndex)) {
|
|
306
|
+
PlurnkParser.#collect(c, errors, consumedErrors, items, buildFn, boundary);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
static #isBefore(point, boundary) {
|
|
311
|
+
return point.line < boundary.line
|
|
312
|
+
|| (point.line === boundary.line && point.column < boundary.column);
|
|
313
|
+
}
|
|
314
|
+
static #errorInRange(err, start, stop) {
|
|
315
|
+
if (err.line < start.line || err.line > stop.line)
|
|
316
|
+
return false;
|
|
317
|
+
if (err.line === start.line && err.column < start.column)
|
|
318
|
+
return false;
|
|
319
|
+
if (err.line === stop.line && err.column > stop.column)
|
|
320
|
+
return false;
|
|
321
|
+
return true;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=PlurnkParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlurnkParser.js","sourceRoot":"","sources":["../src/PlurnkParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseErrorListener, type RecognitionException, type Recognizer, type Token } from "antlr4ng";
|
|
2
|
+
import { PlurnkParseError } from "@plurnk/plurnk-contracts";
|
|
3
|
+
export default class RecordingListener extends BaseErrorListener {
|
|
4
|
+
readonly errors: PlurnkParseError[];
|
|
5
|
+
readonly source: "lexer" | "parser";
|
|
6
|
+
constructor(source: "lexer" | "parser", errors: PlurnkParseError[]);
|
|
7
|
+
syntaxError(recognizer: Recognizer<any>, offendingSymbol: Token | null, line: number, column: number, msg: string, _e: RecognitionException | null): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=RecordingListener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordingListener.d.ts","sourceRoot":"","sources":["../src/RecordingListener.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EAEjB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,KAAK,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,iBAAiB;IAC5D,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEpC,YAAY,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAIjE;IAEQ,WAAW,CAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,eAAe,EAAE,KAAK,GAAG,IAAI,EAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,oBAAoB,GAAG,IAAI,GAChC,IAAI,CAoBN;CACJ"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BaseErrorListener, ParserRuleContext, } from "antlr4ng";
|
|
2
|
+
import { plurnkParser } from "./generated/plurnkParser.js";
|
|
3
|
+
import { PlurnkParseError } from "@plurnk/plurnk-contracts";
|
|
4
|
+
import PlurnkErrorStrategy from "./PlurnkErrorStrategy.js";
|
|
5
|
+
export default class RecordingListener extends BaseErrorListener {
|
|
6
|
+
errors;
|
|
7
|
+
source;
|
|
8
|
+
constructor(source, errors) {
|
|
9
|
+
super();
|
|
10
|
+
this.source = source;
|
|
11
|
+
this.errors = errors;
|
|
12
|
+
}
|
|
13
|
+
syntaxError(recognizer, offendingSymbol, line, column, msg, _e) {
|
|
14
|
+
let duplicateDisposition = false;
|
|
15
|
+
if (recognizer instanceof plurnkParser && offendingSymbol !== null && [
|
|
16
|
+
plurnkParser.OPEN_TASK,
|
|
17
|
+
].includes(offendingSymbol.type)) {
|
|
18
|
+
const containsDisposition = (context) => context.ruleIndex === plurnkParser.RULE_dispositionStatement
|
|
19
|
+
|| context.children.some((child) => child instanceof ParserRuleContext && containsDisposition(child));
|
|
20
|
+
for (let context = recognizer.context; context !== null; context = context.parent) {
|
|
21
|
+
if (containsDisposition(context)) {
|
|
22
|
+
duplicateDisposition = true;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const structural = duplicateDisposition || recognizer instanceof plurnkParser
|
|
28
|
+
&& [plurnkParser.RULE_document, plurnkParser.RULE_log].includes(recognizer.context?.ruleIndex ?? -1);
|
|
29
|
+
const translated = duplicateDisposition
|
|
30
|
+
? "A turn permits only one TASK inventory."
|
|
31
|
+
: this.source === "lexer"
|
|
32
|
+
? PlurnkErrorStrategy.translateLexerMessage(recognizer, msg)
|
|
33
|
+
: msg;
|
|
34
|
+
this.errors.push(new PlurnkParseError(line, column, this.source, translated, "error", structural ? "invalid-turn-structure" : undefined));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=RecordingListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordingListener.js","sourceRoot":"","sources":["../src/RecordingListener.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,iBAAiB,GAIpB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,iBAAiB;IACnD,MAAM,CAAqB;IAC3B,MAAM,CAAqB;IAEpC,YAAY,MAA0B,EAAE,MAA0B;QAC9D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEQ,WAAW,CAChB,UAA2B,EAC3B,eAA6B,EAC7B,IAAY,EACZ,MAAc,EACd,GAAW,EACX,EAA+B;QAE/B,IAAI,oBAAoB,GAAG,KAAK,CAAC;QACjC,IAAI,UAAU,YAAY,YAAY,IAAI,eAAe,KAAK,IAAI,IAAI;YAClE,YAAY,CAAC,SAAS;SACzB,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAW,EAAE,CAChE,OAAO,CAAC,SAAS,KAAK,YAAY,CAAC,yBAAyB;mBACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,YAAY,iBAAiB,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1G,KAAK,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAChF,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAAC,oBAAoB,GAAG,IAAI,CAAC;oBAAC,MAAM;gBAAC,CAAC;YAC7E,CAAC;QACL,CAAC;QACD,MAAM,UAAU,GAAG,oBAAoB,IAAI,UAAU,YAAY,YAAY;eACtE,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,UAAU,GAAG,oBAAoB;YACnC,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO;gBACzB,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,UAAyB,EAAE,GAAG,CAAC;gBAC3E,CAAC,CAAC,GAAG,CAAC;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9I,CAAC;CACJ"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import * as antlr from "antlr4ng";
|
|
2
|
+
export declare class plurnkLexer extends antlr.Lexer {
|
|
3
|
+
static readonly OPEN_FIND = 1;
|
|
4
|
+
static readonly OPEN_READ = 2;
|
|
5
|
+
static readonly OPEN_EDIT = 3;
|
|
6
|
+
static readonly OPEN_COPY = 4;
|
|
7
|
+
static readonly OPEN_MOVE = 5;
|
|
8
|
+
static readonly OPEN_SEND = 6;
|
|
9
|
+
static readonly OPEN_TASK = 7;
|
|
10
|
+
static readonly OPEN_EXEC = 8;
|
|
11
|
+
static readonly OPEN_BARE = 9;
|
|
12
|
+
static readonly OPEN_WORK = 10;
|
|
13
|
+
static readonly OPEN_FORK = 11;
|
|
14
|
+
static readonly OPEN_KILL = 12;
|
|
15
|
+
static readonly OPEN_LOOK = 13;
|
|
16
|
+
static readonly LPAREN = 14;
|
|
17
|
+
static readonly RPAREN = 15;
|
|
18
|
+
static readonly LBRACKET = 16;
|
|
19
|
+
static readonly RBRACKET = 17;
|
|
20
|
+
static readonly L_MARKER = 18;
|
|
21
|
+
static readonly BODY_OPEN = 19;
|
|
22
|
+
static readonly SECTION_END = 20;
|
|
23
|
+
static readonly TARGET_TEXT = 21;
|
|
24
|
+
static readonly METADATA_TEXT = 22;
|
|
25
|
+
static readonly BODY_TEXT = 23;
|
|
26
|
+
static readonly TEXT = 24;
|
|
27
|
+
static readonly ASIDE = 25;
|
|
28
|
+
static readonly OPEN = 26;
|
|
29
|
+
static readonly WS = 27;
|
|
30
|
+
static readonly SLOTS_WS = 28;
|
|
31
|
+
static readonly SLOTS_INLINE_CLOSER = 29;
|
|
32
|
+
static readonly TARGET_BACKSLASH = 30;
|
|
33
|
+
static readonly TARGET_TICK = 31;
|
|
34
|
+
static readonly METADATA_QUOTE = 32;
|
|
35
|
+
static readonly B_CR = 33;
|
|
36
|
+
static readonly SLOTS = 1;
|
|
37
|
+
static readonly TARGET = 2;
|
|
38
|
+
static readonly METADATA = 3;
|
|
39
|
+
static readonly BODY = 4;
|
|
40
|
+
static readonly channelNames: string[];
|
|
41
|
+
static readonly literalNames: (string | null)[];
|
|
42
|
+
static readonly symbolicNames: (string | null)[];
|
|
43
|
+
static readonly modeNames: string[];
|
|
44
|
+
static readonly ruleNames: string[];
|
|
45
|
+
private openOp;
|
|
46
|
+
private execFence;
|
|
47
|
+
private openHeading;
|
|
48
|
+
private openHeadingLine;
|
|
49
|
+
private openHeadingColumn;
|
|
50
|
+
private fenceLength;
|
|
51
|
+
private fenceDelimiter;
|
|
52
|
+
private started;
|
|
53
|
+
private inlineChain;
|
|
54
|
+
private inlineCloserSeen;
|
|
55
|
+
private unclosedAsides;
|
|
56
|
+
private openerFollows;
|
|
57
|
+
private noteUnclosedAside;
|
|
58
|
+
takeUnclosedAsides(): Array<{
|
|
59
|
+
line: number;
|
|
60
|
+
column: number;
|
|
61
|
+
}>;
|
|
62
|
+
private asideClosesOnLine;
|
|
63
|
+
knownExecutors: Set<string>;
|
|
64
|
+
private knownExecutor;
|
|
65
|
+
private slotReady;
|
|
66
|
+
private targetDepth;
|
|
67
|
+
private metadataDepth;
|
|
68
|
+
private metadataReady;
|
|
69
|
+
private inlineBody;
|
|
70
|
+
private inlineBodies;
|
|
71
|
+
private unknownTags;
|
|
72
|
+
private knownHeading;
|
|
73
|
+
private noteUnknownTag;
|
|
74
|
+
takeUnknownTags(): Array<{
|
|
75
|
+
line: number;
|
|
76
|
+
column: number;
|
|
77
|
+
tag: string;
|
|
78
|
+
}>;
|
|
79
|
+
private static readonly OPERATIONS;
|
|
80
|
+
private open;
|
|
81
|
+
private atLineStart;
|
|
82
|
+
private skipHorizontal;
|
|
83
|
+
private offsetAfterEol;
|
|
84
|
+
private closingAt;
|
|
85
|
+
private headingAt;
|
|
86
|
+
private headingAfterEol;
|
|
87
|
+
private closingAfterEol;
|
|
88
|
+
private closerWithHeadingAhead;
|
|
89
|
+
private openerFollowsAt;
|
|
90
|
+
private targetScopeEnd;
|
|
91
|
+
private inlineBodyAhead;
|
|
92
|
+
private noteInlineBody;
|
|
93
|
+
takeInlineBodies(): Array<{
|
|
94
|
+
line: number;
|
|
95
|
+
column: number;
|
|
96
|
+
heading: string;
|
|
97
|
+
}>;
|
|
98
|
+
getOpenTag(): string;
|
|
99
|
+
getOpenOp(): string;
|
|
100
|
+
isExecFence(): boolean;
|
|
101
|
+
getOpenTagLine(): number;
|
|
102
|
+
getOpenTagColumn(): number;
|
|
103
|
+
getOpenHeading(): string;
|
|
104
|
+
getFenceLength(): number;
|
|
105
|
+
isTextCoordinateOp(): boolean;
|
|
106
|
+
constructor(input: antlr.CharStream);
|
|
107
|
+
get grammarFileName(): string;
|
|
108
|
+
get literalNames(): (string | null)[];
|
|
109
|
+
get symbolicNames(): (string | null)[];
|
|
110
|
+
get ruleNames(): string[];
|
|
111
|
+
get serializedATN(): number[];
|
|
112
|
+
get channelNames(): string[];
|
|
113
|
+
get modeNames(): string[];
|
|
114
|
+
action(localContext: antlr.ParserRuleContext | null, ruleIndex: number, actionIndex: number): void;
|
|
115
|
+
private OPEN_action;
|
|
116
|
+
private UNKNOWN_TAG_action;
|
|
117
|
+
private TEXT_RUN_action;
|
|
118
|
+
private TEXT_TICK_action;
|
|
119
|
+
private SLOTS_NEXT_OPENER_action;
|
|
120
|
+
private SLOTS_WS_action;
|
|
121
|
+
private SLOTS_LPAREN_action;
|
|
122
|
+
private SLOTS_LBRACKET_action;
|
|
123
|
+
private SLOTS_ASIDE_OPEN_action;
|
|
124
|
+
private SLOTS_INLINE_CLOSER_action;
|
|
125
|
+
private SLOTS_END_action;
|
|
126
|
+
private SLOTS_INLINE_BODY_action;
|
|
127
|
+
private TARGET_FENCE_action;
|
|
128
|
+
private TARGET_NEST_OPEN_action;
|
|
129
|
+
private TARGET_NEST_END_action;
|
|
130
|
+
private TARGET_END_action;
|
|
131
|
+
private METADATA_FENCE_action;
|
|
132
|
+
private METADATA_NEST_OPEN_action;
|
|
133
|
+
private METADATA_NEST_END_action;
|
|
134
|
+
private METADATA_END_action;
|
|
135
|
+
private B_END_action;
|
|
136
|
+
private B_EMPTY_END_action;
|
|
137
|
+
private B_CRLF_action;
|
|
138
|
+
private B_LF_action;
|
|
139
|
+
sempred(localContext: antlr.ParserRuleContext | null, ruleIndex: number, predIndex: number): boolean;
|
|
140
|
+
private OPEN_sempred;
|
|
141
|
+
private UNKNOWN_TAG_sempred;
|
|
142
|
+
private SLOTS_NEXT_OPENER_sempred;
|
|
143
|
+
private SLOTS_LPAREN_sempred;
|
|
144
|
+
private SLOTS_LBRACKET_sempred;
|
|
145
|
+
private SLOTS_TEXT_L_sempred;
|
|
146
|
+
private SLOTS_L_sempred;
|
|
147
|
+
private SLOTS_COMBINED_TEXT_L_sempred;
|
|
148
|
+
private SLOTS_ASIDE_sempred;
|
|
149
|
+
private SLOTS_ASIDE_OPEN_sempred;
|
|
150
|
+
private SLOTS_INLINE_CLOSER_sempred;
|
|
151
|
+
private SLOTS_END_sempred;
|
|
152
|
+
private SLOTS_INLINE_BODY_sempred;
|
|
153
|
+
private SLOTS_CLOSED_EOL_sempred;
|
|
154
|
+
private SLOTS_NEXT_HEADING_sempred;
|
|
155
|
+
private TARGET_FENCE_sempred;
|
|
156
|
+
private TARGET_NEST_END_sempred;
|
|
157
|
+
private TARGET_TEXT_SCOPE_sempred;
|
|
158
|
+
private TARGET_SCOPE_sempred;
|
|
159
|
+
private METADATA_FENCE_sempred;
|
|
160
|
+
private METADATA_NEST_END_sempred;
|
|
161
|
+
private B_END_sempred;
|
|
162
|
+
private B_EMPTY_END_sempred;
|
|
163
|
+
private B_CLOSED_EOL_sempred;
|
|
164
|
+
private B_NEXT_HEADING_sempred;
|
|
165
|
+
static readonly _serializedATN: number[];
|
|
166
|
+
private static __ATN;
|
|
167
|
+
static get _ATN(): antlr.ATN;
|
|
168
|
+
private static readonly vocabulary;
|
|
169
|
+
get vocabulary(): antlr.Vocabulary;
|
|
170
|
+
private static readonly decisionsToDFA;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=plurnkLexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plurnkLexer.d.ts","sourceRoot":"","sources":["../../src/generated/plurnkLexer.ts"],"names":[],"mappings":"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"}
|