grammar-well 1.1.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 (117) hide show
  1. package/.eslintrc.cjs +14 -0
  2. package/README.md +288 -0
  3. package/bootstrap.ts +35 -0
  4. package/build/compiler/compiler.d.ts +48 -0
  5. package/build/compiler/compiler.js +227 -0
  6. package/build/compiler/compiler.js.map +1 -0
  7. package/build/compiler/generator.d.ts +23 -0
  8. package/build/compiler/generator.js +213 -0
  9. package/build/compiler/generator.js.map +1 -0
  10. package/build/compiler/import-resolver.d.ts +15 -0
  11. package/build/compiler/import-resolver.js +37 -0
  12. package/build/compiler/import-resolver.js.map +1 -0
  13. package/build/compiler/outputs/javascript.d.ts +3 -0
  14. package/build/compiler/outputs/javascript.js +29 -0
  15. package/build/compiler/outputs/javascript.js.map +1 -0
  16. package/build/compiler/outputs/json.d.ts +2 -0
  17. package/build/compiler/outputs/json.js +8 -0
  18. package/build/compiler/outputs/json.js.map +1 -0
  19. package/build/compiler/outputs/typescript.d.ts +2 -0
  20. package/build/compiler/outputs/typescript.js +108 -0
  21. package/build/compiler/outputs/typescript.js.map +1 -0
  22. package/build/grammars/gwell.d.ts +997 -0
  23. package/build/grammars/gwell.js +537 -0
  24. package/build/grammars/gwell.js.map +1 -0
  25. package/build/grammars/json.d.ts +151 -0
  26. package/build/grammars/json.js +112 -0
  27. package/build/grammars/json.js.map +1 -0
  28. package/build/grammars/number.d.ts +239 -0
  29. package/build/grammars/number.js +115 -0
  30. package/build/grammars/number.js.map +1 -0
  31. package/build/grammars/number.json +1 -0
  32. package/build/grammars/string.d.ts +116 -0
  33. package/build/grammars/string.js +50 -0
  34. package/build/grammars/string.js.map +1 -0
  35. package/build/grammars/string.json +1 -0
  36. package/build/grammars/whitespace.d.ts +51 -0
  37. package/build/grammars/whitespace.js +30 -0
  38. package/build/grammars/whitespace.js.map +1 -0
  39. package/build/grammars/whitespace.json +1 -0
  40. package/build/index.d.ts +4 -0
  41. package/build/index.js +21 -0
  42. package/build/index.js.map +1 -0
  43. package/build/lexers/character-lexer.d.ts +27 -0
  44. package/build/lexers/character-lexer.js +71 -0
  45. package/build/lexers/character-lexer.js.map +1 -0
  46. package/build/lexers/stateful-lexer.d.ts +48 -0
  47. package/build/lexers/stateful-lexer.js +309 -0
  48. package/build/lexers/stateful-lexer.js.map +1 -0
  49. package/build/lexers/token-buffer.d.ts +32 -0
  50. package/build/lexers/token-buffer.js +92 -0
  51. package/build/lexers/token-buffer.js.map +1 -0
  52. package/build/parser/algorithms/cyk.d.ts +16 -0
  53. package/build/parser/algorithms/cyk.js +58 -0
  54. package/build/parser/algorithms/cyk.js.map +1 -0
  55. package/build/parser/algorithms/earley.d.ts +48 -0
  56. package/build/parser/algorithms/earley.js +158 -0
  57. package/build/parser/algorithms/earley.js.map +1 -0
  58. package/build/parser/algorithms/lr.d.ts +10 -0
  59. package/build/parser/algorithms/lr.js +34 -0
  60. package/build/parser/algorithms/lr.js.map +1 -0
  61. package/build/parser/parser.d.ts +26 -0
  62. package/build/parser/parser.js +74 -0
  63. package/build/parser/parser.js.map +1 -0
  64. package/build/typings.d.ts +198 -0
  65. package/build/typings.js +3 -0
  66. package/build/typings.js.map +1 -0
  67. package/build/utility/general.d.ts +46 -0
  68. package/build/utility/general.js +112 -0
  69. package/build/utility/general.js.map +1 -0
  70. package/build/utility/lint.d.ts +2 -0
  71. package/build/utility/lint.js +28 -0
  72. package/build/utility/lint.js.map +1 -0
  73. package/build/utility/lr.d.ts +56 -0
  74. package/build/utility/lr.js +131 -0
  75. package/build/utility/lr.js.map +1 -0
  76. package/build/utility/text-format.d.ts +11 -0
  77. package/build/utility/text-format.js +84 -0
  78. package/build/utility/text-format.js.map +1 -0
  79. package/licenses/LICENSE.txt +165 -0
  80. package/licenses/moo.license +29 -0
  81. package/licenses/nearley.license +21 -0
  82. package/package.json +52 -0
  83. package/src/compiler/compiler.ts +239 -0
  84. package/src/compiler/generator.ts +229 -0
  85. package/src/compiler/import-resolver.ts +36 -0
  86. package/src/compiler/outputs/javascript.ts +27 -0
  87. package/src/compiler/outputs/json.ts +5 -0
  88. package/src/compiler/outputs/typescript.ts +105 -0
  89. package/src/grammars/gwell.gwell +278 -0
  90. package/src/grammars/gwell.js +539 -0
  91. package/src/grammars/gwell.json +1 -0
  92. package/src/grammars/json.gwell +75 -0
  93. package/src/grammars/json.js +121 -0
  94. package/src/grammars/json.json +1 -0
  95. package/src/grammars/number.gwell +20 -0
  96. package/src/grammars/number.js +117 -0
  97. package/src/grammars/number.json +1 -0
  98. package/src/grammars/string.gwell +15 -0
  99. package/src/grammars/string.js +52 -0
  100. package/src/grammars/string.json +1 -0
  101. package/src/grammars/whitespace.gwell +6 -0
  102. package/src/grammars/whitespace.js +32 -0
  103. package/src/grammars/whitespace.json +1 -0
  104. package/src/index.ts +4 -0
  105. package/src/lexers/character-lexer.ts +73 -0
  106. package/src/lexers/stateful-lexer.ts +335 -0
  107. package/src/lexers/token-buffer.ts +102 -0
  108. package/src/parser/algorithms/cyk.ts +74 -0
  109. package/src/parser/algorithms/earley.ts +193 -0
  110. package/src/parser/algorithms/lr.ts +37 -0
  111. package/src/parser/parser.ts +77 -0
  112. package/src/typings.ts +221 -0
  113. package/src/utility/general.ts +120 -0
  114. package/src/utility/lint.ts +26 -0
  115. package/src/utility/lr.ts +153 -0
  116. package/src/utility/text-format.ts +84 -0
  117. package/testing.ts +18 -0
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Generator = void 0;
4
+ const PostProcessors = {
5
+ "join": "({data}) => data.join('')",
6
+ "concat": "({data}) => data[0].concat([data[1]])",
7
+ "null": "() => null",
8
+ "first": "({data}) => data[0]"
9
+ };
10
+ class Generator {
11
+ state = {
12
+ grammar: {
13
+ start: '',
14
+ rules: {},
15
+ uuids: {}
16
+ },
17
+ lexer: null,
18
+ head: [],
19
+ body: [],
20
+ config: {},
21
+ version: 'unknown',
22
+ };
23
+ serializeHead() {
24
+ if (this.state.config.noscript)
25
+ return '';
26
+ return this.state.head.join('\n');
27
+ }
28
+ serializeBody() {
29
+ if (this.state.config.noscript)
30
+ return '';
31
+ return this.state.body.join('\n');
32
+ }
33
+ serializeLanguage(depth = 0) {
34
+ return this.pretty({
35
+ grammar: this.serializeGrammar(depth + 1),
36
+ lexer: this.serializeLexerConfig(depth + 1)
37
+ }, depth);
38
+ }
39
+ merge(state) {
40
+ Object.assign(this.state.grammar.rules, state.grammar.rules);
41
+ this.state.grammar.start = state.grammar.start || this.state.grammar.start;
42
+ if (state.lexer) {
43
+ if (this.state.lexer) {
44
+ Object.assign(this.state.lexer.states, state.lexer.states);
45
+ }
46
+ else {
47
+ this.state.lexer = state.lexer;
48
+ }
49
+ this.state.lexer.start = state.lexer.start || this.state.lexer.start;
50
+ }
51
+ this.state.head.push(...state.head);
52
+ this.state.body.push(...state.body);
53
+ Object.assign(this.state.config, state.config);
54
+ }
55
+ grammarUUID(name) {
56
+ this.state.grammar.uuids[name] = (this.state.grammar.uuids[name] || 0) + 1;
57
+ return name + 'x' + this.state.grammar.uuids[name];
58
+ }
59
+ addGrammarRule(rule) {
60
+ this.state.grammar.rules[rule.name] = this.state.grammar.rules[rule.name] || [];
61
+ this.state.grammar.rules[rule.name].push(rule);
62
+ }
63
+ addLexerState(state) {
64
+ this.state.lexer.states[state.name] = this.state.lexer.states[state.name] || { name: state.name, rules: [] };
65
+ const target = this.state.lexer.states[state.name];
66
+ target.default = typeof state.default == 'string' ? state.default : target.default;
67
+ target.unmatched = typeof state.unmatched == 'string' ? state.unmatched : target.unmatched;
68
+ target.rules.push(...state.rules);
69
+ }
70
+ serializeGrammar(depth = 0) {
71
+ if (!this.state.grammar) {
72
+ return null;
73
+ }
74
+ return this.pretty({
75
+ start: JSON.stringify(this.state.grammar.start),
76
+ rules: this.serializeGrammarRules(depth + 1)
77
+ }, depth);
78
+ }
79
+ serializeGrammarRules(depth = 0) {
80
+ const map = {};
81
+ for (const rule in this.state.grammar.rules) {
82
+ map[rule] = this.state.grammar.rules[rule].map(v => this.serializeGrammarRule(v));
83
+ }
84
+ return this.pretty(map, depth);
85
+ }
86
+ serializeSymbol(s) {
87
+ if (typeof s === 'string') {
88
+ return JSON.stringify(s);
89
+ }
90
+ else if ('rule' in s) {
91
+ return JSON.stringify(s.rule);
92
+ }
93
+ else if ('regex' in s) {
94
+ return `/${s.regex}/${s.flags || ''}`;
95
+ }
96
+ else if ('token' in s) {
97
+ return `{ token: ${JSON.stringify(s.token)} }`;
98
+ }
99
+ else if ('literal' in s) {
100
+ return `{ literal: ${JSON.stringify(s.literal)} }`;
101
+ }
102
+ else if ('js' in s) {
103
+ return s.js;
104
+ }
105
+ else {
106
+ return JSON.stringify(s);
107
+ }
108
+ }
109
+ serializeGrammarRule(rule) {
110
+ const symbols = [];
111
+ const alias = {};
112
+ for (let i = 0; i < rule.symbols.length; i++) {
113
+ symbols.push(this.serializeSymbol(rule.symbols[i]));
114
+ if (rule.symbols[i].alias) {
115
+ alias[rule.symbols[i].alias] = i;
116
+ }
117
+ }
118
+ return this.pretty({
119
+ name: JSON.stringify(rule.name),
120
+ symbols: this.pretty(symbols, -1),
121
+ postprocess: this.serializePostProcess(rule.postprocess, alias)
122
+ }, -1);
123
+ }
124
+ serializePostProcess(postprocess, alias) {
125
+ if (!postprocess)
126
+ return null;
127
+ if ('builtin' in postprocess)
128
+ return PostProcessors[postprocess.builtin];
129
+ if (this.state.config.noscript)
130
+ return;
131
+ if (typeof postprocess == 'string')
132
+ return postprocess;
133
+ if ('js' in postprocess)
134
+ return postprocess.js;
135
+ if ('template' in postprocess)
136
+ return this.templatePostProcess(postprocess.template, alias);
137
+ }
138
+ templatePostProcess(templateBody, alias) {
139
+ for (const key in alias) {
140
+ templateBody = templateBody.replace(new RegExp('(?:\\$)' + key + '(?![a-zA-Z\\d\\$_])'), `data[${alias[key]}]`);
141
+ }
142
+ return "({data}) => { return " + templateBody.replace(/\$(\d+)/g, "data[$1]") + "; }";
143
+ }
144
+ serializeLexerConfig(depth = 0) {
145
+ if (!this.state.lexer)
146
+ return null;
147
+ if (typeof this.state.lexer === 'string')
148
+ return this.state.lexer;
149
+ return this.pretty({
150
+ start: JSON.stringify(this.state.lexer.start),
151
+ states: this.serializeLexerConfigStates(depth + 1)
152
+ }, depth);
153
+ }
154
+ serializeLexerConfigStates(depth) {
155
+ const map = {};
156
+ for (const key in this.state.lexer.states) {
157
+ const state = this.state.lexer.states[key];
158
+ map[state.name] = this.pretty({
159
+ name: JSON.stringify(state.name),
160
+ default: state.default ? JSON.stringify(state.default) : null,
161
+ unmatched: state.unmatched ? JSON.stringify(state.unmatched) : null,
162
+ rules: this.serializeLexerConfigStateRules(state.rules, depth + 2)
163
+ }, depth + 1);
164
+ }
165
+ return this.pretty(map, depth);
166
+ }
167
+ serializeLexerConfigStateRules(rules, depth) {
168
+ const ary = rules.map(rule => {
169
+ if ('import' in rule)
170
+ return this.pretty({ import: JSON.stringify(rule.import) }, -1);
171
+ return this.pretty({
172
+ when: this.serializeSymbol(rule.when),
173
+ type: JSON.stringify(rule.type),
174
+ tag: JSON.stringify(rule.tag),
175
+ pop: JSON.stringify(rule.pop),
176
+ set: JSON.stringify(rule.set),
177
+ inset: JSON.stringify(rule.inset),
178
+ goto: JSON.stringify(rule.goto),
179
+ }, -1);
180
+ });
181
+ return this.pretty(ary, depth);
182
+ }
183
+ newLine(depth) {
184
+ return '\n' + ' '.repeat(depth * 4);
185
+ }
186
+ pretty(obj, depth = 0) {
187
+ if (Array.isArray(obj)) {
188
+ let r = `[`;
189
+ for (let i = 0; i < obj.length; i++) {
190
+ const value = obj[i];
191
+ r += `${depth >= 0 ? this.newLine(depth + 1) : ' '}${value}${(this.isVal(obj[i + 1]) ? ',' : '')}`;
192
+ }
193
+ r += `${depth >= 0 ? this.newLine(depth) : ' '}]`;
194
+ return r;
195
+ }
196
+ let r = `{`;
197
+ const keys = Object.keys(obj).filter(v => this.isVal(obj[v]));
198
+ const prefix = depth >= 0 ? this.newLine(depth + 1) : ' ';
199
+ for (let i = 0; i < keys.length; i++) {
200
+ const key = /[a-z_][a-z\d_$]*/i.test(keys[i]) ? keys[i] : keys[i];
201
+ const value = Array.isArray(obj[keys[i]]) ? this.pretty(obj[keys[i]], depth >= 0 ? depth + 1 : -1) : obj[keys[i]];
202
+ const suffix = (this.isVal(obj[keys[i + 1]]) ? ',' : '');
203
+ r += `${prefix}${key}: ${value}${suffix}`;
204
+ }
205
+ r += `${depth >= 0 ? this.newLine(depth) : ' '}}`;
206
+ return r;
207
+ }
208
+ isVal(value) {
209
+ return typeof value !== 'undefined' && value !== null;
210
+ }
211
+ }
212
+ exports.Generator = Generator;
213
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/compiler/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ImportResolver } from "../typings";
2
+ export declare class FileSystemResolver implements ImportResolver {
3
+ private baseDir;
4
+ private readFile;
5
+ private resolve;
6
+ constructor(baseDir: string);
7
+ path(path: string): string;
8
+ body(path: string): Promise<string>;
9
+ }
10
+ export declare class BrowserImportResolver implements ImportResolver {
11
+ private baseURL;
12
+ constructor(baseURL: string);
13
+ path(path: string): string;
14
+ body(path: string): Promise<string>;
15
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserImportResolver = exports.FileSystemResolver = void 0;
4
+ class FileSystemResolver {
5
+ baseDir;
6
+ readFile;
7
+ resolve;
8
+ constructor(baseDir) {
9
+ const { readFile } = require('fs');
10
+ const { resolve, dirname } = require('path');
11
+ const { promisify } = require('util');
12
+ this.readFile = promisify(readFile);
13
+ this.resolve = resolve;
14
+ this.baseDir = baseDir ? dirname(baseDir) : process?.cwd();
15
+ }
16
+ path(path) {
17
+ return this.resolve(this.baseDir, path);
18
+ }
19
+ body(path) {
20
+ return this.readFile(path, 'utf-8');
21
+ }
22
+ }
23
+ exports.FileSystemResolver = FileSystemResolver;
24
+ class BrowserImportResolver {
25
+ baseURL;
26
+ constructor(baseURL) {
27
+ this.baseURL = baseURL;
28
+ }
29
+ path(path) {
30
+ return (new URL(path, this.baseURL)).href;
31
+ }
32
+ async body(path) {
33
+ return (await fetch(path)).text();
34
+ }
35
+ }
36
+ exports.BrowserImportResolver = BrowserImportResolver;
37
+ //# sourceMappingURL=import-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/compiler/import-resolver.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IACnB,OAAO,CAAS;IAChB,QAAQ,CAAkD;IAC1D,OAAO,CAA+C;IAE9D,YAAY,OAAe;QACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,IAAY;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,IAAY;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACJ;AArBD,gDAqBC;AAED,MAAa,qBAAqB;IACV;IAApB,YAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAExC,IAAI,CAAC,IAAY;QACb,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACnB,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;CACJ;AAVD,sDAUC"}
@@ -0,0 +1,3 @@
1
+ import { Generator } from "../generator";
2
+ export declare function JavascriptOutput(generator: Generator, exportName: string): string;
3
+ export declare function ESMOutput(generator: Generator, exportName: string): string;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ESMOutput = exports.JavascriptOutput = void 0;
4
+ function JavascriptOutput(generator, exportName) {
5
+ return `${Generate(generator, exportName)}
6
+
7
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {
8
+ module.exports = ${exportName};
9
+ } else {
10
+ window.${exportName} = ${exportName};
11
+ }`;
12
+ }
13
+ exports.JavascriptOutput = JavascriptOutput;
14
+ function ESMOutput(generator, exportName) {
15
+ return `${Generate(generator, exportName)}
16
+
17
+ export default ${exportName};`;
18
+ }
19
+ exports.ESMOutput = ESMOutput;
20
+ function Generate(generator, exportName) {
21
+ return `// Generated automatically by Grammar-Well, version ${generator.state.version}
22
+ // https://github.com/0x6563/grammar-well
23
+ ${generator.serializeHead()}
24
+ function ${exportName}(){
25
+ ${generator.serializeBody()}
26
+ return ${generator.serializeLanguage(1)}
27
+ }`;
28
+ }
29
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/compiler/outputs/javascript.ts"],"names":[],"mappings":";;;AAEA,SAAgB,gBAAgB,CAAC,SAAoB,EAAE,UAAkB;IACrE,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;;;uBAGtB,UAAU;;aAEpB,UAAU,MAAM,UAAU;EACrC,CAAC;AACH,CAAC;AARD,4CAQC;AAED,SAAgB,SAAS,CAAC,SAAoB,EAAE,UAAkB;IAC9D,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;;iBAE5B,UAAU,GAAG,CAAC;AAC/B,CAAC;AAJD,8BAIC;AAED,SAAS,QAAQ,CAAC,SAAoB,EAAE,UAAkB;IACtD,OAAO,uDAAuD,SAAS,CAAC,KAAK,CAAC,OAAO;;EAEvF,SAAS,CAAC,aAAa,EAAE;WAChB,UAAU;MACf,SAAS,CAAC,aAAa,EAAE;aAClB,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;EACzC,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Generator } from "../generator";
2
+ export declare function JSONFormatter(generator: Generator, exportName: any): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONFormatter = void 0;
4
+ function JSONFormatter(generator, exportName) {
5
+ return JSON.stringify({ state: generator.state, exportName });
6
+ }
7
+ exports.JSONFormatter = JSONFormatter;
8
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/compiler/outputs/json.ts"],"names":[],"mappings":";;;AAEA,SAAgB,aAAa,CAAC,SAAoB,EAAE,UAAU;IAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AAClE,CAAC;AAFD,sCAEC"}
@@ -0,0 +1,2 @@
1
+ import { Generator } from "../generator";
2
+ export declare function TypescriptFormat(generator: Generator, exportName: string): string;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypescriptFormat = void 0;
4
+ function TypescriptFormat(generator, exportName) {
5
+ return `// Generated automatically by Grammar-Well, version ${generator.state.version}
6
+ // https://github.com/0x6563/grammar-well
7
+
8
+ ${generator.serializeHead()}
9
+
10
+ interface LanguageDefinition {
11
+ lexer?: Lexer | LexerConfig;
12
+ grammar: {
13
+ start: string;
14
+ rules: GrammarRule[];
15
+ }
16
+ }
17
+
18
+ interface Lexer {
19
+ next(): LexerToken | undefined;
20
+ feed(chunk?: string, state?: ReturnType<Lexer['state']>): void;
21
+ state(): any;
22
+ flush?(): void;
23
+ }
24
+
25
+ interface LexerConfig {
26
+ start?: string
27
+ states: LexerStateDefinition[];
28
+ }
29
+
30
+ interface LexerToken {
31
+ type?: string;
32
+ value: string;
33
+ offset: number;
34
+ line: number;
35
+ column: number;
36
+ }
37
+
38
+ interface LexerStatus {
39
+ index: number;
40
+ line: number;
41
+ column: number;
42
+ state: string;
43
+ }
44
+
45
+ interface LexerStateDefinition {
46
+ name: string;
47
+ unmatched?: string;
48
+ default?: string;
49
+ rules: (LexerStateImportRule | LexerStateMatchRule)[];
50
+ }
51
+
52
+ interface LexerStateImportRule {
53
+ import: string[]
54
+ }
55
+
56
+ interface LexerStateMatchRule {
57
+ when: string | RegExp
58
+ type?: string;
59
+ pop?: number | 'all';
60
+ inset?: number;
61
+ goto?: string;
62
+ set?: string;
63
+ }
64
+
65
+ interface GrammarRule {
66
+ name: string;
67
+ symbols: RuleSymbol[];
68
+ postprocess?: PostProcessor;
69
+ }
70
+
71
+ type RuleSymbol = string | RegExp | RuleSymbolToken | RuleSymbolLexerToken | LexerTokenMatch | RuleSymbolTestable;
72
+
73
+ interface RuleSymbolToken {
74
+ literal: any;
75
+ }
76
+
77
+ interface RuleSymbolTestable {
78
+ test: (data: any) => boolean;
79
+ }
80
+
81
+ interface RuleSymbolLexerToken {
82
+ type: string;
83
+ }
84
+
85
+ interface LexerTokenMatch {
86
+ token: string;
87
+ }
88
+
89
+ type PostProcessor = (payload: PostProcessorPayload) => any;
90
+
91
+ interface PostProcessorPayload {
92
+ data: any[];
93
+ reference: number;
94
+ dot: number;
95
+ name: string;
96
+ }
97
+
98
+ function ${exportName}(): LanguageDefinition {
99
+ ${generator.serializeBody()}
100
+ return ${generator.serializeLanguage(1)}
101
+ }
102
+
103
+ export default ${exportName};
104
+
105
+ `;
106
+ }
107
+ exports.TypescriptFormat = TypescriptFormat;
108
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/compiler/outputs/typescript.ts"],"names":[],"mappings":";;;AAEA,SAAgB,gBAAgB,CAAC,SAAoB,EAAE,UAAkB;IACrE,OAAO,uDAAuD,SAAS,CAAC,KAAK,CAAC,OAAO;;;EAGvF,SAAS,CAAC,aAAa,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0FhB,UAAU;MACf,SAAS,CAAC,aAAa,EAAE;aAClB,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;;;iBAG1B,UAAU;;CAE1B,CAAC;AACF,CAAC;AAtGD,4CAsGC"}