grammar-well 2.2.0 → 2.3.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/README.md CHANGED
@@ -110,4 +110,77 @@ const javascriptsource = await Generate(source, {
110
110
  }
111
111
  }
112
112
  });
113
- ```
113
+ ```
114
+
115
+ ## Performance & Scalability Report: The 100k "Grammar Well"
116
+
117
+ This sections documents the engine's performance limits when processing extreme-depth telemetry (100,000 nested nodes).
118
+
119
+ ### Infrastructure Profile
120
+ To ensure absolute resource isolation, tests were conducted on a dedicated high-memory cloud instance.
121
+
122
+ | Category | Specification |
123
+ | :----------- | :--------------------------------------------------- |
124
+ | **Provider** | **DigitalOcean (Memory-Optimized Droplet)** |
125
+ | **Compute** | 4 Dedicated vCPUs (Intel® Xeon® Gold 6248 @ 2.50GHz) |
126
+ | **Memory** | 32 GB Dedicated RAM |
127
+ | **Storage** | 100 GB NVMe SSD |
128
+ | **Runtime** | Node.js v25.2.1 on Linux 6.8.0 |
129
+
130
+ ### V8 Runtime Configuration
131
+ Processing 100,000 nodes at depth generates a recursive call-stack that exceeds default Node.js and OS boundaries.
132
+
133
+ ```bash
134
+ # 1. Unlock the OS-level stack limit
135
+ ulimit -s unlimited
136
+
137
+ # 2. Open a persistent session to prevent SSH timeout crashes
138
+ screen -L -Logfile benchmark.log -S benchmark
139
+
140
+ # 3. Launch the suite with tuned V8 stack/heap flags to stabilize the environment and prevent Segmentation Faults:
141
+ npm run benchmark -- --stack-size=65536 --max-old-space-size=28000
142
+ ```
143
+
144
+ Workflow Tip: Use `CTRL + A + D` to detach the screen. You can safely close your terminal or monitor the output via:
145
+ ```
146
+ tail -f benchmark.log
147
+ ```
148
+
149
+
150
+ ### JSON (1K Nodes)
151
+ | | Parsing Cold | Parsing Hot | Stability (CV) | Memory Used | Parsing Iterations |
152
+ | --------------------------- | ------------ | ------------- | -------------- | ----------- | ------------------ |
153
+ | Lexer Only | 6.17 | 5.22 (±1.92) | 36.8% | 24.12 MB | 100 |
154
+ | Earley Eager | 40.36 | 37.15 (±5.37) | 14.5% | 45.25 MB | 100 |
155
+ | Earley Lazy | 46.27 | 42.59 (±4.75) | 11.1% | 48.30 MB | 100 |
156
+ | Earley Eager (Zero Epsilon) | 39.44 | 36.27 (±4.93) | 13.6% | 40.29 MB | 100 |
157
+ | Earley Lazy (Zero Epsilon) | 39.19 | 35.67 (±6.31) | 17.7% | 41.65 MB | 100 |
158
+ | LR0 (Zero Epsilon) | 19.72 | 12.96 (±3.28) | 25.3% | 25.60 MB | 100 |
159
+
160
+ ### JSON (10K Nodes)
161
+ | | Parsing Cold | Parsing Hot | Stability (CV) | Memory Used | Parsing Iterations |
162
+ | --------------------------- | ------------ | --------------- | -------------- | ----------- | ------------------ |
163
+ | Lexer Only | 32.27 | 31.49 (±2.17) | 6.9% | 56.12 MB | 100 |
164
+ | Earley Eager | 855.60 | 825.14 (±17.17) | 2.1% | 270.32 MB | 100 |
165
+ | Earley Lazy | 759.63 | 750.13 (±11.63) | 1.5% | 186.92 MB | 100 |
166
+ | Earley Eager (Zero Epsilon) | 246.72 | 236.36 (±7.41) | 3.1% | 85.53 MB | 100 |
167
+ | Earley Lazy (Zero Epsilon) | 267.39 | 262.59 (±6.62) | 2.5% | 94.25 MB | 100 |
168
+ | LR0 (Zero Epsilon) | 86.06 | 85.09 (±4.86) | 5.7% | 53.52 MB | 100 |
169
+
170
+ ### JSON (50K Nodes)
171
+ | | Parsing Cold | Parsing Hot | Stability (CV) | Memory Used | Parsing Iterations |
172
+ | --------------------------- | ------------ | ------------------ | -------------- | ----------- | ------------------ |
173
+ | Lexer Only | 128.11 | 128.23 (±4.82) | 3.8% | 206.47 MB | 10 |
174
+ | Earley Eager | 15647.68 | 15585.77 (±299.41) | 1.9% | 5365.89 MB | 10 |
175
+ | Earley Lazy | 14665.24 | 14710.48 (±139.89) | 1.0% | 1239.93 MB | 10 |
176
+ | Earley Eager (Zero Epsilon) | 1256.36 | 1216.06 (±21.39) | 1.8% | 161.81 MB | 10 |
177
+ | Earley Lazy (Zero Epsilon) | 1388.78 | 1342.75 (±13.41) | 1.0% | 229.55 MB | 10 |
178
+ | LR0 (Zero Epsilon) | 431.23 | 422.55 (±11.36) | 2.7% | 143.34 MB | 10 |
179
+
180
+ ### JSON (100k Nodes)
181
+ | | Parsing Cold | Parsing Hot | Stability (CV) | Memory Used | Parsing Iterations |
182
+ | --------------------------- | ------------ | ---------------- | -------------- | ----------- | ------------------ |
183
+ | Lexer Only | 226.86 | 224.91 (±6.51) | 2.9% | 281.19 MB | 10 |
184
+ | Earley Eager (Zero Epsilon) | 2259.98 | 2258.16 (±22.03) | 1.0% | 227.75 MB | 10 |
185
+ | Earley Lazy (Zero Epsilon) | 2569.49 | 2603.80 (±26.03) | 1.0% | 353.09 MB | 10 |
186
+ | LR0 (Zero Epsilon) | 717.48 | 753.08 (±17.29) | 2.3% | 176.64 MB | 10 |
@@ -18,8 +18,8 @@ declare class Column {
18
18
  wants: Dictionary<State[]>;
19
19
  scannable: State[];
20
20
  completed: Dictionary<State[]>;
21
- private rules;
22
21
  index: number;
22
+ private rules;
23
23
  private StateClass;
24
24
  constructor(rules: Dictionary<RuntimeGrammarProductionRule[]>, index: number, StateClass: Concrete<typeof State>);
25
25
  process(): void;
@@ -66,8 +66,8 @@ class Column {
66
66
  wants = Object.create(null);
67
67
  scannable = [];
68
68
  completed = Object.create(null);
69
- rules;
70
69
  index;
70
+ rules;
71
71
  StateClass;
72
72
  constructor(rules, index, StateClass) {
73
73
  this.rules = rules;
@@ -1 +1 @@
1
- {"version":3,"file":"earley.js","sourceRoot":"","sources":["../../../src/parser/algorithms/earley.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"earley.js","sourceRoot":"","sources":["../../../src/parser/algorithms/earley.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { RuntimeParserClass } from "../../typings/index.ts";
2
+ import { TokenBuffer } from "../../lexers/token-buffer.ts";
3
+ export declare function NOOP(language: RuntimeParserClass & {
4
+ tokens: TokenBuffer;
5
+ }, _options?: {}): {
6
+ results: any[][];
7
+ };
@@ -0,0 +1,9 @@
1
+ export function NOOP(language, _options = {}) {
2
+ const { tokens } = language;
3
+ const result = [];
4
+ for (const token of tokens) {
5
+ result.push(token);
6
+ }
7
+ return { results: [result] };
8
+ }
9
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.js","sourceRoot":"","sources":["../../../src/parser/algorithms/noop.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,IAAI,CAAC,QAAsD,EAAE,QAAQ,GAAG,EAAE;IACtF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AACjC,CAAC"}
@@ -5,10 +5,12 @@ import { CYK } from "./algorithms/cyk.js";
5
5
  import { Earley } from "./algorithms/earley.js";
6
6
  import { LRK } from "./algorithms/lrk/algorithm.js";
7
7
  import { ParserUtility } from "../utility/parsing.js";
8
+ import { NOOP } from "./algorithms/noop.js";
8
9
  const ParserRegistry = {
9
10
  earley: Earley,
10
11
  cyk: CYK,
11
- lr0: LRK
12
+ lr0: LRK,
13
+ noop: NOOP
12
14
  };
13
15
  export function Parse(language, input, options = {
14
16
  algorithm: 'earley',
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/parser/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,cAAc,GAAuC;IACvD,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACX,CAAA;AAED,MAAM,UAAU,KAAK,CACjB,QAA0C,EAC1C,KAAa,EACb,UAAyB;IACrB,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE,EAAE;CACpB,EACD,UAA4B,OAAO;IAEnC,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjH,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5G,OAAO,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,SAA0C;IAC5D,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,WAAW,CAAC,IAAI,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,MAAM,IAAI,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;QAChF,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,IAAI,WAAW,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/parser/parse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,MAAM,cAAc,GAAuC;IACvD,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;CACb,CAAA;AAED,MAAM,UAAU,KAAK,CACjB,QAA0C,EAC1C,KAAa,EACb,UAAyB;IACrB,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE,EAAE;CACpB,EACD,UAA4B,OAAO;IAEnC,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjH,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5G,OAAO,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,SAA0C;IAC5D,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,WAAW,CAAC,IAAI,cAAc,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,MAAM,IAAI,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;QAChF,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,IAAI,WAAW,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/utility/parsing.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAEtB,MAAM,CAAC,kBAAkB,CAAC,MAAgC,EAAE,KAAwB;QAChF,IAAI,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,+CAA+C,CAAC;QAC1D,IAAI,OAAO,MAAM,IAAI,UAAU;YAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM;YACP,OAAM;QACV,IAAI,MAAM,IAAI,MAAM;YAChB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,MAAM;YACjB,OAAO,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,SAAS,IAAI,MAAM;YACnB,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAgC;QACpD,OAAO,OAAO,MAAM,IAAI,QAAQ,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAkC,EAAE,IAAS,EAAE,IAAU;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
1
+ {"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/utility/parsing.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAGtB,MAAM,CAAC,kBAAkB,CAAC,MAAgC,EAAE,KAAwB;QAChF,IAAI,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,+CAA+C,CAAC;QAC1D,IAAI,OAAO,MAAM,IAAI,UAAU;YAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM;YACP,OAAM;QACV,IAAI,MAAM,IAAI,MAAM;YAChB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,MAAM;YACjB,OAAO,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,SAAS,IAAI,MAAM;YACnB,OAAO,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAgC;QACpD,OAAO,OAAO,MAAM,IAAI,QAAQ,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAkC,EAAE,IAAS,EAAE,IAAU;QACxE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -7,5 +7,5 @@ export declare class TextFormatter {
7
7
  static LexerTokenShort(token: RuntimeLexerToken): string;
8
8
  static LexerTokenError(lexer: TokenBuffer): string;
9
9
  static GrammarRuleSymbol(symbol: RuntimeGrammarRuleSymbol, short?: boolean, error?: boolean): string;
10
- static GrammarRule(rule: RuntimeGrammarProductionRule, withCursorAt?: number): string;
10
+ static GrammarRule(rule: RuntimeGrammarProductionRule, dot?: number): string;
11
11
  }
@@ -69,10 +69,10 @@ export class TextFormatter {
69
69
  }
70
70
  }
71
71
  }
72
- static GrammarRule(rule, withCursorAt) {
73
- let symbolSequence = rule.symbols.slice(0, withCursorAt).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
74
- if (typeof withCursorAt !== "undefined") {
75
- symbolSequence += " ● " + rule.symbols.slice(withCursorAt).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
72
+ static GrammarRule(rule, dot) {
73
+ let symbolSequence = rule.symbols.slice(0, dot).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
74
+ if (typeof dot !== "undefined") {
75
+ symbolSequence += " ● " + rule.symbols.slice(dot).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
76
76
  }
77
77
  return rule.name + " → " + symbolSequence;
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text-format.js","sourceRoot":"","sources":["../../src/utility/text-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-format.js","sourceRoot":"","sources":["../../src/utility/text-format.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- { "version": "2.2.0" }
1
+ { "version": "2.3.0" }
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "grammar-well",
3
3
  "type": "module",
4
- "version": "2.2.0",
4
+ "version": "2.3.0",
5
5
  "description": "Cross-platform Parser written in TypeScript",
6
6
  "scripts": {
7
7
  "prebuild": "tsc --build --clean && node scripts/prebuild.ts",
8
8
  "grammar": "tsc --build --clean && node scripts/grammar.ts",
9
9
  "build": "tsc --build",
10
- "benchmark": "node tests/performance/benchmark.js",
11
- "test": "node --test --test-reporter ./tests/reporter.mjs tests/**/*.spec.ts",
12
- "profile": "node tests/performance/profile.js"
10
+ "hardware": "node tests/utilities/hardware.ts",
11
+ "benchmark": "node --stack-size=65536 --max-old-space-size=28000 --expose-gc tests/performance/benchmark.ts",
12
+ "test": "node --test --test-reporter ./tests/utilities/reporter.ts tests/**/*.spec.ts",
13
+ "profile": "node tests/performance/profile.ts",
14
+ "lint": "tsc --noEmit"
13
15
  },
14
16
  "exports": {
15
17
  ".": "./build/index.js",
@@ -34,6 +36,7 @@
34
36
  },
35
37
  "homepage": "https://grammar-well.xyz",
36
38
  "devDependencies": {
39
+ "grammar-well": "^2.1.0",
37
40
  "@types/node": "^25.0.3",
38
41
  "typescript": "^5.9.3",
39
42
  "yaml": "^2.8.2"
@@ -81,13 +81,13 @@ function PostProcess(ast: PreAST | RuntimeLexerToken, clone?: boolean) {
81
81
  }
82
82
 
83
83
  class Column {
84
- data: any;
85
- states: State[] = [];
86
- wants: Dictionary<State[]> = Object.create(null);// states indexed by the non-terminal they expect
87
- scannable: State[] = [];// list of states that expect a token
88
- completed: Dictionary<State[]> = Object.create(null); // states that are nullable
89
- private rules: Dictionary<RuntimeGrammarProductionRule[]>;
84
+ public data: any;
85
+ public states: State[] = [];
86
+ public wants: Dictionary<State[]> = Object.create(null);
87
+ public scannable: State[] = [];
88
+ public completed: Dictionary<State[]> = Object.create(null);
90
89
  public index: number;
90
+ private rules: Dictionary<RuntimeGrammarProductionRule[]>;
91
91
  private StateClass: Concrete<typeof State>;
92
92
 
93
93
  constructor(
@@ -105,12 +105,11 @@ class Column {
105
105
  let w = 0;
106
106
  let state: State;
107
107
 
108
- // eslint-disable-next-line no-cond-assign
109
- while (state = this.states[w++]) { // nb. we push() during iteration
108
+ while (state = this.states[w++]) {
110
109
  if (state.isComplete) {
111
110
  state.finish();
112
111
  const { wantedBy } = state;
113
- for (let i = wantedBy.length; i--;) { // this line is hot
112
+ for (let i = wantedBy.length; i--;) {
114
113
  this.complete(wantedBy[i], state);
115
114
  }
116
115
 
@@ -170,14 +169,15 @@ class Column {
170
169
  }
171
170
 
172
171
  abstract class State {
173
- isComplete: boolean;
174
- data: any = [];
175
- left: State;
176
- right: State | StateToken;
172
+ public isComplete: boolean;
173
+ public data: any = [];
174
+ public left: State;
175
+ public right: State | StateToken;
177
176
  public rule: RuntimeGrammarProductionRule;
178
177
  public dot: number;
179
178
  public reference: number;
180
179
  public wantedBy: State[];
180
+
181
181
  constructor(
182
182
  rule: RuntimeGrammarProductionRule,
183
183
  dot: number,
@@ -207,7 +207,6 @@ abstract class State {
207
207
 
208
208
  protected build() {
209
209
  const children = [];
210
- // eslint-disable-next-line @typescript-eslint/no-this-alias
211
210
  let node: State = this;
212
211
  do {
213
212
  children[node.dot - 1] = node.right.data;
@@ -237,5 +236,4 @@ interface StateToken {
237
236
  }
238
237
 
239
238
  type PreAST = [RuntimeGrammarProductionRule, (RuntimeLexerToken | PreAST)[], { reference: number, dot: number }];
240
- type Concrete<T extends abstract new (...args: any) => any> =
241
- new (...args: ConstructorParameters<T>) => InstanceType<T>;
239
+ type Concrete<T extends abstract new (...args: any) => any> = new (...args: ConstructorParameters<T>) => InstanceType<T>;
@@ -0,0 +1,11 @@
1
+ import type { RuntimeParserClass } from "../../typings/index.ts";
2
+ import { TokenBuffer } from "../../lexers/token-buffer.ts";
3
+
4
+ export function NOOP(language: RuntimeParserClass & { tokens: TokenBuffer }, _options = {}) {
5
+ const { tokens } = language;
6
+ const result = [];
7
+ for (const token of tokens) {
8
+ result.push(token);
9
+ }
10
+ return { results: [result] };
11
+ }
@@ -6,11 +6,13 @@ import { CYK } from "./algorithms/cyk.ts";
6
6
  import { Earley } from "./algorithms/earley.ts";
7
7
  import { LRK } from "./algorithms/lrk/algorithm.ts";
8
8
  import { ParserUtility } from "../utility/parsing.ts";
9
+ import { NOOP } from "./algorithms/noop.ts";
9
10
 
10
11
  const ParserRegistry: { [key: string]: ParserAlgorithm } = {
11
12
  earley: Earley,
12
13
  cyk: CYK,
13
- lr0: LRK
14
+ lr0: LRK,
15
+ noop: NOOP
14
16
  }
15
17
 
16
18
  export function Parse(
@@ -2,6 +2,7 @@ import type { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLex
2
2
 
3
3
  export class ParserUtility {
4
4
 
5
+
5
6
  static SymbolMatchesToken(symbol: RuntimeGrammarRuleSymbol, token: RuntimeLexerToken) {
6
7
  if (typeof symbol === 'string')
7
8
  throw 'Attempted to match token against non-terminal';
@@ -27,4 +28,4 @@ export class ParserUtility {
27
28
  }
28
29
  return data;
29
30
  }
30
- }
31
+ }
@@ -74,10 +74,10 @@ export class TextFormatter {
74
74
  }
75
75
  }
76
76
 
77
- static GrammarRule(rule: RuntimeGrammarProductionRule, withCursorAt?: number) {
78
- let symbolSequence = rule.symbols.slice(0, withCursorAt).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
79
- if (typeof withCursorAt !== "undefined") {
80
- symbolSequence += " ● " + rule.symbols.slice(withCursorAt).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
77
+ static GrammarRule(rule: RuntimeGrammarProductionRule, dot?: number) {
78
+ let symbolSequence = rule.symbols.slice(0, dot).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
79
+ if (typeof dot !== "undefined") {
80
+ symbolSequence += " ● " + rule.symbols.slice(dot).map(v => TextFormatter.GrammarRuleSymbol(v, true, true)).join(' ');
81
81
  }
82
82
  return rule.name + " → " + symbolSequence;
83
83
  }
package/src/version.json CHANGED
@@ -1 +1 @@
1
- {"version":"2.2.0"}
1
+ {"version":"2.3.0"}
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/generator/generator.ts","./src/generator/index.ts","./src/generator/state.ts","./src/generator/artifacts/basic.ts","./src/generator/artifacts/lexer.ts","./src/generator/artifacts/lr.ts","./src/generator/grammars/index.ts","./src/generator/grammars/v1.ts","./src/generator/grammars/v2.ts","./src/generator/import-resolvers/auto.ts","./src/generator/import-resolvers/browser.ts","./src/generator/import-resolvers/dictionary.ts","./src/generator/import-resolvers/filesystem.ts","./src/generator/stringify/common.ts","./src/generator/stringify/javascript.ts","./src/generator/stringify/exports/javascript.ts","./src/generator/stringify/exports/json.ts","./src/generator/stringify/exports/registry.ts","./src/generator/stringify/exports/typescript.ts","./src/generator/stringify/grammar/v2.ts","./src/lexers/character-lexer.ts","./src/lexers/stateful-lexer.ts","./src/lexers/token-buffer.ts","./src/parser/parse.ts","./src/parser/algorithms/cyk.ts","./src/parser/algorithms/earley.ts","./src/parser/algorithms/lrk/algorithm.ts","./src/parser/algorithms/lrk/bimap.ts","./src/parser/algorithms/lrk/canonical-collection.ts","./src/parser/algorithms/lrk/stack.ts","./src/parser/algorithms/lrk/typings.ts","./src/typings/ast.ts","./src/typings/common.ts","./src/typings/generator.ts","./src/typings/index.ts","./src/typings/runtime.ts","./src/utility/format.ts","./src/utility/general.ts","./src/utility/index.ts","./src/utility/lint.ts","./src/utility/monarch.ts","./src/utility/parsing.ts","./src/utility/text-format.ts"],"version":"5.9.3"}
1
+ {"root":["./src/index.ts","./src/generator/generator.ts","./src/generator/index.ts","./src/generator/state.ts","./src/generator/artifacts/basic.ts","./src/generator/artifacts/lexer.ts","./src/generator/artifacts/lr.ts","./src/generator/grammars/index.ts","./src/generator/grammars/v1.ts","./src/generator/grammars/v2.ts","./src/generator/import-resolvers/auto.ts","./src/generator/import-resolvers/browser.ts","./src/generator/import-resolvers/dictionary.ts","./src/generator/import-resolvers/filesystem.ts","./src/generator/stringify/common.ts","./src/generator/stringify/javascript.ts","./src/generator/stringify/exports/javascript.ts","./src/generator/stringify/exports/json.ts","./src/generator/stringify/exports/registry.ts","./src/generator/stringify/exports/typescript.ts","./src/generator/stringify/grammar/v2.ts","./src/lexers/character-lexer.ts","./src/lexers/stateful-lexer.ts","./src/lexers/token-buffer.ts","./src/parser/parse.ts","./src/parser/algorithms/cyk.ts","./src/parser/algorithms/earley.ts","./src/parser/algorithms/noop.ts","./src/parser/algorithms/lrk/algorithm.ts","./src/parser/algorithms/lrk/bimap.ts","./src/parser/algorithms/lrk/canonical-collection.ts","./src/parser/algorithms/lrk/stack.ts","./src/parser/algorithms/lrk/typings.ts","./src/typings/ast.ts","./src/typings/common.ts","./src/typings/generator.ts","./src/typings/index.ts","./src/typings/runtime.ts","./src/utility/format.ts","./src/utility/general.ts","./src/utility/index.ts","./src/utility/lint.ts","./src/utility/monarch.ts","./src/utility/parsing.ts","./src/utility/text-format.ts"],"version":"5.9.3"}
@@ -1,10 +0,0 @@
1
- import type { RuntimeGrammarProductionRule, RuntimeParserClass } from "../../../typings/index.ts";
2
- export declare class ClosureBuilder {
3
- private grammar;
4
- constructor(grammar: RuntimeParserClass['artifacts']['grammar']);
5
- get(rule: string): {
6
- rule: RuntimeGrammarProductionRule;
7
- dot: number;
8
- }[];
9
- private addClosure;
10
- }
@@ -1,26 +0,0 @@
1
- import { ParserUtility } from "../../../utility/parsing.js";
2
- export class ClosureBuilder {
3
- grammar;
4
- constructor(grammar) {
5
- this.grammar = grammar;
6
- }
7
- get(rule) {
8
- const closure = { items: [], visited: new Set() };
9
- this.addClosure(closure, rule);
10
- return closure.items;
11
- }
12
- addClosure(closure, symbol) {
13
- if (!ParserUtility.SymbolIsTerminal(symbol)) {
14
- const key = symbol;
15
- if (!(closure.visited.has(key))) {
16
- closure.visited.add(key);
17
- const rules = this.grammar.rules[key];
18
- for (const rule of rules) {
19
- closure.items.push({ rule, dot: 0 });
20
- this.addClosure(closure, rule.symbols[0]);
21
- }
22
- }
23
- }
24
- }
25
- }
26
- //# sourceMappingURL=closure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"closure.js","sourceRoot":"","sources":["../../../../src/parser/algorithms/lrk/closure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,OAAO,cAAc;IACf,OAAO,CAA6C;IAC5D,YACI,OAAmD;QAEnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,MAAM,OAAO,GAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC,KAAK,CAAC;IACzB,CAAC;IAEO,UAAU,CAAC,OAAoB,EAAE,MAAgC;QACrE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAgB,CAAC;YAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;oBACpC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
@@ -1,12 +0,0 @@
1
- import type { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol } from "../../../typings/index.ts";
2
- export interface State {
3
- items: {
4
- rule: RuntimeGrammarProductionRule;
5
- dot: number;
6
- }[];
7
- isFinal: boolean;
8
- actions: Map<RuntimeGrammarRuleSymbol, string>;
9
- goto: Map<RuntimeGrammarRuleSymbol, string>;
10
- reduce: number;
11
- rule: RuntimeGrammarProductionRule;
12
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/parser/algorithms/lrk/state.ts"],"names":[],"mappings":""}