grammar-composer 0.7.1 → 0.7.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/parser/Builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,WAAW,EAAkD,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAKnI,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EACvD,gBAAgB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EACnC,mBAAmB,EAAE,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAsF/C;
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/parser/Builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAe,WAAW,EAAkD,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAKnI,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EACvD,gBAAgB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EACnC,mBAAmB,EAAE,MAAM,CAAC,EAC5B,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAsF/C;AA8JD,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,WAAW,CAYzF;AAKD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACvC,wBAAwB,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAA;CACrD;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA"}
|
package/dist/parser/Builder.js
CHANGED
|
@@ -15,7 +15,7 @@ export function buildGrammar(definitionObject, startProductionName, options) {
|
|
|
15
15
|
const nameLookup = new Map();
|
|
16
16
|
const nonterminalLookup = new Map();
|
|
17
17
|
const optionalNonterminalLookup = new Map();
|
|
18
|
-
for (const key of
|
|
18
|
+
for (const key of getProductionNames(definitionObject)) {
|
|
19
19
|
const objectProperty = definitionObject[key];
|
|
20
20
|
nameLookup.set(objectProperty, key);
|
|
21
21
|
if (!isFunction(objectProperty)) {
|
|
@@ -62,6 +62,25 @@ export function buildGrammar(definitionObject, startProductionName, options) {
|
|
|
62
62
|
}
|
|
63
63
|
return new Grammar(nonterminals, startProductionName, cacheIdCounter);
|
|
64
64
|
}
|
|
65
|
+
function getProductionNames(definitionObject) {
|
|
66
|
+
const keys = [];
|
|
67
|
+
const seen = new Set();
|
|
68
|
+
// Walk the prototype chain (stopping before Object.prototype) so that
|
|
69
|
+
// productions declared as prototype methods -- including inherited ones --
|
|
70
|
+
// are picked up in addition to instance fields.
|
|
71
|
+
let current = definitionObject;
|
|
72
|
+
while (current !== null && current !== Object.prototype) {
|
|
73
|
+
for (const key of Object.getOwnPropertyNames(current)) {
|
|
74
|
+
if (key === 'constructor' || seen.has(key)) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
seen.add(key);
|
|
78
|
+
keys.push(key);
|
|
79
|
+
}
|
|
80
|
+
current = Object.getPrototypeOf(current);
|
|
81
|
+
}
|
|
82
|
+
return keys;
|
|
83
|
+
}
|
|
65
84
|
function prepareGrammarNode(rootNode, nonterminalLookup, optionalNonterminalLookup, getNewCacheId) {
|
|
66
85
|
function prepare(node) {
|
|
67
86
|
const setCacheIdIfNeeded = (node) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/parser/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEzE,OAAO,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,EAAE,OAAO,EAA+F,MAAM,cAAc,CAAA;AAEnI,iGAAiG;AACjG,yBAAyB;AACzB,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAC3B,gBAAmC,EACnC,mBAA4B,EAC5B,OAAkC;IAElC,OAAO,GAAG;QACT,wBAAwB,EAAE,EAAE;QAC5B,GAAG,OAAO;KACV,CAAA;IAED,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgB,CAAA;IAC1C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC1D,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAyB,CAAA;IAElE,KAAK,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/parser/Builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grammar-composer",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "Creates and generates parsers from composable grammar definitions. Includes advanced features like lexer-free parsing, selective packrat memoization and static analysis.",
|
|
5
5
|
"author": "Rotem Dan",
|
|
6
6
|
"license": "MIT",
|
package/src/parser/Builder.ts
CHANGED
|
@@ -24,7 +24,7 @@ export function buildGrammar<T extends GrammarDefinition>(
|
|
|
24
24
|
const nonterminalLookup = new Map<Function, Nonterminal>()
|
|
25
25
|
const optionalNonterminalLookup = new Map<Function, Nonterminal>()
|
|
26
26
|
|
|
27
|
-
for (const key of
|
|
27
|
+
for (const key of getProductionNames(definitionObject)) {
|
|
28
28
|
const objectProperty = definitionObject[key]
|
|
29
29
|
|
|
30
30
|
nameLookup.set(objectProperty, key)
|
|
@@ -97,6 +97,31 @@ export function buildGrammar<T extends GrammarDefinition>(
|
|
|
97
97
|
)
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
function getProductionNames(definitionObject: GrammarDefinition): string[] {
|
|
101
|
+
const keys: string[] = []
|
|
102
|
+
const seen = new Set<any>()
|
|
103
|
+
|
|
104
|
+
// Walk the prototype chain (stopping before Object.prototype) so that
|
|
105
|
+
// productions declared as prototype methods -- including inherited ones --
|
|
106
|
+
// are picked up in addition to instance fields.
|
|
107
|
+
let current: object | null = definitionObject
|
|
108
|
+
|
|
109
|
+
while (current !== null && current !== Object.prototype) {
|
|
110
|
+
for (const key of Object.getOwnPropertyNames(current)) {
|
|
111
|
+
if (key === 'constructor' || seen.has(key)) {
|
|
112
|
+
continue
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
seen.add(key)
|
|
116
|
+
keys.push(key)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
current = Object.getPrototypeOf(current)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return keys
|
|
123
|
+
}
|
|
124
|
+
|
|
100
125
|
function prepareGrammarNode(
|
|
101
126
|
rootNode: GrammarNode,
|
|
102
127
|
nonterminalLookup: Map<Function, Nonterminal>,
|