grammar-well 1.1.1 → 1.1.3

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 (64) hide show
  1. package/build/compiler/compiler.d.ts +49 -48
  2. package/build/compiler/compiler.js +227 -226
  3. package/build/compiler/compiler.js.map +1 -1
  4. package/build/compiler/generator.d.ts +23 -23
  5. package/build/compiler/generator.js +213 -212
  6. package/build/compiler/generator.js.map +1 -1
  7. package/build/compiler/import-resolver.d.ts +15 -15
  8. package/build/compiler/import-resolver.js +36 -36
  9. package/build/compiler/outputs/javascript.d.ts +3 -3
  10. package/build/compiler/outputs/javascript.js +14 -14
  11. package/build/compiler/outputs/json.d.ts +2 -2
  12. package/build/compiler/outputs/json.js +7 -7
  13. package/build/compiler/outputs/typescript.d.ts +2 -2
  14. package/build/compiler/outputs/typescript.js +9 -8
  15. package/build/compiler/outputs/typescript.js.map +1 -1
  16. package/build/grammars/gwell.d.ts +1023 -997
  17. package/build/grammars/gwell.js +540 -536
  18. package/build/grammars/gwell.js.map +1 -1
  19. package/build/grammars/json.d.ts +151 -151
  20. package/build/grammars/json.js +111 -111
  21. package/build/grammars/number.d.ts +239 -239
  22. package/build/grammars/number.js +114 -114
  23. package/build/grammars/number.json +1 -1
  24. package/build/grammars/string.d.ts +116 -116
  25. package/build/grammars/string.js +49 -49
  26. package/build/grammars/string.json +1 -1
  27. package/build/grammars/whitespace.d.ts +51 -51
  28. package/build/grammars/whitespace.js +29 -29
  29. package/build/grammars/whitespace.json +1 -1
  30. package/build/index.d.ts +4 -4
  31. package/build/index.js +20 -20
  32. package/build/lexers/character-lexer.d.ts +27 -27
  33. package/build/lexers/character-lexer.js +70 -70
  34. package/build/lexers/stateful-lexer.d.ts +48 -48
  35. package/build/lexers/stateful-lexer.js +308 -308
  36. package/build/lexers/token-buffer.d.ts +32 -32
  37. package/build/lexers/token-buffer.js +91 -91
  38. package/build/parser/algorithms/cyk.d.ts +16 -16
  39. package/build/parser/algorithms/cyk.js +57 -57
  40. package/build/parser/algorithms/earley.d.ts +48 -48
  41. package/build/parser/algorithms/earley.js +157 -157
  42. package/build/parser/algorithms/lr.d.ts +10 -10
  43. package/build/parser/algorithms/lr.js +33 -33
  44. package/build/parser/parser.d.ts +26 -26
  45. package/build/parser/parser.js +73 -73
  46. package/build/typings.d.ts +199 -198
  47. package/build/typings.js +2 -2
  48. package/build/utility/general.d.ts +55 -46
  49. package/build/utility/general.js +165 -111
  50. package/build/utility/general.js.map +1 -1
  51. package/build/utility/lint.d.ts +2 -2
  52. package/build/utility/lint.js +27 -27
  53. package/build/utility/lr.d.ts +52 -56
  54. package/build/utility/lr.js +129 -130
  55. package/build/utility/lr.js.map +1 -1
  56. package/build/utility/text-format.d.ts +11 -11
  57. package/build/utility/text-format.js +83 -83
  58. package/package.json +1 -1
  59. package/src/compiler/generator.ts +1 -0
  60. package/src/compiler/outputs/typescript.ts +2 -1
  61. package/src/grammars/gwell.gwell +15 -13
  62. package/src/grammars/gwell.js +17 -13
  63. package/src/grammars/gwell.json +1 -1
  64. package/src/typings.ts +1 -0
@@ -1,48 +1,49 @@
1
- import { CompileOptions, GrammarBuilderContext, OutputFormat, LanguageDirective } from "../typings";
2
- import { ESMOutput, JavascriptOutput } from "./outputs/javascript";
3
- import { TypescriptFormat } from "./outputs/typescript";
4
- import { JSONFormatter } from "./outputs/json";
5
- import { Generator } from "./generator";
6
- declare const OutputFormats: {
7
- _default: typeof JavascriptOutput;
8
- object: (grammar: any, exportName: any) => {
9
- grammar: any;
10
- exportName: any;
11
- };
12
- json: typeof JSONFormatter;
13
- js: typeof JavascriptOutput;
14
- javascript: typeof JavascriptOutput;
15
- module: typeof ESMOutput;
16
- esmodule: typeof ESMOutput;
17
- ts: typeof TypescriptFormat;
18
- typescript: typeof TypescriptFormat;
19
- };
20
- export declare function Compile(rules: string | LanguageDirective | (LanguageDirective[]), config?: CompileOptions): Promise<string | {
21
- grammar: any;
22
- exportName: any;
23
- }>;
24
- export declare class GrammarBuilder {
25
- private config;
26
- private parser;
27
- private context;
28
- generator: Generator;
29
- constructor(config?: CompileOptions, context?: GrammarBuilderContext);
30
- export<T extends OutputFormat = '_default'>(format: T, name?: string): ReturnType<typeof OutputFormats[T]>;
31
- import(source: string): Promise<void>;
32
- import(directive: LanguageDirective): Promise<void>;
33
- import(directives: LanguageDirective[]): Promise<void>;
34
- private processImportDirective;
35
- private processConfigDirective;
36
- private processGrammarDirective;
37
- private processLexerDirective;
38
- private importBuiltIn;
39
- private importGrammar;
40
- private mergeLanguageDefinitionString;
41
- private buildRules;
42
- private buildRule;
43
- private buildSymbol;
44
- private buildCharacterRules;
45
- private buildSubExpressionRules;
46
- private buildRepeatRules;
47
- }
48
- export {};
1
+ import { CompileOptions, GrammarBuilderContext, TemplateFormat, LanguageDirective } from "../typings";
2
+ import { ESMOutput, JavascriptOutput } from "./outputs/javascript";
3
+ import { TypescriptFormat } from "./outputs/typescript";
4
+ import { JSONFormatter } from "./outputs/json";
5
+ import { Generator } from "./generator";
6
+ declare const TemplateFormats: {
7
+ _default: typeof JavascriptOutput;
8
+ object: (grammar: any, exportName: any) => {
9
+ grammar: any;
10
+ exportName: any;
11
+ };
12
+ json: typeof JSONFormatter;
13
+ js: typeof JavascriptOutput;
14
+ javascript: typeof JavascriptOutput;
15
+ module: typeof ESMOutput;
16
+ esmodule: typeof ESMOutput;
17
+ esm: typeof ESMOutput;
18
+ ts: typeof TypescriptFormat;
19
+ typescript: typeof TypescriptFormat;
20
+ };
21
+ export declare function Compile(rules: string | LanguageDirective | (LanguageDirective[]), config?: CompileOptions): Promise<string | {
22
+ grammar: any;
23
+ exportName: any;
24
+ }>;
25
+ export declare class GrammarBuilder {
26
+ private config;
27
+ private parser;
28
+ private context;
29
+ generator: Generator;
30
+ constructor(config?: CompileOptions, context?: GrammarBuilderContext);
31
+ export<T extends TemplateFormat = '_default'>(format: T, name?: string): ReturnType<typeof TemplateFormats[T]>;
32
+ import(source: string): Promise<void>;
33
+ import(directive: LanguageDirective): Promise<void>;
34
+ import(directives: LanguageDirective[]): Promise<void>;
35
+ private processImportDirective;
36
+ private processConfigDirective;
37
+ private processGrammarDirective;
38
+ private processLexerDirective;
39
+ private importBuiltIn;
40
+ private importGrammar;
41
+ private mergeLanguageDefinitionString;
42
+ private buildRules;
43
+ private buildRule;
44
+ private buildSymbol;
45
+ private buildCharacterRules;
46
+ private buildSubExpressionRules;
47
+ private buildRepeatRules;
48
+ }
49
+ export {};
@@ -1,227 +1,228 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GrammarBuilder = exports.Compile = void 0;
4
- const parser_1 = require("../parser/parser");
5
- const import_resolver_1 = require("./import-resolver");
6
- const gwell_1 = require("../grammars/gwell");
7
- const javascript_1 = require("./outputs/javascript");
8
- const typescript_1 = require("./outputs/typescript");
9
- const json_1 = require("./outputs/json");
10
- const number = require("../grammars/number.json");
11
- const string = require("../grammars/string.json");
12
- const whitespace = require("../grammars/whitespace.json");
13
- const generator_1 = require("./generator");
14
- const BuiltInRegistry = {
15
- number,
16
- string,
17
- whitespace,
18
- };
19
- const OutputFormats = {
20
- _default: javascript_1.JavascriptOutput,
21
- object: (grammar, exportName) => ({ grammar, exportName }),
22
- json: json_1.JSONFormatter,
23
- js: javascript_1.JavascriptOutput,
24
- javascript: javascript_1.JavascriptOutput,
25
- module: javascript_1.ESMOutput,
26
- esmodule: javascript_1.ESMOutput,
27
- ts: typescript_1.TypescriptFormat,
28
- typescript: typescript_1.TypescriptFormat
29
- };
30
- async function Compile(rules, config = {}) {
31
- const builder = new GrammarBuilder(config);
32
- await builder.import(rules);
33
- return builder.export(config.format);
34
- }
35
- exports.Compile = Compile;
36
- class GrammarBuilder {
37
- config;
38
- parser = new parser_1.Parser((0, gwell_1.default)());
39
- context;
40
- generator = new generator_1.Generator();
41
- constructor(config = {}, context) {
42
- this.config = config;
43
- this.context = context || {
44
- alreadyCompiled: new Set(),
45
- resolver: config.resolverInstance ? config.resolverInstance : config.resolver ? new config.resolver(config.basedir) : new import_resolver_1.FileSystemResolver(config.basedir),
46
- uuids: {}
47
- };
48
- this.generator.state.grammar.uuids = this.context.uuids;
49
- }
50
- export(format, name = 'GWLanguage') {
51
- const grammar = this.generator.state;
52
- const output = format || grammar.config.preprocessor || '_default';
53
- if (OutputFormats[output]) {
54
- return OutputFormats[output](this.generator, name);
55
- }
56
- throw new Error("No such preprocessor: " + output);
57
- }
58
- async import(directives) {
59
- if (typeof directives == 'string') {
60
- await this.mergeLanguageDefinitionString(directives);
61
- return;
62
- }
63
- directives = Array.isArray(directives) ? directives : [directives];
64
- for (const directive of directives) {
65
- if ("head" in directive) {
66
- this.generator.state.head.push(directive.head.js);
67
- }
68
- else if ("body" in directive) {
69
- this.generator.state.body.push(directive.body.js);
70
- }
71
- else if ("import" in directive) {
72
- await this.processImportDirective(directive);
73
- }
74
- else if ("config" in directive) {
75
- this.processConfigDirective(directive);
76
- }
77
- else if ("grammar" in directive) {
78
- this.processGrammarDirective(directive);
79
- }
80
- else if ("lexer" in directive) {
81
- this.processLexerDirective(directive);
82
- }
83
- }
84
- }
85
- async processImportDirective(directive) {
86
- if (directive.path) {
87
- await this.importGrammar(directive.import);
88
- }
89
- else {
90
- this.importBuiltIn(directive.import);
91
- }
92
- }
93
- processConfigDirective(directive) {
94
- Object.assign(this.generator.state.config, directive.config);
95
- }
96
- processGrammarDirective(directive) {
97
- if (directive.grammar.config) {
98
- this.generator.state.grammar.start = directive.grammar.config.start || this.generator.state.grammar.start;
99
- }
100
- for (const rule of directive.grammar.rules) {
101
- this.buildRules(rule.name, rule.expressions, rule);
102
- this.generator.state.grammar.start = this.generator.state.grammar.start || rule.name;
103
- }
104
- }
105
- processLexerDirective(directive) {
106
- if (!this.generator.state.lexer) {
107
- this.generator.state.lexer = {
108
- start: '',
109
- states: {}
110
- };
111
- }
112
- this.generator.state.lexer.start = directive.lexer.start || this.generator.state.lexer.start || (directive.lexer.states.length ? directive.lexer.states[0].name : '');
113
- for (const state of directive.lexer.states) {
114
- this.generator.addLexerState(state);
115
- }
116
- }
117
- importBuiltIn(name) {
118
- name = name.toLowerCase();
119
- if (!this.context.alreadyCompiled.has(name)) {
120
- this.context.alreadyCompiled.add(name);
121
- if (!BuiltInRegistry[name])
122
- return;
123
- this.generator.merge(BuiltInRegistry[name].state);
124
- }
125
- }
126
- async importGrammar(name) {
127
- const resolver = this.context.resolver;
128
- const path = resolver.path(name);
129
- if (!this.context.alreadyCompiled.has(path)) {
130
- this.context.alreadyCompiled.add(path);
131
- await this.mergeLanguageDefinitionString(await resolver.body(path));
132
- }
133
- }
134
- async mergeLanguageDefinitionString(body) {
135
- const builder = new GrammarBuilder(this.config, this.context);
136
- await builder.import(this.parser.run(body).results[0]);
137
- this.generator.merge(builder.generator.state);
138
- return;
139
- }
140
- buildRules(name, expressions, rule) {
141
- for (const expression of expressions) {
142
- this.generator.addGrammarRule(this.buildRule(name, expression, rule));
143
- }
144
- }
145
- buildRule(name, expression, rule) {
146
- const symbols = [];
147
- for (let i = 0; i < expression.symbols.length; i++) {
148
- const symbol = this.buildSymbol(name, expression.symbols[i]);
149
- if (symbol)
150
- symbols.push(symbol);
151
- }
152
- return { name, symbols, postprocess: expression.postprocess || rule?.postprocess };
153
- }
154
- buildSymbol(name, symbol) {
155
- if ('repeat' in symbol) {
156
- return this.buildRepeatRules(name, symbol);
157
- }
158
- if ('rule' in symbol) {
159
- return symbol;
160
- }
161
- if ('regex' in symbol) {
162
- return symbol;
163
- }
164
- if ('token' in symbol) {
165
- return symbol;
166
- }
167
- if ('literal' in symbol) {
168
- if (!symbol.literal.length) {
169
- return null;
170
- }
171
- if (symbol.literal.length === 1 || this.generator.state.lexer) {
172
- return symbol;
173
- }
174
- return this.buildCharacterRules(name, symbol);
175
- }
176
- if ('subexpression' in symbol) {
177
- return this.buildSubExpressionRules(name, symbol);
178
- }
179
- }
180
- buildCharacterRules(name, symbol) {
181
- const id = this.generator.grammarUUID(name + "$STR");
182
- this.buildRules(id, [
183
- {
184
- symbols: symbol.literal
185
- .split("")
186
- .map((literal) => {
187
- if (symbol.insensitive && literal.toLowerCase() != literal.toUpperCase())
188
- return { regex: literal, flags: 'i' };
189
- return { literal };
190
- }),
191
- postprocess: { builtin: "join" }
192
- }
193
- ]);
194
- return { rule: id };
195
- }
196
- buildSubExpressionRules(name, symbol) {
197
- const id = this.generator.grammarUUID(name + "$SUB");
198
- this.buildRules(id, symbol.subexpression);
199
- return { rule: id };
200
- }
201
- buildRepeatRules(name, symbol) {
202
- let id;
203
- const expr1 = { symbols: [] };
204
- const expr2 = { symbols: [] };
205
- if (symbol.repeat == '+') {
206
- id = this.generator.grammarUUID(name + "$RPT1N");
207
- expr1.symbols = [symbol.expression];
208
- expr2.symbols = [{ rule: id }, symbol.expression];
209
- expr2.postprocess = { builtin: "concat" };
210
- }
211
- else if (symbol.repeat == '*') {
212
- id = this.generator.grammarUUID(name + "$RPT0N");
213
- expr2.symbols = [{ rule: id }, symbol.expression];
214
- expr2.postprocess = { builtin: "concat" };
215
- }
216
- else if (symbol.repeat == '?') {
217
- id = this.generator.grammarUUID(name + "$RPT01");
218
- expr1.symbols = [symbol.expression];
219
- expr1.postprocess = { builtin: "first" };
220
- expr2.postprocess = { builtin: "null" };
221
- }
222
- this.buildRules(id, [expr1, expr2]);
223
- return { rule: id };
224
- }
225
- }
226
- exports.GrammarBuilder = GrammarBuilder;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrammarBuilder = exports.Compile = void 0;
4
+ const parser_1 = require("../parser/parser");
5
+ const import_resolver_1 = require("./import-resolver");
6
+ const gwell_1 = require("../grammars/gwell");
7
+ const javascript_1 = require("./outputs/javascript");
8
+ const typescript_1 = require("./outputs/typescript");
9
+ const json_1 = require("./outputs/json");
10
+ const number = require("../grammars/number.json");
11
+ const string = require("../grammars/string.json");
12
+ const whitespace = require("../grammars/whitespace.json");
13
+ const generator_1 = require("./generator");
14
+ const BuiltInRegistry = {
15
+ number,
16
+ string,
17
+ whitespace,
18
+ };
19
+ const TemplateFormats = {
20
+ _default: javascript_1.JavascriptOutput,
21
+ object: (grammar, exportName) => ({ grammar, exportName }),
22
+ json: json_1.JSONFormatter,
23
+ js: javascript_1.JavascriptOutput,
24
+ javascript: javascript_1.JavascriptOutput,
25
+ module: javascript_1.ESMOutput,
26
+ esmodule: javascript_1.ESMOutput,
27
+ esm: javascript_1.ESMOutput,
28
+ ts: typescript_1.TypescriptFormat,
29
+ typescript: typescript_1.TypescriptFormat
30
+ };
31
+ async function Compile(rules, config = {}) {
32
+ const builder = new GrammarBuilder(config);
33
+ await builder.import(rules);
34
+ return builder.export(config.template);
35
+ }
36
+ exports.Compile = Compile;
37
+ class GrammarBuilder {
38
+ config;
39
+ parser = new parser_1.Parser((0, gwell_1.default)());
40
+ context;
41
+ generator = new generator_1.Generator();
42
+ constructor(config = {}, context) {
43
+ this.config = config;
44
+ this.context = context || {
45
+ alreadyCompiled: new Set(),
46
+ resolver: config.resolverInstance ? config.resolverInstance : config.resolver ? new config.resolver(config.basedir) : new import_resolver_1.FileSystemResolver(config.basedir),
47
+ uuids: {}
48
+ };
49
+ this.generator.state.grammar.uuids = this.context.uuids;
50
+ }
51
+ export(format, name = 'GWLanguage') {
52
+ const grammar = this.generator.state;
53
+ const output = format || grammar.config.preprocessor || '_default';
54
+ if (TemplateFormats[output]) {
55
+ return TemplateFormats[output](this.generator, name);
56
+ }
57
+ throw new Error("No such preprocessor: " + output);
58
+ }
59
+ async import(directives) {
60
+ if (typeof directives == 'string') {
61
+ await this.mergeLanguageDefinitionString(directives);
62
+ return;
63
+ }
64
+ directives = Array.isArray(directives) ? directives : [directives];
65
+ for (const directive of directives) {
66
+ if ("head" in directive) {
67
+ this.generator.state.head.push(directive.head.js);
68
+ }
69
+ else if ("body" in directive) {
70
+ this.generator.state.body.push(directive.body.js);
71
+ }
72
+ else if ("import" in directive) {
73
+ await this.processImportDirective(directive);
74
+ }
75
+ else if ("config" in directive) {
76
+ this.processConfigDirective(directive);
77
+ }
78
+ else if ("grammar" in directive) {
79
+ this.processGrammarDirective(directive);
80
+ }
81
+ else if ("lexer" in directive) {
82
+ this.processLexerDirective(directive);
83
+ }
84
+ }
85
+ }
86
+ async processImportDirective(directive) {
87
+ if (directive.path) {
88
+ await this.importGrammar(directive.import);
89
+ }
90
+ else {
91
+ this.importBuiltIn(directive.import);
92
+ }
93
+ }
94
+ processConfigDirective(directive) {
95
+ Object.assign(this.generator.state.config, directive.config);
96
+ }
97
+ processGrammarDirective(directive) {
98
+ if (directive.grammar.config) {
99
+ this.generator.state.grammar.start = directive.grammar.config.start || this.generator.state.grammar.start;
100
+ }
101
+ for (const rule of directive.grammar.rules) {
102
+ this.buildRules(rule.name, rule.expressions, rule);
103
+ this.generator.state.grammar.start = this.generator.state.grammar.start || rule.name;
104
+ }
105
+ }
106
+ processLexerDirective(directive) {
107
+ if (!this.generator.state.lexer) {
108
+ this.generator.state.lexer = {
109
+ start: '',
110
+ states: {}
111
+ };
112
+ }
113
+ this.generator.state.lexer.start = directive.lexer.start || this.generator.state.lexer.start || (directive.lexer.states.length ? directive.lexer.states[0].name : '');
114
+ for (const state of directive.lexer.states) {
115
+ this.generator.addLexerState(state);
116
+ }
117
+ }
118
+ importBuiltIn(name) {
119
+ name = name.toLowerCase();
120
+ if (!this.context.alreadyCompiled.has(name)) {
121
+ this.context.alreadyCompiled.add(name);
122
+ if (!BuiltInRegistry[name])
123
+ return;
124
+ this.generator.merge(BuiltInRegistry[name].state);
125
+ }
126
+ }
127
+ async importGrammar(name) {
128
+ const resolver = this.context.resolver;
129
+ const path = resolver.path(name);
130
+ if (!this.context.alreadyCompiled.has(path)) {
131
+ this.context.alreadyCompiled.add(path);
132
+ await this.mergeLanguageDefinitionString(await resolver.body(path));
133
+ }
134
+ }
135
+ async mergeLanguageDefinitionString(body) {
136
+ const builder = new GrammarBuilder(this.config, this.context);
137
+ await builder.import(this.parser.run(body).results[0]);
138
+ this.generator.merge(builder.generator.state);
139
+ return;
140
+ }
141
+ buildRules(name, expressions, rule) {
142
+ for (const expression of expressions) {
143
+ this.generator.addGrammarRule(this.buildRule(name, expression, rule));
144
+ }
145
+ }
146
+ buildRule(name, expression, rule) {
147
+ const symbols = [];
148
+ for (let i = 0; i < expression.symbols.length; i++) {
149
+ const symbol = this.buildSymbol(name, expression.symbols[i]);
150
+ if (symbol)
151
+ symbols.push(symbol);
152
+ }
153
+ return { name, symbols, postprocess: expression.postprocess || rule?.postprocess };
154
+ }
155
+ buildSymbol(name, symbol) {
156
+ if ('repeat' in symbol) {
157
+ return this.buildRepeatRules(name, symbol);
158
+ }
159
+ if ('rule' in symbol) {
160
+ return symbol;
161
+ }
162
+ if ('regex' in symbol) {
163
+ return symbol;
164
+ }
165
+ if ('token' in symbol) {
166
+ return symbol;
167
+ }
168
+ if ('literal' in symbol) {
169
+ if (!symbol.literal.length) {
170
+ return null;
171
+ }
172
+ if (symbol.literal.length === 1 || this.generator.state.lexer) {
173
+ return symbol;
174
+ }
175
+ return this.buildCharacterRules(name, symbol);
176
+ }
177
+ if ('subexpression' in symbol) {
178
+ return this.buildSubExpressionRules(name, symbol);
179
+ }
180
+ }
181
+ buildCharacterRules(name, symbol) {
182
+ const id = this.generator.grammarUUID(name + "$STR");
183
+ this.buildRules(id, [
184
+ {
185
+ symbols: symbol.literal
186
+ .split("")
187
+ .map((literal) => {
188
+ if (symbol.insensitive && literal.toLowerCase() != literal.toUpperCase())
189
+ return { regex: literal, flags: 'i' };
190
+ return { literal };
191
+ }),
192
+ postprocess: { builtin: "join" }
193
+ }
194
+ ]);
195
+ return { rule: id };
196
+ }
197
+ buildSubExpressionRules(name, symbol) {
198
+ const id = this.generator.grammarUUID(name + "$SUB");
199
+ this.buildRules(id, symbol.subexpression);
200
+ return { rule: id };
201
+ }
202
+ buildRepeatRules(name, symbol) {
203
+ let id;
204
+ const expr1 = { symbols: [] };
205
+ const expr2 = { symbols: [] };
206
+ if (symbol.repeat == '+') {
207
+ id = this.generator.grammarUUID(name + "$RPT1N");
208
+ expr1.symbols = [symbol.expression];
209
+ expr2.symbols = [{ rule: id }, symbol.expression];
210
+ expr2.postprocess = { builtin: "concat" };
211
+ }
212
+ else if (symbol.repeat == '*') {
213
+ id = this.generator.grammarUUID(name + "$RPT0N");
214
+ expr2.symbols = [{ rule: id }, symbol.expression];
215
+ expr2.postprocess = { builtin: "concat" };
216
+ }
217
+ else if (symbol.repeat == '?') {
218
+ id = this.generator.grammarUUID(name + "$RPT01");
219
+ expr1.symbols = [symbol.expression];
220
+ expr1.postprocess = { builtin: "first" };
221
+ expr2.postprocess = { builtin: "null" };
222
+ }
223
+ this.buildRules(id, [expr1, expr2]);
224
+ return { rule: id };
225
+ }
226
+ }
227
+ exports.GrammarBuilder = GrammarBuilder;
227
228
  //# sourceMappingURL=compiler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}