ohm-js 17.4.0 → 18.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -14
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/src/assert.d.ts +3 -0
- package/dist/src/assert.d.ts.map +1 -0
- package/dist/src/assert.js +9 -0
- package/dist/src/assert.js.map +1 -0
- package/dist/src/createToAst.d.ts +22 -0
- package/dist/src/createToAst.d.ts.map +1 -0
- package/dist/src/createToAst.js +140 -0
- package/dist/src/createToAst.js.map +1 -0
- package/dist/src/extras.d.ts +13 -0
- package/dist/src/extras.d.ts.map +1 -0
- package/dist/src/extras.js +122 -0
- package/dist/src/extras.js.map +1 -0
- package/dist/src/miniohm.d.ts +234 -0
- package/dist/src/miniohm.d.ts.map +1 -0
- package/dist/src/miniohm.js +702 -0
- package/dist/src/miniohm.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +24 -141
- package/dist/built-in-rules.js +0 -2
- package/dist/ohm-extras.cjs +0 -6101
- package/dist/ohm-extras.js +0 -6107
- package/dist/ohm-grammar.js +0 -2
- package/dist/ohm.cjs +0 -5662
- package/dist/ohm.cjs.map +0 -1
- package/dist/ohm.js +0 -5668
- package/dist/ohm.min.js +0 -1
- package/dist/operations-and-attributes.js +0 -2
- package/extras/VisitorFamily.js +0 -160
- package/extras/extractExamples.js +0 -149
- package/extras/index.d.ts +0 -42
- package/extras/index.mjs +0 -5
- package/extras/ohm-with-examples.ohm +0 -46
- package/extras/recoverSourceOrder.js +0 -48
- package/extras/semantics-toAST.js +0 -131
- package/extras/storedAttributes.js +0 -24
- package/index.d.ts +0 -490
- package/index.mjs +0 -1
- package/src/Builder.js +0 -176
- package/src/CaseInsensitiveTerminal.js +0 -60
- package/src/Failure.js +0 -93
- package/src/Grammar.js +0 -378
- package/src/GrammarDecl.js +0 -181
- package/src/IndentationSensitive.js +0 -141
- package/src/InputStream.js +0 -78
- package/src/Interval.js +0 -129
- package/src/MatchResult.js +0 -105
- package/src/MatchState.js +0 -401
- package/src/Matcher.js +0 -114
- package/src/PosInfo.js +0 -102
- package/src/Semantics.js +0 -679
- package/src/Trace.js +0 -204
- package/src/buildGrammar.js +0 -238
- package/src/built-in-rules.ohm +0 -42
- package/src/common.js +0 -193
- package/src/deferredInit.js +0 -2
- package/src/errors.js +0 -317
- package/src/findIndentation.js +0 -41
- package/src/grammarDeferredInit.js +0 -4
- package/src/main-kernel.js +0 -12
- package/src/main.js +0 -69
- package/src/makeRecipe.js +0 -13
- package/src/nodes.js +0 -175
- package/src/ohm-cmd.js +0 -30
- package/src/ohm-grammar.ohm +0 -124
- package/src/operations-and-attributes.ohm +0 -23
- package/src/pexprs-allowsSkippingPrecedingSpace.js +0 -39
- package/src/pexprs-assertAllApplicationsAreValid.js +0 -121
- package/src/pexprs-assertChoicesHaveUniformArity.js +0 -70
- package/src/pexprs-assertIteratedExprsAreNotNullable.js +0 -56
- package/src/pexprs-eval.js +0 -405
- package/src/pexprs-getArity.js +0 -45
- package/src/pexprs-introduceParams.js +0 -62
- package/src/pexprs-isNullable.js +0 -67
- package/src/pexprs-main.js +0 -196
- package/src/pexprs-outputRecipe.js +0 -96
- package/src/pexprs-substituteParams.js +0 -54
- package/src/pexprs-toArgumentNameList.js +0 -180
- package/src/pexprs-toDisplayString.js +0 -42
- package/src/pexprs-toFailure.js +0 -66
- package/src/pexprs-toString.js +0 -76
- package/src/pexprs.js +0 -21
- package/src/semanticsDeferredInit.js +0 -55
- package/src/unicode.js +0 -54
- package/src/util.js +0 -173
- package/src/version.js +0 -2
package/README.md
CHANGED
|
@@ -21,19 +21,6 @@ Some awesome things people have built using Ohm:
|
|
|
21
21
|
- A [browser-based tool](https://www.arthurcarabott.com/konnakkol/) that turns written _Konnakkol_ (a South Indian vocal percussion art) into audio.
|
|
22
22
|
- [Wildcard](https://www.geoffreylitt.com/wildcard/), a browser extension that empowers anyone to modify websites to meet their own specific needs, uses Ohm for its spreadsheet formulas.
|
|
23
23
|
|
|
24
|
-
## Sponsors
|
|
25
|
-
|
|
26
|
-
Since 2017, Ohm has been maintained by [@pdubroy](https://github.com/pdubroy) on an unpaid basis. Please consider [becoming a sponsor](http://github.com/sponsors/pdubroy/)!
|
|
27
|
-
|
|
28
|
-
### Diamond 💎
|
|
29
|
-
|
|
30
|
-
<table>
|
|
31
|
-
<tr>
|
|
32
|
-
<td><a href="https://shopify.com"><img alt="Shopify" src="./doc/images/shopify-logo.png" height="48"></a></td>
|
|
33
|
-
<td><a href="https://projectsubstrate.org"><img alt="Project Substrate" src="./doc/images/substrate-logo.png" height="128"></a></td>
|
|
34
|
-
</tr>
|
|
35
|
-
</table>
|
|
36
|
-
|
|
37
24
|
## Getting Started
|
|
38
25
|
|
|
39
26
|
The easiest way to get started with Ohm is to use the [interactive editor](https://ohmjs.org/editor/). Alternatively, you can play with one of the following examples on JSFiddle:
|
|
@@ -48,7 +35,7 @@ The easiest way to get started with Ohm is to use the [interactive editor](https
|
|
|
48
35
|
- [Examples](https://github.com/ohmjs/ohm/tree/main/examples/)
|
|
49
36
|
- [Documentation](doc/README.md)
|
|
50
37
|
- For community support and discussion, join us on [Discord](https://discord.gg/KwxY5gegRQ), [GitHub Discussions](https://github.com/ohmjs/ohm/discussions), or the [ohm-discuss mailing list](https://groups.google.com/u/0/g/ohm-discuss).
|
|
51
|
-
- For updates, follow [
|
|
38
|
+
- For updates, follow on [Bluesky](hhttps://bsky.app/profile/ohmjs.org) or [Mastodon](https://hachyderm.io/@ohmjs).
|
|
52
39
|
|
|
53
40
|
### Installation
|
|
54
41
|
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/assert.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,SAAqB,GAAG,OAAO,CAAC,IAAI,CAEhF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAA0B,GAAG,WAAW,CAAC,CAAC,CAAC,CAGnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/assert.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,OAAO,GAAG,kBAAkB;IAChE,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,CAAI,EAAE,GAAG,GAAG,uBAAuB;IACjE,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,CAAmB,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CstNode, CstNodeChildren, MatchResult, NonterminalNode, TerminalNode } from './miniohm.ts';
|
|
2
|
+
export type AstNodeTemplate<R> = {
|
|
3
|
+
[property: string]: number | string | boolean | object | null | ((this: CstNode, children: CstNodeChildren) => R);
|
|
4
|
+
};
|
|
5
|
+
export type AstMapping<R> = Record<string, AstNodeTemplate<R> | number | ((this: CstNode, ...children: CstNodeChildren) => R)>;
|
|
6
|
+
export declare function createToAst<TNode = any>(mapping: AstMapping<TNode>, opts?: {
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
}): (nodeOrResult: MatchResult | CstNode) => TNode;
|
|
9
|
+
export declare class AstBuilder<TNode = any> {
|
|
10
|
+
currNode?: CstNode;
|
|
11
|
+
private _mapping;
|
|
12
|
+
private _depth;
|
|
13
|
+
private _debug;
|
|
14
|
+
constructor(mapping: AstMapping<TNode>, opts?: {
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
});
|
|
17
|
+
private _debugLog;
|
|
18
|
+
_visitTerminal(node: TerminalNode): string;
|
|
19
|
+
_visitNonterminal(node: NonterminalNode): unknown;
|
|
20
|
+
toAst(nodeOrResult: MatchResult | CstNode): TNode;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=createToAst.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createToAst.d.ts","sourceRoot":"","sources":["../../src/createToAst.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,WAAW,EACX,eAAe,EAEf,YAAY,EACb,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,CAAC,QAAQ,EAAE,MAAM,GACb,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,KAAK,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAChC,MAAM,EACJ,eAAe,CAAC,CAAC,CAAC,GAClB,MAAM,GACN,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,eAAe,KAAK,CAAC,CAAC,CACvD,CAAC;AAeF,wBAAgB,WAAW,CAAC,KAAK,GAAG,GAAG,EACrC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAC1B,IAAI,GAAE;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAM,GAC3B,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,KAAK,KAAK,CAGhD;AAED,qBAAa,UAAU,CAAC,KAAK,GAAG,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAM;IAmBpE,OAAO,CAAC,SAAS;IAIjB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI1C,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO;IAsEjD,KAAK,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,KAAK;CA8BlD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { assert, checkNotNull } from "./assert.js";
|
|
2
|
+
function childAt(children, idx, ruleName, propName = '') {
|
|
3
|
+
if (idx > children.length) {
|
|
4
|
+
const path = propName ? `${ruleName}.${propName}` : ruleName;
|
|
5
|
+
throw new Error(`${path}: Child index ${idx} out of range`);
|
|
6
|
+
}
|
|
7
|
+
return checkNotNull(children[idx]);
|
|
8
|
+
}
|
|
9
|
+
export function createToAst(mapping, opts = {}) {
|
|
10
|
+
const builder = new AstBuilder(mapping, opts);
|
|
11
|
+
return (nodeOrResult) => builder.toAst(nodeOrResult);
|
|
12
|
+
}
|
|
13
|
+
export class AstBuilder {
|
|
14
|
+
currNode;
|
|
15
|
+
_mapping;
|
|
16
|
+
_depth = -1;
|
|
17
|
+
_debug = false;
|
|
18
|
+
constructor(mapping, opts = {}) {
|
|
19
|
+
const handleListOf = (child) => this.toAst(child);
|
|
20
|
+
const handleEmptyListOf = () => [];
|
|
21
|
+
const handleNonemptyListOf = (first, sepAndElemList) => {
|
|
22
|
+
assert(!!sepAndElemList?.isList(), 'Expected a ListNode');
|
|
23
|
+
return [this.toAst(first), ...sepAndElemList.collect((_, elem) => this.toAst(elem))];
|
|
24
|
+
};
|
|
25
|
+
this._mapping = {
|
|
26
|
+
listOf: handleListOf,
|
|
27
|
+
ListOf: handleListOf,
|
|
28
|
+
emptyListOf: handleEmptyListOf,
|
|
29
|
+
EmptyListOf: handleEmptyListOf,
|
|
30
|
+
nonemptyListOf: handleNonemptyListOf,
|
|
31
|
+
NonemptyListOf: handleNonemptyListOf,
|
|
32
|
+
...mapping,
|
|
33
|
+
};
|
|
34
|
+
this._debug = opts.debug ?? false;
|
|
35
|
+
}
|
|
36
|
+
_debugLog(...data) {
|
|
37
|
+
if (this._debug)
|
|
38
|
+
console.log(' '.repeat(this._depth), ...data);
|
|
39
|
+
}
|
|
40
|
+
_visitTerminal(node) {
|
|
41
|
+
return node.sourceString;
|
|
42
|
+
}
|
|
43
|
+
_visitNonterminal(node) {
|
|
44
|
+
const { children, ctorName } = node;
|
|
45
|
+
const mapping = this._mapping;
|
|
46
|
+
this._debugLog(`> ${ctorName}`);
|
|
47
|
+
const dbgReturn = (val) => {
|
|
48
|
+
this._debugLog(`| ${ctorName} DONE`);
|
|
49
|
+
return val;
|
|
50
|
+
};
|
|
51
|
+
// without customization
|
|
52
|
+
if (!Object.hasOwn(mapping, ctorName)) {
|
|
53
|
+
// lexical rule
|
|
54
|
+
if (node.isLexical()) {
|
|
55
|
+
return node.sourceString;
|
|
56
|
+
}
|
|
57
|
+
// singular node (e.g. only surrounded by literals or lookaheads)
|
|
58
|
+
const realChildren = children.filter(c => !c.isTerminal());
|
|
59
|
+
if (realChildren.length === 1) {
|
|
60
|
+
return dbgReturn(this.toAst(realChildren[0]));
|
|
61
|
+
}
|
|
62
|
+
// rest: terms with multiple children
|
|
63
|
+
}
|
|
64
|
+
// direct forward
|
|
65
|
+
if (typeof mapping[ctorName] === 'number') {
|
|
66
|
+
const idx = mapping[ctorName];
|
|
67
|
+
return dbgReturn(this.toAst(childAt(children, idx, ctorName)));
|
|
68
|
+
}
|
|
69
|
+
assert(typeof mapping[ctorName] !== 'function', "shouldn't be possible");
|
|
70
|
+
// named/mapped children or unnamed children ('0', '1', '2', ...)
|
|
71
|
+
const propMap = mapping[ctorName] || children;
|
|
72
|
+
const ans = {
|
|
73
|
+
type: ctorName,
|
|
74
|
+
};
|
|
75
|
+
// eslint-disable-next-line guard-for-in
|
|
76
|
+
for (const prop in propMap) {
|
|
77
|
+
const mappedProp = mapping[ctorName] && mapping[ctorName][prop];
|
|
78
|
+
if (typeof mappedProp === 'number') {
|
|
79
|
+
// direct forward
|
|
80
|
+
ans[prop] = this.toAst(childAt(children, mappedProp, ctorName, prop));
|
|
81
|
+
}
|
|
82
|
+
else if (typeof mappedProp === 'string' ||
|
|
83
|
+
typeof mappedProp === 'boolean' ||
|
|
84
|
+
mappedProp === null) {
|
|
85
|
+
// primitive value
|
|
86
|
+
ans[prop] = mappedProp;
|
|
87
|
+
}
|
|
88
|
+
else if (typeof mappedProp === 'object' && mappedProp instanceof Number) {
|
|
89
|
+
// primitive number (must be unboxed)
|
|
90
|
+
ans[prop] = Number(mappedProp);
|
|
91
|
+
}
|
|
92
|
+
else if (typeof mappedProp === 'function') {
|
|
93
|
+
// computed value
|
|
94
|
+
ans[prop] = mappedProp.call(this.currNode, children);
|
|
95
|
+
}
|
|
96
|
+
else if (mappedProp === undefined) {
|
|
97
|
+
const child = children[Number(prop)];
|
|
98
|
+
if (child && !child.isTerminal()) {
|
|
99
|
+
ans[prop] = this.toAst(child);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// delete predefined 'type' properties, like 'type', if explicitly removed
|
|
103
|
+
delete ans[prop];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return dbgReturn(ans);
|
|
108
|
+
}
|
|
109
|
+
toAst(nodeOrResult) {
|
|
110
|
+
let node = nodeOrResult;
|
|
111
|
+
if (typeof nodeOrResult._succeeded === 'boolean') {
|
|
112
|
+
const matchResult = nodeOrResult;
|
|
113
|
+
assert(matchResult._succeeded, 'Cannot convert failed match result to AST');
|
|
114
|
+
node = matchResult.getCstRoot();
|
|
115
|
+
}
|
|
116
|
+
let ans;
|
|
117
|
+
this._depth++;
|
|
118
|
+
if (node.isTerminal()) {
|
|
119
|
+
ans = this._visitTerminal(node);
|
|
120
|
+
}
|
|
121
|
+
else if (node.isOptional()) {
|
|
122
|
+
ans = node.ifPresent((child) => this.toAst(child), () => null);
|
|
123
|
+
}
|
|
124
|
+
else if (node.isList() || node.isSeq()) {
|
|
125
|
+
ans = node.children.map(c => this.toAst(c));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
assert(node.isNonterminal(), `Unknown node type: ${node.type}`);
|
|
129
|
+
this.currNode = node;
|
|
130
|
+
ans =
|
|
131
|
+
typeof this._mapping[node.ctorName] === 'function'
|
|
132
|
+
? this._mapping[node.ctorName].apply(this.currNode, node.children)
|
|
133
|
+
: this._visitNonterminal(node);
|
|
134
|
+
this.currNode = undefined;
|
|
135
|
+
}
|
|
136
|
+
this._depth--;
|
|
137
|
+
return ans;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=createToAst.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createToAst.js","sourceRoot":"","sources":["../../src/createToAst.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface LineAndColumnInfo {
|
|
2
|
+
offset: number;
|
|
3
|
+
lineNum: number;
|
|
4
|
+
colNum: number;
|
|
5
|
+
line: string;
|
|
6
|
+
prevLine: string | null;
|
|
7
|
+
nextLine: string | null;
|
|
8
|
+
toString(...ranges: [number, number][]): string;
|
|
9
|
+
}
|
|
10
|
+
export declare function getLineAndColumn(str: string, offset: number): LineAndColumnInfo;
|
|
11
|
+
export declare function getLineAndColumnMessage(str: string, offset: number, ...ranges: [number, number][]): string;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=extras.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extras.d.ts","sourceRoot":"","sources":["../../src/extras.ts"],"names":[],"mappings":"AAgCA,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;CACjD;AAqDD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAwD/E;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAC5B,MAAM,CAER"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Self-contained copies of getLineAndColumn / getLineAndColumnMessage,
|
|
2
|
+
// originally from packages/ohm-js/src/util.js. Inlined here so the runtime
|
|
3
|
+
// package has zero dependency on the legacy engine.
|
|
4
|
+
function repeatStr(str, n) {
|
|
5
|
+
return new Array(n + 1).join(str);
|
|
6
|
+
}
|
|
7
|
+
function padLeft(str, len, ch = ' ') {
|
|
8
|
+
if (str.length < len) {
|
|
9
|
+
return repeatStr(ch, len - str.length) + str;
|
|
10
|
+
}
|
|
11
|
+
return str;
|
|
12
|
+
}
|
|
13
|
+
function padNumbersToEqualLength(arr) {
|
|
14
|
+
let maxLen = 0;
|
|
15
|
+
const strings = arr.map(n => {
|
|
16
|
+
const str = n.toString();
|
|
17
|
+
maxLen = Math.max(maxLen, str.length);
|
|
18
|
+
return str;
|
|
19
|
+
});
|
|
20
|
+
return strings.map(s => padLeft(s, maxLen));
|
|
21
|
+
}
|
|
22
|
+
function strcpy(dest, src, offset) {
|
|
23
|
+
const origDestLen = dest.length;
|
|
24
|
+
const start = dest.slice(0, offset);
|
|
25
|
+
const end = dest.slice(offset + src.length);
|
|
26
|
+
return (start + src + end).substr(0, origDestLen);
|
|
27
|
+
}
|
|
28
|
+
function lineAndColumnToMessage(...ranges) {
|
|
29
|
+
const lineAndCol = this;
|
|
30
|
+
const { offset } = lineAndCol;
|
|
31
|
+
let result = '';
|
|
32
|
+
result += 'Line ' + lineAndCol.lineNum + ', col ' + lineAndCol.colNum + ':\n';
|
|
33
|
+
const lineNumbers = padNumbersToEqualLength([
|
|
34
|
+
lineAndCol.prevLine == null ? 0 : lineAndCol.lineNum - 1,
|
|
35
|
+
lineAndCol.lineNum,
|
|
36
|
+
lineAndCol.nextLine == null ? 0 : lineAndCol.lineNum + 1,
|
|
37
|
+
]);
|
|
38
|
+
const appendLine = (num, content, prefix) => {
|
|
39
|
+
result += prefix + lineNumbers[num] + ' | ' + content + '\n';
|
|
40
|
+
};
|
|
41
|
+
if (lineAndCol.prevLine != null) {
|
|
42
|
+
appendLine(0, lineAndCol.prevLine, ' ');
|
|
43
|
+
}
|
|
44
|
+
appendLine(1, lineAndCol.line, '> ');
|
|
45
|
+
const lineLen = lineAndCol.line.length;
|
|
46
|
+
let indicationLine = repeatStr(' ', lineLen + 1);
|
|
47
|
+
for (let i = 0; i < ranges.length; ++i) {
|
|
48
|
+
let startIdx = ranges[i][0];
|
|
49
|
+
let endIdx = ranges[i][1];
|
|
50
|
+
if (!(startIdx >= 0 && startIdx <= endIdx)) {
|
|
51
|
+
throw new Error('range start must be >= 0 and <= end');
|
|
52
|
+
}
|
|
53
|
+
const lineStartOffset = offset - lineAndCol.colNum + 1;
|
|
54
|
+
startIdx = Math.max(0, startIdx - lineStartOffset);
|
|
55
|
+
endIdx = Math.min(endIdx - lineStartOffset, lineLen);
|
|
56
|
+
indicationLine = strcpy(indicationLine, repeatStr('~', endIdx - startIdx), startIdx);
|
|
57
|
+
}
|
|
58
|
+
const gutterWidth = 2 + lineNumbers[1].length + 3;
|
|
59
|
+
result += repeatStr(' ', gutterWidth);
|
|
60
|
+
indicationLine = strcpy(indicationLine, '^', lineAndCol.colNum - 1);
|
|
61
|
+
result += indicationLine.replace(/ +$/, '') + '\n';
|
|
62
|
+
if (lineAndCol.nextLine != null) {
|
|
63
|
+
appendLine(2, lineAndCol.nextLine, ' ');
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
export function getLineAndColumn(str, offset) {
|
|
68
|
+
let lineNum = 1;
|
|
69
|
+
let colNum = 1;
|
|
70
|
+
let currOffset = 0;
|
|
71
|
+
let lineStartOffset = 0;
|
|
72
|
+
let nextLine = null;
|
|
73
|
+
let prevLine = null;
|
|
74
|
+
let prevLineStartOffset = -1;
|
|
75
|
+
while (currOffset < offset) {
|
|
76
|
+
const c = str.charAt(currOffset++);
|
|
77
|
+
if (c === '\n') {
|
|
78
|
+
lineNum++;
|
|
79
|
+
colNum = 1;
|
|
80
|
+
prevLineStartOffset = lineStartOffset;
|
|
81
|
+
lineStartOffset = currOffset;
|
|
82
|
+
}
|
|
83
|
+
else if (c !== '\r') {
|
|
84
|
+
colNum++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Find the end of the target line.
|
|
88
|
+
let lineEndOffset = str.indexOf('\n', lineStartOffset);
|
|
89
|
+
if (lineEndOffset === -1) {
|
|
90
|
+
lineEndOffset = str.length;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Get the next line.
|
|
94
|
+
const nextLineEndOffset = str.indexOf('\n', lineEndOffset + 1);
|
|
95
|
+
nextLine =
|
|
96
|
+
nextLineEndOffset === -1
|
|
97
|
+
? str.slice(lineEndOffset)
|
|
98
|
+
: str.slice(lineEndOffset, nextLineEndOffset);
|
|
99
|
+
// Strip leading and trailing EOL char(s).
|
|
100
|
+
nextLine = nextLine.replace(/^\r?\n/, '').replace(/\r$/, '');
|
|
101
|
+
}
|
|
102
|
+
// Get the previous line.
|
|
103
|
+
if (prevLineStartOffset >= 0) {
|
|
104
|
+
// Strip trailing EOL char(s).
|
|
105
|
+
prevLine = str.slice(prevLineStartOffset, lineStartOffset).replace(/\r?\n$/, '');
|
|
106
|
+
}
|
|
107
|
+
// Get the target line, stripping a trailing carriage return if necessary.
|
|
108
|
+
const line = str.slice(lineStartOffset, lineEndOffset).replace(/\r$/, '');
|
|
109
|
+
return {
|
|
110
|
+
offset,
|
|
111
|
+
lineNum,
|
|
112
|
+
colNum,
|
|
113
|
+
line,
|
|
114
|
+
prevLine,
|
|
115
|
+
nextLine,
|
|
116
|
+
toString: lineAndColumnToMessage,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export function getLineAndColumnMessage(str, offset, ...ranges) {
|
|
120
|
+
return getLineAndColumn(str, offset).toString(...ranges);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=extras.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extras.js","sourceRoot":"","sources":["../../src/extras.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
export declare const CstNodeType: {
|
|
2
|
+
readonly NONTERMINAL: 0;
|
|
3
|
+
readonly TERMINAL: 1;
|
|
4
|
+
readonly LIST: 2;
|
|
5
|
+
readonly OPT: 3;
|
|
6
|
+
readonly SEQ: 4;
|
|
7
|
+
};
|
|
8
|
+
export type CstNodeType = (typeof CstNodeType)[keyof typeof CstNodeType];
|
|
9
|
+
export declare class Interval {
|
|
10
|
+
startIdx: number;
|
|
11
|
+
endIdx: number;
|
|
12
|
+
private _sourceString;
|
|
13
|
+
constructor(sourceString: string, startIdx: number, endIdx: number);
|
|
14
|
+
get sourceString(): string;
|
|
15
|
+
get contents(): string;
|
|
16
|
+
}
|
|
17
|
+
export declare class Failure {
|
|
18
|
+
private _description;
|
|
19
|
+
private _fluffy;
|
|
20
|
+
constructor(description: string, fluffy: boolean);
|
|
21
|
+
isFluffy(): boolean;
|
|
22
|
+
toString(): string;
|
|
23
|
+
}
|
|
24
|
+
export declare class WasmGrammar {
|
|
25
|
+
name: string;
|
|
26
|
+
private _instance?;
|
|
27
|
+
private _imports;
|
|
28
|
+
private _ruleIds;
|
|
29
|
+
private _ruleNames;
|
|
30
|
+
private _input;
|
|
31
|
+
_failureDescriptions: string[];
|
|
32
|
+
private _resultStack;
|
|
33
|
+
/**
|
|
34
|
+
* Create a new WasmGrammar object.
|
|
35
|
+
* If `bytes` is specified, the WebAssembly module will be synchronously
|
|
36
|
+
* compiled and instantiated. Use `instantiate` or `instantiateStreaming`
|
|
37
|
+
* to instantiate asynchronously.
|
|
38
|
+
*/
|
|
39
|
+
constructor(bytes?: BufferSource);
|
|
40
|
+
private _init;
|
|
41
|
+
private _initMemoConfig;
|
|
42
|
+
_manage(result: MatchResult): void;
|
|
43
|
+
_dispose(result: MatchResult): void;
|
|
44
|
+
static instantiate(source: BufferSource): Promise<WasmGrammar>;
|
|
45
|
+
static instantiateStreaming(source: Response | Promise<Response>): Promise<WasmGrammar>;
|
|
46
|
+
_instantiate(source: BufferSource, debugImports?: any): Promise<this>;
|
|
47
|
+
_instantiateStreaming(source: Response | Promise<Response>, debugImports?: any): Promise<WasmGrammar>;
|
|
48
|
+
private _getGrammarName;
|
|
49
|
+
private _extractStrings;
|
|
50
|
+
match<T>(input: string, ruleName?: string): MatchResult;
|
|
51
|
+
recordFailures(): number[];
|
|
52
|
+
getFailureDescription(id: number): string;
|
|
53
|
+
getMemorySizeBytes(): number;
|
|
54
|
+
getCstRoot(): CstNode;
|
|
55
|
+
private _fillInputBuffer;
|
|
56
|
+
getRightmostFailurePosition(): number;
|
|
57
|
+
}
|
|
58
|
+
interface MatchContext {
|
|
59
|
+
ruleNames: string[];
|
|
60
|
+
view: DataView;
|
|
61
|
+
input: string;
|
|
62
|
+
}
|
|
63
|
+
export type CstNode = NonterminalNode | TerminalNode | ListNode | OptNode | SeqNode;
|
|
64
|
+
export type CstNodeChildren = readonly CstNode[];
|
|
65
|
+
export interface CstNodeBase {
|
|
66
|
+
ctorName: string;
|
|
67
|
+
source: {
|
|
68
|
+
startIdx: number;
|
|
69
|
+
endIdx: number;
|
|
70
|
+
};
|
|
71
|
+
sourceString: string;
|
|
72
|
+
matchLength: number;
|
|
73
|
+
isNonterminal(): this is NonterminalNode;
|
|
74
|
+
isTerminal(): this is TerminalNode;
|
|
75
|
+
isOptional(): this is OptNode;
|
|
76
|
+
isSeq(): this is SeqNode;
|
|
77
|
+
isList(): this is ListNode;
|
|
78
|
+
}
|
|
79
|
+
export interface NonterminalNode<TChildren extends CstNodeChildren = CstNodeChildren> extends CstNodeBase {
|
|
80
|
+
type: typeof CstNodeType.NONTERMINAL;
|
|
81
|
+
ctorName: string;
|
|
82
|
+
leadingSpaces?: NonterminalNode;
|
|
83
|
+
children: TChildren;
|
|
84
|
+
isSyntactic(): boolean;
|
|
85
|
+
isLexical(): boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface TerminalNode extends CstNodeBase {
|
|
88
|
+
type: typeof CstNodeType.TERMINAL;
|
|
89
|
+
ctorName: '_terminal';
|
|
90
|
+
leadingSpaces?: NonterminalNode;
|
|
91
|
+
children: readonly [];
|
|
92
|
+
value: string;
|
|
93
|
+
}
|
|
94
|
+
export interface ListNode<TNode extends CstNode = CstNode> extends CstNodeBase {
|
|
95
|
+
type: typeof CstNodeType.LIST;
|
|
96
|
+
ctorName: '_list';
|
|
97
|
+
children: readonly TNode[];
|
|
98
|
+
collect: <R>(cb: (...children: CstNode[]) => R) => R[];
|
|
99
|
+
}
|
|
100
|
+
export interface OptNode<TChild extends CstNode = CstNode> extends CstNodeBase {
|
|
101
|
+
type: typeof CstNodeType.OPT;
|
|
102
|
+
ctorName: '_opt';
|
|
103
|
+
children: [] | [TChild];
|
|
104
|
+
ifPresent<R>(consume: TChild extends SeqNode<infer T> ? (...children: T) => R : (child: TChild) => R, orElse?: () => R): R;
|
|
105
|
+
ifPresent<R>(consume: TChild extends SeqNode<infer T> ? (...children: T) => R : (child: TChild) => R): R | undefined;
|
|
106
|
+
isPresent(): boolean;
|
|
107
|
+
isEmpty(): boolean;
|
|
108
|
+
}
|
|
109
|
+
export interface SeqNode<TChildren extends CstNodeChildren = CstNodeChildren> extends CstNodeBase {
|
|
110
|
+
type: typeof CstNodeType.SEQ;
|
|
111
|
+
ctorName: '_seq';
|
|
112
|
+
children: TChildren;
|
|
113
|
+
unpack: <R>(cb: (...children: TChildren) => R) => R;
|
|
114
|
+
}
|
|
115
|
+
export declare class CstNodeImpl implements CstNodeBase {
|
|
116
|
+
_ctx: MatchContext;
|
|
117
|
+
_children?: CstNodeChildren;
|
|
118
|
+
_base: number;
|
|
119
|
+
startIdx: number;
|
|
120
|
+
leadingSpaces?: NonterminalNode;
|
|
121
|
+
source: {
|
|
122
|
+
startIdx: number;
|
|
123
|
+
endIdx: number;
|
|
124
|
+
};
|
|
125
|
+
constructor(ctx: MatchContext, ptr: number, startIdx: number);
|
|
126
|
+
get type(): CstNodeType;
|
|
127
|
+
private get matchRecordType();
|
|
128
|
+
isNonterminal(): this is NonterminalNode;
|
|
129
|
+
isTerminal(): this is TerminalNode;
|
|
130
|
+
isList(): this is ListNode;
|
|
131
|
+
isOptional(): this is OptNode;
|
|
132
|
+
isSeq(): this is SeqNode;
|
|
133
|
+
get ctorName(): string;
|
|
134
|
+
get count(): number;
|
|
135
|
+
get matchLength(): number;
|
|
136
|
+
get _typeAndDetails(): number;
|
|
137
|
+
get arity(): number;
|
|
138
|
+
get children(): CstNodeChildren;
|
|
139
|
+
_computeChildren(): CstNodeImpl[];
|
|
140
|
+
get sourceString(): string;
|
|
141
|
+
isSyntactic(): boolean;
|
|
142
|
+
isLexical(): boolean;
|
|
143
|
+
toString(): string;
|
|
144
|
+
}
|
|
145
|
+
declare abstract class WrapperNode implements CstNodeBase {
|
|
146
|
+
abstract ctorName: string;
|
|
147
|
+
source: {
|
|
148
|
+
startIdx: number;
|
|
149
|
+
endIdx: number;
|
|
150
|
+
};
|
|
151
|
+
sourceString: string;
|
|
152
|
+
constructor(source: {
|
|
153
|
+
startIdx: number;
|
|
154
|
+
endIdx: number;
|
|
155
|
+
}, sourceString: string);
|
|
156
|
+
get matchLength(): number;
|
|
157
|
+
isNonterminal(): this is NonterminalNode;
|
|
158
|
+
isTerminal(): this is TerminalNode;
|
|
159
|
+
isOptional(): this is OptNode;
|
|
160
|
+
isSeq(): this is SeqNode;
|
|
161
|
+
isList(): this is ListNode;
|
|
162
|
+
}
|
|
163
|
+
export declare class SeqNodeImpl<TChildren extends CstNodeChildren = CstNodeChildren> extends WrapperNode implements SeqNode<TChildren> {
|
|
164
|
+
type: 4;
|
|
165
|
+
ctorName: "_seq";
|
|
166
|
+
children: TChildren;
|
|
167
|
+
constructor(children: TChildren, source: {
|
|
168
|
+
startIdx: number;
|
|
169
|
+
endIdx: number;
|
|
170
|
+
}, sourceString: string);
|
|
171
|
+
isSeq(): this is SeqNode;
|
|
172
|
+
unpack<R>(cb: (...args: TChildren) => R): R;
|
|
173
|
+
}
|
|
174
|
+
export declare class ListNodeImpl<TNode extends CstNode = CstNode> extends WrapperNode implements ListNode<TNode> {
|
|
175
|
+
type: 2;
|
|
176
|
+
ctorName: "_list";
|
|
177
|
+
children: readonly TNode[];
|
|
178
|
+
constructor(children: readonly TNode[], source: {
|
|
179
|
+
startIdx: number;
|
|
180
|
+
endIdx: number;
|
|
181
|
+
}, sourceString: string);
|
|
182
|
+
isList(): this is ListNode;
|
|
183
|
+
collect<R>(cb: (...args: CstNode[]) => R): R[];
|
|
184
|
+
}
|
|
185
|
+
export declare class OptNodeImpl<TNode extends CstNode = CstNode> extends WrapperNode implements OptNode<TNode> {
|
|
186
|
+
type: 3;
|
|
187
|
+
ctorName: "_opt";
|
|
188
|
+
children: [] | [TNode];
|
|
189
|
+
constructor(child: TNode | undefined, source: {
|
|
190
|
+
startIdx: number;
|
|
191
|
+
endIdx: number;
|
|
192
|
+
}, sourceString: string);
|
|
193
|
+
isOptional(): this is OptNode;
|
|
194
|
+
ifPresent<R>(consume: TNode extends SeqNode<infer T> ? (...children: T) => R : (child: TNode) => R, orElse?: () => R): R | undefined;
|
|
195
|
+
isPresent(): boolean;
|
|
196
|
+
isEmpty(): boolean;
|
|
197
|
+
}
|
|
198
|
+
export declare class MatchResult {
|
|
199
|
+
grammar: WasmGrammar;
|
|
200
|
+
startExpr: string;
|
|
201
|
+
_ctx: MatchContext;
|
|
202
|
+
_succeeded: boolean;
|
|
203
|
+
_attached: boolean;
|
|
204
|
+
_managed: boolean;
|
|
205
|
+
constructor(grammar: WasmGrammar, startExpr: string, ctx: MatchContext, succeeded: boolean);
|
|
206
|
+
get input(): string;
|
|
207
|
+
get [Symbol.dispose](): () => void;
|
|
208
|
+
dispose(): void;
|
|
209
|
+
succeeded(): this is SucceededMatchResult;
|
|
210
|
+
failed(): this is FailedMatchResult;
|
|
211
|
+
toString(): string;
|
|
212
|
+
use<T>(cb: (r: this) => T): T;
|
|
213
|
+
}
|
|
214
|
+
export declare class SucceededMatchResult extends MatchResult {
|
|
215
|
+
_cst: CstNode;
|
|
216
|
+
constructor(grammar: WasmGrammar, startExpr: string, ctx: MatchContext, succeeded: boolean);
|
|
217
|
+
getCstRoot(): CstNode;
|
|
218
|
+
}
|
|
219
|
+
export declare class FailedMatchResult extends MatchResult {
|
|
220
|
+
_rightmostFailurePosition: number;
|
|
221
|
+
private _rightmostFailures;
|
|
222
|
+
private _failureDescriptions;
|
|
223
|
+
constructor(grammar: WasmGrammar, startExpr: string, ctx: MatchContext, succeeded: boolean, rightmostFailurePosition: number);
|
|
224
|
+
private _assertAttached;
|
|
225
|
+
getRightmostFailurePosition(): number;
|
|
226
|
+
getRightmostFailures(): Failure[];
|
|
227
|
+
private _getFailureDescriptions;
|
|
228
|
+
getExpectedText(): string;
|
|
229
|
+
getInterval(): Interval;
|
|
230
|
+
get message(): string;
|
|
231
|
+
get shortMessage(): string;
|
|
232
|
+
}
|
|
233
|
+
export {};
|
|
234
|
+
//# sourceMappingURL=miniohm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miniohm.d.ts","sourceRoot":"","sources":["../../src/miniohm.ts"],"names":[],"mappings":"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"}
|