grammar-well 2.1.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.
Files changed (134) hide show
  1. package/README.md +74 -1
  2. package/build/generator/artifacts/basic.d.ts +1 -1
  3. package/build/generator/artifacts/basic.js.map +1 -1
  4. package/build/generator/artifacts/lexer.d.ts +2 -2
  5. package/build/generator/artifacts/lexer.js +1 -1
  6. package/build/generator/artifacts/lexer.js.map +1 -1
  7. package/build/generator/artifacts/lr.d.ts +5 -5
  8. package/build/generator/artifacts/lr.js +2 -2
  9. package/build/generator/artifacts/lr.js.map +1 -1
  10. package/build/generator/generator.d.ts +3 -3
  11. package/build/generator/generator.js +3 -3
  12. package/build/generator/generator.js.map +1 -1
  13. package/build/generator/grammars/index.d.ts +2 -2
  14. package/build/generator/grammars/index.js +2 -2
  15. package/build/generator/import-resolvers/auto.d.ts +1 -1
  16. package/build/generator/import-resolvers/browser.d.ts +1 -1
  17. package/build/generator/import-resolvers/browser.js.map +1 -1
  18. package/build/generator/import-resolvers/dictionary.d.ts +1 -1
  19. package/build/generator/import-resolvers/dictionary.js.map +1 -1
  20. package/build/generator/import-resolvers/filesystem.d.ts +1 -1
  21. package/build/generator/index.d.ts +3 -3
  22. package/build/generator/index.js +3 -3
  23. package/build/generator/state.d.ts +1 -1
  24. package/build/generator/stringify/common.d.ts +2 -2
  25. package/build/generator/stringify/common.js.map +1 -1
  26. package/build/generator/stringify/exports/javascript.d.ts +1 -1
  27. package/build/generator/stringify/exports/json.d.ts +1 -1
  28. package/build/generator/stringify/exports/registry.d.ts +6 -6
  29. package/build/generator/stringify/exports/typescript.d.ts +1 -1
  30. package/build/generator/stringify/grammar/v2.d.ts +1 -1
  31. package/build/generator/stringify/javascript.d.ts +2 -2
  32. package/build/generator/stringify/javascript.js.map +1 -1
  33. package/build/index.d.ts +7 -7
  34. package/build/index.js +7 -7
  35. package/build/lexers/character-lexer.d.ts +1 -1
  36. package/build/lexers/stateful-lexer.d.ts +1 -1
  37. package/build/lexers/token-buffer.d.ts +3 -3
  38. package/build/lexers/token-buffer.js +2 -2
  39. package/build/lexers/token-buffer.js.map +1 -1
  40. package/build/parser/algorithms/cyk.d.ts +2 -2
  41. package/build/parser/algorithms/earley.d.ts +15 -12
  42. package/build/parser/algorithms/earley.js +29 -17
  43. package/build/parser/algorithms/earley.js.map +1 -1
  44. package/build/parser/algorithms/lrk/algorithm.d.ts +2 -2
  45. package/build/parser/algorithms/lrk/algorithm.js +31 -21
  46. package/build/parser/algorithms/lrk/algorithm.js.map +1 -1
  47. package/build/parser/algorithms/lrk/canonical-collection.d.ts +10 -10
  48. package/build/parser/algorithms/lrk/canonical-collection.js +73 -49
  49. package/build/parser/algorithms/lrk/canonical-collection.js.map +1 -1
  50. package/build/parser/algorithms/lrk/stack.d.ts +8 -18
  51. package/build/parser/algorithms/lrk/stack.js +11 -24
  52. package/build/parser/algorithms/lrk/stack.js.map +1 -1
  53. package/build/parser/algorithms/lrk/typings.d.ts +16 -0
  54. package/build/parser/algorithms/lrk/typings.js +2 -0
  55. package/build/parser/algorithms/lrk/typings.js.map +1 -0
  56. package/build/parser/algorithms/noop.d.ts +7 -0
  57. package/build/parser/algorithms/noop.js +9 -0
  58. package/build/parser/algorithms/noop.js.map +1 -0
  59. package/build/parser/parse.d.ts +1 -1
  60. package/build/parser/parse.js +3 -1
  61. package/build/parser/parse.js.map +1 -1
  62. package/build/typings/ast.d.ts +1 -1
  63. package/build/typings/generator.d.ts +4 -4
  64. package/build/typings/index.d.ts +8 -8
  65. package/build/typings/index.js +4 -4
  66. package/build/typings/runtime.d.ts +3 -3
  67. package/build/utility/format.js +3 -3
  68. package/build/utility/general.d.ts +2 -2
  69. package/build/utility/general.js +1 -1
  70. package/build/utility/general.js.map +1 -1
  71. package/build/utility/index.d.ts +4 -4
  72. package/build/utility/index.js +4 -4
  73. package/build/utility/lint.d.ts +1 -1
  74. package/build/utility/monarch.d.ts +1 -1
  75. package/build/utility/parsing.d.ts +2 -2
  76. package/build/utility/parsing.js.map +1 -1
  77. package/build/utility/text-format.d.ts +3 -3
  78. package/build/utility/text-format.js +4 -4
  79. package/build/utility/text-format.js.map +1 -1
  80. package/build/version.json +1 -1
  81. package/package.json +13 -11
  82. package/src/generator/artifacts/basic.ts +6 -4
  83. package/src/generator/artifacts/lexer.ts +6 -4
  84. package/src/generator/artifacts/lr.ts +10 -7
  85. package/src/generator/generator.ts +17 -11
  86. package/src/generator/grammars/index.ts +2 -2
  87. package/src/generator/grammars/v1.ts +1 -1
  88. package/src/generator/grammars/v2.ts +1 -1
  89. package/src/generator/import-resolvers/auto.ts +3 -3
  90. package/src/generator/import-resolvers/browser.ts +5 -2
  91. package/src/generator/import-resolvers/dictionary.ts +5 -2
  92. package/src/generator/import-resolvers/filesystem.ts +1 -1
  93. package/src/generator/index.ts +3 -3
  94. package/src/generator/state.ts +1 -1
  95. package/src/generator/stringify/common.ts +6 -3
  96. package/src/generator/stringify/exports/javascript.ts +1 -1
  97. package/src/generator/stringify/exports/json.ts +1 -1
  98. package/src/generator/stringify/exports/registry.ts +4 -4
  99. package/src/generator/stringify/exports/typescript.ts +1 -1
  100. package/src/generator/stringify/grammar/v2.ts +1 -1
  101. package/src/generator/stringify/javascript.ts +12 -8
  102. package/src/index.ts +7 -7
  103. package/src/lexers/character-lexer.ts +1 -1
  104. package/src/lexers/stateful-lexer.ts +1 -1
  105. package/src/lexers/token-buffer.ts +16 -3
  106. package/src/parser/algorithms/cyk.ts +4 -4
  107. package/src/parser/algorithms/earley.ts +67 -36
  108. package/src/parser/algorithms/lrk/algorithm.ts +40 -25
  109. package/src/parser/algorithms/lrk/canonical-collection.ts +84 -55
  110. package/src/parser/algorithms/lrk/stack.ts +12 -37
  111. package/src/parser/algorithms/lrk/typings.ts +13 -0
  112. package/src/parser/algorithms/noop.ts +11 -0
  113. package/src/parser/parse.ts +11 -9
  114. package/src/typings/ast.ts +1 -1
  115. package/src/typings/generator.ts +4 -4
  116. package/src/typings/index.ts +8 -8
  117. package/src/typings/runtime.ts +3 -3
  118. package/src/utility/format.ts +4 -4
  119. package/src/utility/general.ts +4 -3
  120. package/src/utility/index.ts +4 -4
  121. package/src/utility/lint.ts +1 -1
  122. package/src/utility/monarch.ts +1 -1
  123. package/src/utility/parsing.ts +3 -2
  124. package/src/utility/text-format.ts +6 -6
  125. package/src/version.json +1 -1
  126. package/tsconfig.tsbuildinfo +1 -1
  127. package/build/parser/algorithms/lrk/closure.d.ts +0 -10
  128. package/build/parser/algorithms/lrk/closure.js +0 -26
  129. package/build/parser/algorithms/lrk/closure.js.map +0 -1
  130. package/build/parser/algorithms/lrk/state.d.ts +0 -12
  131. package/build/parser/algorithms/lrk/state.js +0 -2
  132. package/build/parser/algorithms/lrk/state.js.map +0 -1
  133. package/src/parser/algorithms/lrk/closure.ts +0 -37
  134. package/src/parser/algorithms/lrk/state.ts +0 -10
@@ -1,53 +1,28 @@
1
- import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol } from "../../../typings/index.js";
2
- import { State } from "./state.js";
1
+ export class Stack<T> {
3
2
 
4
- export class LRStack {
3
+ private stack: T[] = [];
5
4
 
6
- stack: LRStackItem[] = [];
7
-
8
- get current() {
9
- return this.stack[this.stack.length - 1];
5
+ get size() {
6
+ return this.stack.length;
10
7
  }
11
8
 
12
9
  get previous() {
13
10
  return this.stack[this.stack.length - 2];
14
11
  }
15
12
 
16
-
17
- shift(state: State) {
18
- this.current.state = state;
13
+ get current() {
14
+ return this.stack[this.stack.length - 1];
19
15
  }
20
16
 
21
- reduce(rule: RuntimeGrammarProductionRule) {
22
- const n = LRStack.NewItem();
23
- const l = rule.symbols.length;
24
- n.children = this.stack.splice(l * -1, l);
25
- n.children.forEach(v => delete v.state);
26
- n.rule = rule;
27
- n.symbol = rule.name;
28
- this.stack.push(n);
17
+ set current(item: T) {
18
+ this.stack[this.stack.length - 1] = item;
29
19
  }
30
20
 
31
- append(symbol: RuntimeGrammarRuleSymbol) {
32
- this.stack.push(LRStack.NewItem())
33
- this.current.symbol = symbol;
21
+ push(...items: T[]) {
22
+ return this.stack.push(...items);
34
23
  }
35
24
 
36
- static NewItem(): LRStackItem {
37
- return {
38
- children: [],
39
- state: null,
40
- symbol: null,
41
- rule: null,
42
- value: null
43
- }
25
+ pop(n: number = 1): T[] {
26
+ return this.stack.splice(n * -1, n);
44
27
  }
45
- }
46
-
47
- interface LRStackItem {
48
- children: LRStackItem[];
49
- state: State;
50
- symbol: RuntimeGrammarRuleSymbol;
51
- rule: RuntimeGrammarProductionRule;
52
- value: any;
53
28
  }
@@ -0,0 +1,13 @@
1
+ import type { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol } from "../../../typings/index.ts";
2
+
3
+ export interface LRItem {
4
+ rule: RuntimeGrammarProductionRule;
5
+ dot: number;
6
+ }
7
+
8
+ export interface State {
9
+ id: string;
10
+ actions?: { symbol: RuntimeGrammarRuleSymbol, state: State }[];
11
+ goto?: { [key: string]: State };
12
+ reduce?: RuntimeGrammarProductionRule;
13
+ }
@@ -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
+ }
@@ -1,16 +1,18 @@
1
- import { ParserAlgorithm, RuntimeParserClass } from "../typings/index.js";
2
- import { CharacterLexer } from "../lexers/character-lexer.js";
3
- import { StatefulLexer } from "../lexers/stateful-lexer.js";
4
- import { TokenBuffer } from "../lexers/token-buffer.js";
5
- import { CYK } from "./algorithms/cyk.js";
6
- import { Earley } from "./algorithms/earley.js";
7
- import { LRK } from "./algorithms/lrk/algorithm.js";
8
- import { ParserUtility } from "../utility/parsing.js";
1
+ import type { ParserAlgorithm, RuntimeParserClass } from "../typings/index.ts";
2
+ import { CharacterLexer } from "../lexers/character-lexer.ts";
3
+ import { StatefulLexer } from "../lexers/stateful-lexer.ts";
4
+ import { TokenBuffer } from "../lexers/token-buffer.ts";
5
+ import { CYK } from "./algorithms/cyk.ts";
6
+ import { Earley } from "./algorithms/earley.ts";
7
+ import { LRK } from "./algorithms/lrk/algorithm.ts";
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(
@@ -1,4 +1,4 @@
1
- import { Dictionary } from "./common.js";
1
+ import type { Dictionary } from "./common.ts";
2
2
 
3
3
  export type AST = ASTDirectives[];
4
4
 
@@ -1,7 +1,7 @@
1
- import { GeneratorState } from "../generator/state.js";
2
- import { ASTGrammarSymbolLiteral, ASTGrammarSymbolNonTerminal, ASTGrammarSymbolRegex, ASTGrammarSymbolToken, ASTJavaScriptBuiltin, ASTJavaScriptLiteral, ASTJavaScriptTemplate, ASTLexerStateImportRule, ASTLexerStateMatchRule, ASTLexerStateNonMatchRule } from "./ast.js";
3
- import { Dictionary } from "./common.js";
4
- import { ImportResolver, ImportResolverConstructor } from "./index.js";
1
+ import { GeneratorState } from "../generator/state.ts";
2
+ import type { ASTGrammarSymbolLiteral, ASTGrammarSymbolNonTerminal, ASTGrammarSymbolRegex, ASTGrammarSymbolToken, ASTJavaScriptBuiltin, ASTJavaScriptLiteral, ASTJavaScriptTemplate, ASTLexerStateImportRule, ASTLexerStateMatchRule, ASTLexerStateNonMatchRule } from "./ast.ts";
3
+ import type { Dictionary } from "./common.ts";
4
+ import type { ImportResolver, ImportResolverConstructor } from "./index.ts";
5
5
 
6
6
 
7
7
  export type GenerateOptions = GeneratorOptions & { output?: GeneratorOutputOptions };
@@ -1,11 +1,11 @@
1
- import { TokenBuffer } from "../lexers/token-buffer.js";
2
- import { ParserUtility } from "../utility/parsing.js";
3
- import { ASTLexerStateNonMatchRule } from "./ast.js";
4
- import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeParserClass, RuntimeLexerStateMatchRule } from "./runtime.js";
5
- export * from './ast.js';
6
- export * from './common.js';
7
- export * from './generator.js';
8
- export * from './runtime.js';
1
+ import type { TokenBuffer } from "../lexers/token-buffer.ts";
2
+ import type { ParserUtility } from "../utility/parsing.ts";
3
+ import type { ASTLexerStateNonMatchRule } from "./ast.ts";
4
+ import type { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeParserClass, RuntimeLexerStateMatchRule } from "./runtime.ts";
5
+ export * from './ast.ts';
6
+ export * from './common.ts';
7
+ export * from './generator.ts';
8
+ export * from './runtime.ts';
9
9
 
10
10
  export interface ImportResolver {
11
11
  path(path: string): string;
@@ -1,6 +1,6 @@
1
- import { LRState } from "./index.js";
2
- import { ASTGrammarSymbolLiteral, ASTGrammarSymbolToken, ASTLexerStateNonMatchRule } from "./ast.js";
3
- import { Dictionary } from "./common.js";
1
+ import type { LRState } from "./index.ts";
2
+ import type { ASTGrammarSymbolLiteral, ASTGrammarSymbolToken, ASTLexerStateNonMatchRule } from "./ast.ts";
3
+ import type { Dictionary } from "./common.ts";
4
4
 
5
5
  export interface RuntimeParserClass {
6
6
  artifacts: {
@@ -1,7 +1,7 @@
1
- import V1Grammar from '../generator/grammars/v1.js';
2
- import V2Grammar from '../generator/grammars/v2.js';
3
- import { V2GrammarString } from "../generator/stringify/grammar/v2.js";
4
- import { Parse } from '../parser/parse.js';
1
+ import V1Grammar from '../generator/grammars/v1.ts';
2
+ import V2Grammar from '../generator/grammars/v2.ts';
3
+ import { V2GrammarString } from "../generator/stringify/grammar/v2.ts";
4
+ import { Parse } from '../parser/parse.ts';
5
5
 
6
6
  export function Format(source: string, sourceVersion: '1' | '2' = '2') {
7
7
  const grammar = sourceVersion.toString() == '1' ? V1Grammar : V2Grammar;
@@ -1,4 +1,4 @@
1
- import { Dictionary, GeneratorGrammarSymbol } from "../typings/index.js";
1
+ import type { Dictionary, GeneratorGrammarSymbol } from "../typings/index.ts";
2
2
 
3
3
  export class Collection<T> {
4
4
  categorized: Dictionary<Dictionary<number>> = {};
@@ -85,10 +85,11 @@ export class Matrix<T> {
85
85
  set x(x: number) { x != this.$x && this.resize(x, this.y); }
86
86
  get y() { return this.$y }
87
87
  set y(y: number) { y != this.$y && this.resize(this.x, y); }
88
-
88
+ private initial?: T | ((...args: any) => T);
89
89
  matrix: GetCallbackOrValue<T>[][] = [];
90
90
 
91
- constructor(x: number, y: number, private initial?: T | ((...args: any) => T)) {
91
+ constructor(x: number, y: number, initial?: T | ((...args: any) => T)) {
92
+ this.initial = initial;
92
93
  this.resize(x, y);
93
94
  }
94
95
 
@@ -1,4 +1,4 @@
1
- export * from './monarch.js';
2
- export * from './general.js';
3
- export * from './format.js';
4
- export * from './parsing.js';
1
+ export * from './monarch.ts';
2
+ export * from './general.ts';
3
+ export * from './format.ts';
4
+ export * from './parsing.ts';
@@ -1,4 +1,4 @@
1
- import { Dictionary, RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeParserClass } from "../typings/index.js";
1
+ import type { Dictionary, RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeParserClass } from "../typings/index.ts";
2
2
 
3
3
  export function LintGrammarSymbols(grammar: RuntimeParserClass['artifacts']['grammar']): RuntimeGrammarRuleSymbol[] {
4
4
  const unused = new Set<string>();
@@ -1,4 +1,4 @@
1
- import { ASTLexerStateNonMatchRule, RuntimeLexerConfig, RuntimeLexerStateMatchRule } from "../typings/index.js";
1
+ import type { ASTLexerStateNonMatchRule, RuntimeLexerConfig, RuntimeLexerStateMatchRule } from "../typings/index.ts";
2
2
 
3
3
  export function CreateMonarchTokenizer(lexer: RuntimeLexerConfig) {
4
4
  const tokenizer: any = {}; // languages.IMonarchLanguage['tokenizer']
@@ -1,7 +1,8 @@
1
- import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLexerToken } from "../typings/index.js";
1
+ import type { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLexerToken } from "../typings/index.ts";
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
+ }
@@ -1,5 +1,5 @@
1
- import { TokenBuffer } from "../lexers/token-buffer.js";
2
- import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLexerToken } from "../typings/index.js";
1
+ import { TokenBuffer } from "../lexers/token-buffer.ts";
2
+ import type { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeLexerToken } from "../typings/index.ts";
3
3
 
4
4
  export class TextFormatter {
5
5
 
@@ -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.1.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/closure.ts","./src/parser/algorithms/lrk/stack.ts","./src/parser/algorithms/lrk/state.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.7.2"}
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 { RuntimeGrammarProductionRule, RuntimeParserClass } from "../../../typings/index.js";
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;IAEX;IADZ,YACY,OAAmD;QAAnD,YAAO,GAAP,OAAO,CAA4C;IAC3D,CAAC;IAEL,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 { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol } from "../../../typings/index.js";
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":""}
@@ -1,37 +0,0 @@
1
- import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol, RuntimeParserClass } from "../../../typings/index.js";
2
- import { ParserUtility } from "../../../utility/parsing.js";
3
-
4
- export class ClosureBuilder {
5
- constructor(
6
- private grammar: RuntimeParserClass['artifacts']['grammar'],
7
- ) { }
8
-
9
- get(rule: string) {
10
- const closure: RuleClosure = { items: [], visited: new Set() };
11
- this.addClosure(closure, rule);
12
- return closure.items;
13
- }
14
-
15
- private addClosure(closure: RuleClosure, symbol: RuntimeGrammarRuleSymbol) {
16
- if (!ParserUtility.SymbolIsTerminal(symbol)) {
17
- const key = symbol as string;
18
- if (!(closure.visited.has(key))) {
19
- closure.visited.add(key);
20
-
21
- const rules = this.grammar.rules[key];
22
- for (const rule of rules) {
23
- closure.items.push({ rule, dot: 0 })
24
- this.addClosure(closure, rule.symbols[0]);
25
- }
26
- }
27
- }
28
- }
29
- }
30
-
31
- interface RuleClosure {
32
- items: {
33
- rule: RuntimeGrammarProductionRule,
34
- dot: number,
35
- }[]
36
- visited: Set<RuntimeGrammarRuleSymbol>;
37
- }
@@ -1,10 +0,0 @@
1
- import { RuntimeGrammarProductionRule, RuntimeGrammarRuleSymbol } from "../../../typings/index.js";
2
-
3
- export interface State {
4
- items: { rule: RuntimeGrammarProductionRule, dot: number }[];
5
- isFinal: boolean;
6
- actions: Map<RuntimeGrammarRuleSymbol, string>;
7
- goto: Map<RuntimeGrammarRuleSymbol, string>;
8
- reduce: number;
9
- rule: RuntimeGrammarProductionRule
10
- }