@plurnk/plurnk-contracts 1.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/LICENSE +21 -0
- package/README.md +119 -0
- package/SPEC.md +954 -0
- package/bin/plurnk-contracts.js +43 -0
- package/dist/plurnk.gbnf +394 -0
- package/dist/schema/ClientDisplayCapabilities.json +54 -0
- package/dist/schema/ClientStatement.json +68 -0
- package/dist/schema/EntryReadResult.json +101 -0
- package/dist/schema/LineMarker.json +16 -0
- package/dist/schema/LoopFlags.json +16 -0
- package/dist/schema/MatcherBody.json +84 -0
- package/dist/schema/Notice.json +67 -0
- package/dist/schema/OperationResult.json +44 -0
- package/dist/schema/ParsedPath.json +64 -0
- package/dist/schema/PlurnkStatement.json +264 -0
- package/dist/schema/Position.json +20 -0
- package/dist/schema/ProblemDetails.json +51 -0
- package/dist/schema/ProposalDisposition.json +26 -0
- package/dist/schema/ProposalProjection.json +44 -0
- package/dist/schema/ProviderCost.json +69 -0
- package/dist/schema/ResourceSelection.json +20 -0
- package/dist/schema/SendBody.json +13 -0
- package/dist/schema/TextRegion.json +31 -0
- package/dist/src/AstBuilder.d.ts +24 -0
- package/dist/src/AstBuilder.d.ts.map +1 -0
- package/dist/src/AstBuilder.js +609 -0
- package/dist/src/AstBuilder.js.map +1 -0
- package/dist/src/PathSyntax.d.ts +9 -0
- package/dist/src/PathSyntax.d.ts.map +1 -0
- package/dist/src/PathSyntax.js +36 -0
- package/dist/src/PathSyntax.js.map +1 -0
- package/dist/src/PlurnkErrorStrategy.d.ts +10 -0
- package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -0
- package/dist/src/PlurnkErrorStrategy.js +147 -0
- package/dist/src/PlurnkErrorStrategy.js.map +1 -0
- package/dist/src/PlurnkParseError.d.ts +17 -0
- package/dist/src/PlurnkParseError.d.ts.map +1 -0
- package/dist/src/PlurnkParseError.js +24 -0
- package/dist/src/PlurnkParseError.js.map +1 -0
- package/dist/src/PlurnkParser.d.ts +9 -0
- package/dist/src/PlurnkParser.d.ts.map +1 -0
- package/dist/src/PlurnkParser.js +396 -0
- package/dist/src/PlurnkParser.js.map +1 -0
- package/dist/src/Problems.d.ts +8 -0
- package/dist/src/Problems.d.ts.map +1 -0
- package/dist/src/Problems.js +23 -0
- package/dist/src/Problems.js.map +1 -0
- package/dist/src/RecordingListener.d.ts +9 -0
- package/dist/src/RecordingListener.d.ts.map +1 -0
- package/dist/src/RecordingListener.js +19 -0
- package/dist/src/RecordingListener.js.map +1 -0
- package/dist/src/Validator.d.ts +49 -0
- package/dist/src/Validator.d.ts.map +1 -0
- package/dist/src/Validator.js +211 -0
- package/dist/src/Validator.js.map +1 -0
- package/dist/src/generated/plurnkLexer.d.ts +129 -0
- package/dist/src/generated/plurnkLexer.d.ts.map +1 -0
- package/dist/src/generated/plurnkLexer.js +808 -0
- package/dist/src/generated/plurnkLexer.js.map +1 -0
- package/dist/src/generated/plurnkParser.d.ts +525 -0
- package/dist/src/generated/plurnkParser.d.ts.map +1 -0
- package/dist/src/generated/plurnkParser.js +3896 -0
- package/dist/src/generated/plurnkParser.js.map +1 -0
- package/dist/src/generated/plurnkParserVisitor.d.ts +298 -0
- package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -0
- package/dist/src/generated/plurnkParserVisitor.js +257 -0
- package/dist/src/generated/plurnkParserVisitor.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types.d.ts +29 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.generated.d.ts +450 -0
- package/dist/src/types.generated.d.ts.map +1 -0
- package/dist/src/types.generated.js +4 -0
- package/dist/src/types.generated.js.map +1 -0
- package/dist/src/types.js +23 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +87 -0
- package/plurnk.md +220 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Target-slot quoting and pathname-parenthesis aliasing are distinct layers.
|
|
2
|
+
// Neither is general URI encoding or decoding. {§path-parentheses}
|
|
3
|
+
export default class PathSyntax {
|
|
4
|
+
// {§path-glob} The index is shared with consumers that use
|
|
5
|
+
// the literal prefix only as a candidate-set optimization.
|
|
6
|
+
static globMagicIndex(value) {
|
|
7
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
8
|
+
const character = value[index];
|
|
9
|
+
// An escape changes glob interpretation even when no later magic
|
|
10
|
+
// appears, so it cannot be admitted as an exact path byte here.
|
|
11
|
+
if (character === "\\")
|
|
12
|
+
return index;
|
|
13
|
+
if (character === "*" || character === "?" || character === "[" || character === "{")
|
|
14
|
+
return index;
|
|
15
|
+
if ((character === "!" || character === "+" || character === "@") && value[index + 1] === "(")
|
|
16
|
+
return index;
|
|
17
|
+
}
|
|
18
|
+
return -1;
|
|
19
|
+
}
|
|
20
|
+
static hasGlob(value) {
|
|
21
|
+
return PathSyntax.globMagicIndex(value) >= 0;
|
|
22
|
+
}
|
|
23
|
+
static escapeTarget(value) {
|
|
24
|
+
return value.replace(/\\/g, "\\\\").replace(/[()]/g, "\\$&");
|
|
25
|
+
}
|
|
26
|
+
static unescapeTarget(value) {
|
|
27
|
+
return value.replace(/\\([\\()])/g, "$1");
|
|
28
|
+
}
|
|
29
|
+
static encodeParens(value) {
|
|
30
|
+
return value.replace(/\(/g, "%28").replace(/\)/g, "%29");
|
|
31
|
+
}
|
|
32
|
+
static decodeParens(value) {
|
|
33
|
+
return value.replace(/%28/gi, "(").replace(/%29/gi, ")");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=PathSyntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathSyntax.js","sourceRoot":"","sources":["../../src/PathSyntax.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mEAAmE;AACnE,MAAM,CAAC,OAAO,OAAO,UAAU;IAC3B,2DAA2D;IAC3D,2DAA2D;IAC3D,MAAM,CAAC,cAAc,CAAC,KAAa;QAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,iEAAiE;YACjE,gEAAgE;YAChE,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;YACrC,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;YACnG,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;QAChH,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAa;QACxB,OAAO,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAa;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,KAAa;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAa;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,KAAa;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;CACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DefaultErrorStrategy, type Parser, type RecognitionException } from "antlr4ng";
|
|
2
|
+
import { plurnkLexer } from "./generated/plurnkLexer.ts";
|
|
3
|
+
export default class PlurnkErrorStrategy extends DefaultErrorStrategy {
|
|
4
|
+
#private;
|
|
5
|
+
static translateLexerMessage(lexer: plurnkLexer, originalMsg: string): string;
|
|
6
|
+
reportError(recognizer: Parser, e: RecognitionException): void;
|
|
7
|
+
reportMissingToken(recognizer: Parser): void;
|
|
8
|
+
reportUnwantedToken(recognizer: Parser): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=PlurnkErrorStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlurnkErrorStrategy.d.ts","sourceRoot":"","sources":["../../src/PlurnkErrorStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EAIpB,KAAK,MAAM,EACX,KAAK,oBAAoB,EAC5B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoB;;IAyCjE,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB5E;IAoCe,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAe7E;IAEe,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAiB3D;IAEe,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAmB5D;CACJ"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { DefaultErrorStrategy, InputMismatchException, NoViableAltException, Token, } from "antlr4ng";
|
|
2
|
+
import { plurnkParser } from "./generated/plurnkParser.js";
|
|
3
|
+
export default class PlurnkErrorStrategy extends DefaultErrorStrategy {
|
|
4
|
+
static #OFFENDING_CHAR_RE = /at: '([^']*)'$/;
|
|
5
|
+
static #LEXER_MODE_CONTEXT = {
|
|
6
|
+
DEFAULT_MODE: "between statements",
|
|
7
|
+
SLOTS: "in slot region - expected `[signal]`, `(target)`, `<L>`, or `:body:` (any order)",
|
|
8
|
+
SIGNAL_TAGS: "in tag signal - expected tag, `,`, or `]`",
|
|
9
|
+
SIGNAL_INT: "in signal - expected integer for SEND/KILL, then `]`",
|
|
10
|
+
SIGNAL_IDENT: "in signal - expected executor for EXEC, then `]`",
|
|
11
|
+
TARGET: "in target slot - expected URI characters or `)`",
|
|
12
|
+
BODY: "in body",
|
|
13
|
+
};
|
|
14
|
+
static #SLOT_BY_TOKEN = {
|
|
15
|
+
[plurnkParser.OPEN_FIND]: "open tag `<<OPsuffix`",
|
|
16
|
+
[plurnkParser.OPEN_READ]: "open tag `<<OPsuffix`",
|
|
17
|
+
[plurnkParser.OPEN_EDIT]: "open tag `<<OPsuffix`",
|
|
18
|
+
[plurnkParser.OPEN_COPY]: "open tag `<<OPsuffix`",
|
|
19
|
+
[plurnkParser.OPEN_MOVE]: "open tag `<<OPsuffix`",
|
|
20
|
+
[plurnkParser.OPEN_OPEN]: "open tag `<<OPsuffix`",
|
|
21
|
+
[plurnkParser.OPEN_FOLD]: "open tag `<<OPsuffix`",
|
|
22
|
+
[plurnkParser.OPEN_SEND]: "open tag `<<OPsuffix`",
|
|
23
|
+
[plurnkParser.OPEN_EXEC]: "open tag `<<OPsuffix`",
|
|
24
|
+
[plurnkParser.OPEN_KILL]: "open tag `<<OPsuffix`",
|
|
25
|
+
[plurnkParser.OPEN_PLAN]: "open tag `<<OPsuffix`",
|
|
26
|
+
[plurnkParser.LBRACKET]: "`[` (signal slot opener)",
|
|
27
|
+
[plurnkParser.RBRACKET]: "`]` (signal slot closer)",
|
|
28
|
+
[plurnkParser.LPAREN]: "`(` (target slot opener)",
|
|
29
|
+
[plurnkParser.RPAREN]: "`)` (target slot closer)",
|
|
30
|
+
[plurnkParser.L_MARKER]: "`<L>` line marker",
|
|
31
|
+
[plurnkParser.COLON]: "`:` (body fence)",
|
|
32
|
+
[plurnkParser.COMMA]: "`,`",
|
|
33
|
+
[plurnkParser.INT]: "integer (SEND/KILL signal)",
|
|
34
|
+
[plurnkParser.IDENT]: "executor (EXEC signal)",
|
|
35
|
+
[plurnkParser.TAG]: "tag",
|
|
36
|
+
[plurnkParser.TARGET_TEXT]: "target content",
|
|
37
|
+
[plurnkParser.BODY_TEXT]: "body content",
|
|
38
|
+
[plurnkParser.CLOSE_TAG]: "close tag `:OPsuffix`",
|
|
39
|
+
[plurnkParser.TEXT]: "text between statements",
|
|
40
|
+
};
|
|
41
|
+
static translateLexerMessage(lexer, originalMsg) {
|
|
42
|
+
const modeName = lexer.modeNames[lexer.mode] ?? "DEFAULT_MODE";
|
|
43
|
+
const context = PlurnkErrorStrategy.#LEXER_MODE_CONTEXT[modeName] ?? "between statements";
|
|
44
|
+
const ch = PlurnkErrorStrategy.#extractOffendingChar(originalMsg);
|
|
45
|
+
// EXEC's identifier cannot start with a digit or `-`, making a leading numeric
|
|
46
|
+
// value an unambiguous misplaced timing scope. {§signal-scope-redirect}
|
|
47
|
+
if (modeName === "SIGNAL_IDENT" && /^'[-\d]'$/.test(ch)) {
|
|
48
|
+
return `unrecognized character ${ch} in signal - timeout/poll ride the \`<scope>\` slot; try \`EXEC<-1,300>\``;
|
|
49
|
+
}
|
|
50
|
+
// Redirect an unambiguous matcher prefix in the slot region into the body. Slash-led
|
|
51
|
+
// regex and XPath are excluded because `/` may instead be a target whose `(...)` wrap
|
|
52
|
+
// was omitted.
|
|
53
|
+
if (modeName === "SLOTS" && /^'[$~@]'$/.test(ch)) {
|
|
54
|
+
return `unrecognized character ${ch} in slot region - a matcher rides the \`:body:\` slot; put it between the body fences`;
|
|
55
|
+
}
|
|
56
|
+
return `unrecognized character ${ch} ${context}`;
|
|
57
|
+
}
|
|
58
|
+
static #extractOffendingChar(msg) {
|
|
59
|
+
const m = PlurnkErrorStrategy.#OFFENDING_CHAR_RE.exec(msg);
|
|
60
|
+
if (!m)
|
|
61
|
+
return "input";
|
|
62
|
+
const text = m[1];
|
|
63
|
+
return text === "" ? "end of input" : `'${text}'`;
|
|
64
|
+
}
|
|
65
|
+
static #describeToken(tok) {
|
|
66
|
+
if (!tok || tok.type === Token.EOF)
|
|
67
|
+
return "end of input";
|
|
68
|
+
const slot = PlurnkErrorStrategy.#SLOT_BY_TOKEN[tok.type];
|
|
69
|
+
if (slot)
|
|
70
|
+
return slot;
|
|
71
|
+
const text = tok.text ?? "";
|
|
72
|
+
return text.length > 0 ? `'${text}'` : "input";
|
|
73
|
+
}
|
|
74
|
+
static #describeExpected(e) {
|
|
75
|
+
const expected = e.getExpectedTokens();
|
|
76
|
+
if (!expected)
|
|
77
|
+
return null;
|
|
78
|
+
const types = expected.toArray();
|
|
79
|
+
if (types.length === 0)
|
|
80
|
+
return null;
|
|
81
|
+
// Every OPEN_<OP> token maps to the same canon name (`open tag <<OPsuffix`), so a
|
|
82
|
+
// statement-position expected-set yields that phrase 10+ times. Dedup to one entry -
|
|
83
|
+
// the model needs the distinct options, not the alternation count.
|
|
84
|
+
const names = [...new Set(types
|
|
85
|
+
.map((t) => PlurnkErrorStrategy.#SLOT_BY_TOKEN[t])
|
|
86
|
+
.filter((s) => Boolean(s)))];
|
|
87
|
+
if (names.length === 0)
|
|
88
|
+
return null;
|
|
89
|
+
if (names.length === 1)
|
|
90
|
+
return names[0];
|
|
91
|
+
if (names.length === 2)
|
|
92
|
+
return `${names[0]} or ${names[1]}`;
|
|
93
|
+
return `${names.slice(0, -1).join(", ")}, or ${names[names.length - 1]}`;
|
|
94
|
+
}
|
|
95
|
+
reportError(recognizer, e) {
|
|
96
|
+
if (this.inErrorRecoveryMode(recognizer))
|
|
97
|
+
return;
|
|
98
|
+
this.beginErrorCondition(recognizer);
|
|
99
|
+
const got = PlurnkErrorStrategy.#describeToken(e.offendingToken);
|
|
100
|
+
const expected = PlurnkErrorStrategy.#describeExpected(e);
|
|
101
|
+
let msg;
|
|
102
|
+
if (e instanceof InputMismatchException || e instanceof NoViableAltException) {
|
|
103
|
+
msg = expected ? `unexpected ${got}; expected ${expected}` : `unexpected ${got}`;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
msg = `unexpected ${got}`;
|
|
107
|
+
}
|
|
108
|
+
recognizer.notifyErrorListeners(msg, e.offendingToken, e);
|
|
109
|
+
}
|
|
110
|
+
reportMissingToken(recognizer) {
|
|
111
|
+
if (this.inErrorRecoveryMode(recognizer))
|
|
112
|
+
return;
|
|
113
|
+
this.beginErrorCondition(recognizer);
|
|
114
|
+
const tok = recognizer.getCurrentToken();
|
|
115
|
+
const expectedTokens = this.getExpectedTokens(recognizer);
|
|
116
|
+
const expectedNames = [...new Set(expectedTokens
|
|
117
|
+
.toArray()
|
|
118
|
+
.map((t) => PlurnkErrorStrategy.#SLOT_BY_TOKEN[t])
|
|
119
|
+
.filter((s) => Boolean(s)))];
|
|
120
|
+
const expected = expectedNames.length > 0
|
|
121
|
+
? (expectedNames.length === 1 ? expectedNames[0] : expectedNames.join(" or "))
|
|
122
|
+
: "more input";
|
|
123
|
+
const got = PlurnkErrorStrategy.#describeToken(tok);
|
|
124
|
+
const msg = `expected ${expected}; got ${got}`;
|
|
125
|
+
recognizer.notifyErrorListeners(msg, tok, null);
|
|
126
|
+
}
|
|
127
|
+
reportUnwantedToken(recognizer) {
|
|
128
|
+
if (this.inErrorRecoveryMode(recognizer))
|
|
129
|
+
return;
|
|
130
|
+
this.beginErrorCondition(recognizer);
|
|
131
|
+
const tok = recognizer.getCurrentToken();
|
|
132
|
+
const got = PlurnkErrorStrategy.#describeToken(tok);
|
|
133
|
+
const expectedTokens = this.getExpectedTokens(recognizer);
|
|
134
|
+
const expectedNames = [...new Set(expectedTokens
|
|
135
|
+
.toArray()
|
|
136
|
+
.map((t) => PlurnkErrorStrategy.#SLOT_BY_TOKEN[t])
|
|
137
|
+
.filter((s) => Boolean(s)))];
|
|
138
|
+
const expected = expectedNames.length > 0
|
|
139
|
+
? (expectedNames.length === 1 ? expectedNames[0] : expectedNames.join(" or "))
|
|
140
|
+
: null;
|
|
141
|
+
const msg = expected
|
|
142
|
+
? `unexpected ${got}; expected ${expected}`
|
|
143
|
+
: `unexpected ${got}`;
|
|
144
|
+
recognizer.notifyErrorListeners(msg, tok, null);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=PlurnkErrorStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlurnkErrorStrategy.js","sourceRoot":"","sources":["../../src/PlurnkErrorStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,GAGR,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoB;IACjE,MAAM,CAAC,kBAAkB,GAAG,gBAAgB,CAAC;IAE7C,MAAM,CAAC,mBAAmB,GAA2B;QACjD,YAAY,EAAE,oBAAoB;QAClC,KAAK,EAAE,kFAAkF;QACzF,WAAW,EAAE,2CAA2C;QACxD,UAAU,EAAE,sDAAsD;QAClE,YAAY,EAAE,kDAAkD;QAChE,MAAM,EAAE,iDAAiD;QACzD,IAAI,EAAE,SAAS;KAClB,CAAC;IAEF,MAAM,CAAC,cAAc,GAA2B;QAC5C,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,0BAA0B;QACnD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,0BAA0B;QACnD,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,0BAA0B;QACjD,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,0BAA0B;QACjD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,mBAAmB;QAC5C,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,kBAAkB;QACxC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK;QAC3B,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,4BAA4B;QAChD,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,wBAAwB;QAC9C,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK;QACzB,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,gBAAgB;QAC5C,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,cAAc;QACxC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,uBAAuB;QACjD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,yBAAyB;KACjD,CAAC;IAEF,MAAM,CAAC,qBAAqB,CAAC,KAAkB,EAAE,WAAmB;QAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;QAC/D,MAAM,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC;QAC1F,MAAM,EAAE,GAAG,mBAAmB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAClE,+EAA+E;QAC/E,wEAAwE;QACxE,IAAI,QAAQ,KAAK,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACtD,OAAO,0BAA0B,EAAE,2EAA2E,CAAC;QACnH,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,eAAe;QACf,IAAI,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,0BAA0B,EAAE,uFAAuF,CAAC;QAC/H,CAAC;QACD,OAAO,0BAA0B,EAAE,IAAI,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,GAAW;QACpC,MAAM,CAAC,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAiB;QACnC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG;YAAE,OAAO,cAAc,CAAC;QAC1D,MAAM,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,CAAuB;QAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAa,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,kFAAkF;QAClF,qFAAqF;QACrF,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CACrB,KAAK;iBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACjD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC;IAEe,WAAW,CAAC,UAAkB,EAAE,CAAuB;QACnE,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAAE,OAAO;QACjD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAErC,MAAM,GAAG,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAE1D,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC,YAAY,sBAAsB,IAAI,CAAC,YAAY,oBAAoB,EAAE,CAAC;YAC3E,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,GAAG,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC;QACrF,CAAC;aAAM,CAAC;YACJ,GAAG,GAAG,cAAc,GAAG,EAAE,CAAC;QAC9B,CAAC;QAED,UAAU,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEe,kBAAkB,CAAC,UAAkB;QACjD,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAAE,OAAO;QACjD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAC7B,cAAc;iBACT,OAAO,EAAE;iBACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACjD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC,CAAC,YAAY,CAAC;QACnB,MAAM,GAAG,GAAG,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,YAAY,QAAQ,SAAS,GAAG,EAAE,CAAC;QAC/C,UAAU,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAEe,mBAAmB,CAAC,UAAkB;QAClD,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAAE,OAAO;QACjD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,mBAAmB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAC7B,cAAc;iBACT,OAAO,EAAE;iBACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACjD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,GAAG,GAAG,QAAQ;YAChB,CAAC,CAAC,cAAc,GAAG,cAAc,QAAQ,EAAE;YAC3C,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC;QAC1B,UAAU,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type ErrorSource = "lexer" | "parser" | "visitor";
|
|
2
|
+
export type Severity = "error" | "warning";
|
|
3
|
+
export default class PlurnkParseError extends Error {
|
|
4
|
+
readonly line: number;
|
|
5
|
+
readonly column: number;
|
|
6
|
+
readonly source: ErrorSource;
|
|
7
|
+
readonly severity: Severity;
|
|
8
|
+
constructor(line: number, column: number, source: ErrorSource, message: string, severity?: Severity);
|
|
9
|
+
toJSON(): {
|
|
10
|
+
line: number;
|
|
11
|
+
column: number;
|
|
12
|
+
source: ErrorSource;
|
|
13
|
+
severity: Severity;
|
|
14
|
+
message: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=PlurnkParseError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlurnkParseError.d.ts","sourceRoot":"","sources":["../../src/PlurnkParseError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AACzD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAkB,EAO3G;IAED,MAAM,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAQnG;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export default class PlurnkParseError extends Error {
|
|
2
|
+
line;
|
|
3
|
+
column;
|
|
4
|
+
source;
|
|
5
|
+
severity;
|
|
6
|
+
constructor(line, column, source, message, severity = "error") {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "PlurnkParseError";
|
|
9
|
+
this.line = line;
|
|
10
|
+
this.column = column;
|
|
11
|
+
this.source = source;
|
|
12
|
+
this.severity = severity;
|
|
13
|
+
}
|
|
14
|
+
toJSON() {
|
|
15
|
+
return {
|
|
16
|
+
line: this.line,
|
|
17
|
+
column: this.column,
|
|
18
|
+
source: this.source,
|
|
19
|
+
severity: this.severity,
|
|
20
|
+
message: this.message,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=PlurnkParseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlurnkParseError.js","sourceRoot":"","sources":["../../src/PlurnkParseError.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,KAAK;IACtC,IAAI,CAAS;IACb,MAAM,CAAS;IACf,MAAM,CAAc;IACpB,QAAQ,CAAW;IAE5B,YAAY,IAAY,EAAE,MAAc,EAAE,MAAmB,EAAE,OAAe,EAAE,QAAQ,GAAa,OAAO;QACxG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,MAAM;QACF,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ClientStatement, ParseResult } from "./types.ts";
|
|
2
|
+
export default class PlurnkParser {
|
|
3
|
+
#private;
|
|
4
|
+
static parse(input: string): ParseResult;
|
|
5
|
+
static parseStatements(input: string): ParseResult;
|
|
6
|
+
static parseLog(input: string): ParseResult;
|
|
7
|
+
static parseClient(input: string): ParseResult<ClientStatement>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=PlurnkParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlurnkParser.d.ts","sourceRoot":"","sources":["../../src/PlurnkParser.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAa,WAAW,EAA6B,MAAM,YAAY,CAAC;AAsBrG,MAAM,CAAC,OAAO,OAAO,YAAY;;IAG7B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAavC;IAgJD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAEjD;IAMD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAE1C;IAKD,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,CAM9D;CAgOJ"}
|