grammar-well 1.3.2 → 2.0.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/LICENSE +165 -0
- package/README.md +76 -560
- package/build/generator/artifacts/basic.d.ts +7 -0
- package/build/generator/artifacts/basic.js +24 -0
- package/build/generator/artifacts/basic.js.map +1 -0
- package/build/generator/artifacts/lexer.d.ts +13 -0
- package/build/generator/artifacts/lexer.js +204 -0
- package/build/generator/artifacts/lexer.js.map +1 -0
- package/build/{compiler/generator → generator}/artifacts/lr.d.ts +14 -14
- package/build/{compiler/generator → generator}/artifacts/lr.js +18 -22
- package/build/generator/artifacts/lr.js.map +1 -0
- package/build/generator/builtin/json.d.ts +183 -0
- package/build/generator/builtin/json.js +124 -0
- package/build/generator/builtin/json.js.map +1 -0
- package/build/generator/builtin/registry.json +1 -0
- package/build/generator/builtin/whitespace.d.ts +61 -0
- package/build/generator/builtin/whitespace.js +37 -0
- package/build/generator/builtin/whitespace.js.map +1 -0
- package/build/generator/generator.d.ts +38 -0
- package/build/generator/generator.js +368 -0
- package/build/generator/generator.js.map +1 -0
- package/build/generator/grammars/index.d.ts +2 -0
- package/build/generator/grammars/index.js +3 -0
- package/build/generator/grammars/index.js.map +1 -0
- package/build/generator/grammars/v1.d.ts +1190 -0
- package/build/generator/grammars/v1.js +614 -0
- package/build/generator/grammars/v1.js.map +1 -0
- package/build/generator/grammars/v2.d.ts +1367 -0
- package/build/generator/grammars/v2.js +695 -0
- package/build/generator/grammars/v2.js.map +1 -0
- package/build/generator/import-resolvers/auto.d.ts +2 -0
- package/build/generator/import-resolvers/auto.js +11 -0
- package/build/generator/import-resolvers/auto.js.map +1 -0
- package/build/generator/import-resolvers/browser.d.ts +7 -0
- package/build/generator/import-resolvers/browser.js +13 -0
- package/build/generator/import-resolvers/browser.js.map +1 -0
- package/build/generator/import-resolvers/default.d.ts +2 -0
- package/build/generator/import-resolvers/default.js +11 -0
- package/build/generator/import-resolvers/default.js.map +1 -0
- package/build/generator/import-resolvers/filesystem.d.ts +7 -0
- package/build/generator/import-resolvers/filesystem.js +15 -0
- package/build/generator/import-resolvers/filesystem.js.map +1 -0
- package/build/generator/index.d.ts +3 -0
- package/build/generator/index.js +4 -0
- package/build/generator/index.js.map +1 -0
- package/build/generator/state.d.ts +28 -0
- package/build/generator/state.js +73 -0
- package/build/generator/state.js.map +1 -0
- package/build/generator/stringify/common.d.ts +22 -0
- package/build/generator/stringify/common.js +83 -0
- package/build/generator/stringify/common.js.map +1 -0
- package/build/generator/stringify/exports/javascript.d.ts +3 -0
- package/build/generator/stringify/exports/javascript.js +26 -0
- package/build/generator/stringify/exports/javascript.js.map +1 -0
- package/build/generator/stringify/exports/json.d.ts +2 -0
- package/build/generator/stringify/exports/json.js +4 -0
- package/build/generator/stringify/exports/json.js.map +1 -0
- package/build/generator/stringify/exports/registry.d.ts +20 -0
- package/build/generator/stringify/exports/registry.js +17 -0
- package/build/generator/stringify/exports/registry.js.map +1 -0
- package/build/generator/stringify/exports/typescript.d.ts +2 -0
- package/build/generator/stringify/exports/typescript.js +16 -0
- package/build/generator/stringify/exports/typescript.js.map +1 -0
- package/build/generator/stringify/grammar/v2.d.ts +20 -0
- package/build/generator/stringify/grammar/v2.js +211 -0
- package/build/generator/stringify/grammar/v2.js.map +1 -0
- package/build/generator/stringify/javascript.d.ts +13 -0
- package/build/generator/stringify/javascript.js +83 -0
- package/build/generator/stringify/javascript.js.map +1 -0
- package/build/index.d.ts +7 -6
- package/build/index.js +7 -24
- package/build/index.js.map +1 -1
- package/build/lexers/character-lexer.d.ts +2 -2
- package/build/lexers/character-lexer.js +1 -5
- package/build/lexers/character-lexer.js.map +1 -1
- package/build/lexers/stateful-lexer.d.ts +12 -17
- package/build/lexers/stateful-lexer.js +38 -186
- package/build/lexers/stateful-lexer.js.map +1 -1
- package/build/lexers/token-buffer.d.ts +8 -8
- package/build/lexers/token-buffer.js +1 -5
- package/build/lexers/token-buffer.js.map +1 -1
- package/build/parser/algorithms/cyk.d.ts +6 -6
- package/build/parser/algorithms/cyk.js +10 -13
- package/build/parser/algorithms/cyk.js.map +1 -1
- package/build/parser/algorithms/earley.d.ts +7 -7
- package/build/parser/algorithms/earley.js +7 -11
- package/build/parser/algorithms/earley.js.map +1 -1
- package/build/parser/algorithms/lrk/algorithm.d.ts +3 -3
- package/build/parser/algorithms/lrk/algorithm.js +10 -13
- package/build/parser/algorithms/lrk/algorithm.js.map +1 -1
- package/build/parser/algorithms/lrk/bimap.js +1 -5
- package/build/parser/algorithms/lrk/bimap.js.map +1 -1
- package/build/parser/algorithms/lrk/canonical-collection.d.ts +7 -7
- package/build/parser/algorithms/lrk/canonical-collection.js +11 -15
- package/build/parser/algorithms/lrk/canonical-collection.js.map +1 -1
- package/build/parser/algorithms/lrk/closure.d.ts +3 -3
- package/build/parser/algorithms/lrk/closure.js +3 -7
- package/build/parser/algorithms/lrk/closure.js.map +1 -1
- package/build/parser/algorithms/lrk/stack.d.ts +6 -6
- package/build/parser/algorithms/lrk/stack.js +1 -5
- package/build/parser/algorithms/lrk/stack.js.map +1 -1
- package/build/parser/algorithms/lrk/state.d.ts +5 -5
- package/build/parser/algorithms/lrk/state.js +1 -2
- package/build/parser/parse.d.ts +10 -0
- package/build/parser/parse.js +34 -0
- package/build/parser/parse.js.map +1 -0
- package/build/parser/parser.d.ts +6 -17
- package/build/parser/parser.js +26 -42
- package/build/parser/parser.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build/typings/ast.d.ts +134 -0
- package/build/typings/ast.js +3 -0
- package/build/typings/ast.js.map +1 -0
- package/build/typings/common.d.ts +4 -0
- package/build/typings/common.js +2 -0
- package/build/typings/common.js.map +1 -0
- package/build/typings/generator.d.ts +58 -0
- package/build/typings/generator.js +3 -0
- package/build/typings/generator.js.map +1 -0
- package/build/typings/index.d.ts +43 -0
- package/build/typings/index.js +5 -0
- package/build/typings/index.js.map +1 -0
- package/build/typings/runtime.d.ts +70 -0
- package/build/typings/runtime.js +2 -0
- package/build/typings/runtime.js.map +1 -0
- package/build/utility/format.d.ts +1 -0
- package/build/utility/format.js +12 -0
- package/build/utility/format.js.map +1 -0
- package/build/utility/formatter.d.ts +1 -0
- package/build/utility/formatter.js +12 -0
- package/build/utility/formatter.js.map +1 -0
- package/build/utility/general.d.ts +1 -1
- package/build/utility/general.js +5 -13
- package/build/utility/general.js.map +1 -1
- package/build/utility/index.d.ts +4 -1
- package/build/utility/index.js +4 -17
- package/build/utility/index.js.map +1 -1
- package/build/utility/lint.d.ts +2 -2
- package/build/utility/lint.js +2 -6
- package/build/utility/lint.js.map +1 -1
- package/build/utility/migrate.d.ts +1 -0
- package/build/utility/migrate.js +10 -0
- package/build/utility/migrate.js.map +1 -0
- package/build/utility/monarch.d.ts +2 -2
- package/build/utility/monarch.js +33 -38
- package/build/utility/monarch.js.map +1 -1
- package/build/utility/parsing.d.ts +6 -0
- package/build/utility/parsing.js +26 -0
- package/build/utility/parsing.js.map +1 -0
- package/build/utility/text-format.d.ts +6 -6
- package/build/utility/text-format.js +2 -6
- package/build/utility/text-format.js.map +1 -1
- package/package.json +17 -24
- package/src/generator/artifacts/basic.ts +26 -0
- package/src/generator/artifacts/lexer.ts +228 -0
- package/src/{compiler/generator → generator}/artifacts/lr.ts +25 -24
- package/src/generator/builtin/character.well +7 -0
- package/src/generator/builtin/json.well +85 -0
- package/src/generator/builtin/number.well +21 -0
- package/src/generator/builtin/registry.json +1 -0
- package/src/generator/builtin/string.well +54 -0
- package/src/generator/builtin/whitespace.well +16 -0
- package/src/generator/generator.ts +401 -0
- package/src/generator/grammars/index.ts +2 -0
- package/src/generator/grammars/v1.ts +620 -0
- package/src/generator/grammars/v1.well +422 -0
- package/src/generator/grammars/v2.ts +701 -0
- package/src/generator/grammars/v2.well +413 -0
- package/src/generator/import-resolvers/auto.ts +12 -0
- package/src/generator/import-resolvers/browser.ts +13 -0
- package/src/generator/import-resolvers/filesystem.ts +18 -0
- package/src/generator/index.ts +3 -0
- package/src/generator/state.ts +89 -0
- package/src/generator/stringify/common.ts +90 -0
- package/src/generator/stringify/exports/javascript.ts +29 -0
- package/src/generator/stringify/exports/json.ts +5 -0
- package/src/generator/stringify/exports/registry.ts +20 -0
- package/src/generator/stringify/exports/typescript.ts +17 -0
- package/src/generator/stringify/grammar/v2.ts +223 -0
- package/src/generator/stringify/javascript.ts +94 -0
- package/src/index.ts +7 -6
- package/src/lexers/character-lexer.ts +2 -2
- package/src/lexers/stateful-lexer.ts +46 -203
- package/src/lexers/token-buffer.ts +3 -3
- package/src/parser/algorithms/cyk.ts +13 -12
- package/src/parser/algorithms/earley.ts +10 -10
- package/src/parser/algorithms/lrk/algorithm.ts +8 -7
- package/src/parser/algorithms/lrk/canonical-collection.ts +14 -14
- package/src/parser/algorithms/lrk/closure.ts +6 -6
- package/src/parser/algorithms/lrk/stack.ts +6 -6
- package/src/parser/algorithms/lrk/state.ts +5 -5
- package/src/parser/parse.ts +45 -0
- package/src/typings/ast.ts +148 -0
- package/src/typings/common.ts +2 -0
- package/src/typings/generator.ts +62 -0
- package/src/typings/index.ts +38 -0
- package/src/typings/runtime.ts +82 -0
- package/src/utility/format.ts +12 -0
- package/src/utility/general.ts +1 -2
- package/src/utility/index.ts +4 -1
- package/src/utility/lint.ts +5 -5
- package/src/utility/monarch.ts +34 -34
- package/src/utility/parsing.ts +30 -0
- package/src/utility/text-format.ts +7 -7
- package/.eslintrc.cjs +0 -14
- package/bootstrap.ts +0 -45
- package/build/compiler/builtin.json +0 -1
- package/build/compiler/compiler.d.ts +0 -50
- package/build/compiler/compiler.js +0 -249
- package/build/compiler/compiler.js.map +0 -1
- package/build/compiler/generator/artifacts/lr.js.map +0 -1
- package/build/compiler/generator/artifacts/standard.d.ts +0 -7
- package/build/compiler/generator/artifacts/standard.js +0 -28
- package/build/compiler/generator/artifacts/standard.js.map +0 -1
- package/build/compiler/generator/generator.d.ts +0 -24
- package/build/compiler/generator/generator.js +0 -217
- package/build/compiler/generator/generator.js.map +0 -1
- package/build/compiler/gwell.d.ts +0 -1112
- package/build/compiler/gwell.js +0 -576
- package/build/compiler/gwell.js.map +0 -1
- package/build/compiler/import-resolver.d.ts +0 -15
- package/build/compiler/import-resolver.js +0 -37
- package/build/compiler/import-resolver.js.map +0 -1
- package/build/compiler/index.d.ts +0 -2
- package/build/compiler/index.js +0 -19
- package/build/compiler/index.js.map +0 -1
- package/build/compiler/outputs/javascript.d.ts +0 -3
- package/build/compiler/outputs/javascript.js +0 -29
- package/build/compiler/outputs/javascript.js.map +0 -1
- package/build/compiler/outputs/json.d.ts +0 -2
- package/build/compiler/outputs/json.js +0 -8
- package/build/compiler/outputs/json.js.map +0 -1
- package/build/compiler/outputs/typescript.d.ts +0 -2
- package/build/compiler/outputs/typescript.js +0 -21
- package/build/compiler/outputs/typescript.js.map +0 -1
- package/build/parser/algorithms/lr.d.ts +0 -7
- package/build/parser/algorithms/lr.js +0 -108
- package/build/parser/algorithms/lr.js.map +0 -5
- package/build/parser/algorithms/lr0.d.ts +0 -7
- package/build/parser/algorithms/lr0.js +0 -156
- package/build/parser/algorithms/lr0.js.map +0 -1
- package/build/typings.d.ts +0 -226
- package/build/typings.js +0 -3
- package/build/typings.js.map +0 -1
- package/src/compiler/builtin/json.gwell +0 -74
- package/src/compiler/builtin/number.gwell +0 -20
- package/src/compiler/builtin/string.gwell +0 -48
- package/src/compiler/builtin/whitespace.gwell +0 -10
- package/src/compiler/builtin.json +0 -1
- package/src/compiler/compiler.ts +0 -265
- package/src/compiler/generator/artifacts/standard.ts +0 -26
- package/src/compiler/generator/generator.ts +0 -237
- package/src/compiler/gwell.gwell +0 -294
- package/src/compiler/gwell.js +0 -578
- package/src/compiler/import-resolver.ts +0 -36
- package/src/compiler/index.ts +0 -2
- package/src/compiler/outputs/javascript.ts +0 -27
- package/src/compiler/outputs/json.ts +0 -5
- package/src/compiler/outputs/typescript.ts +0 -18
- package/src/parser/parser.ts +0 -77
- package/src/typings.ts +0 -248
- package/testing.ts +0 -18
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
export class V2GrammarString {
|
|
2
|
+
source = '';
|
|
3
|
+
append(directives) {
|
|
4
|
+
directives = Array.isArray(directives) ? directives : [directives];
|
|
5
|
+
for (const directive of directives) {
|
|
6
|
+
if ("lifecycle" in directive) {
|
|
7
|
+
this.appendSection("on:" + directive.lifecycle, directive.js.js.trim());
|
|
8
|
+
}
|
|
9
|
+
else if ("import" in directive) {
|
|
10
|
+
this.appendImportDirective(directive);
|
|
11
|
+
}
|
|
12
|
+
else if ("config" in directive) {
|
|
13
|
+
this.appendConfigDirective(directive);
|
|
14
|
+
}
|
|
15
|
+
else if ("grammar" in directive) {
|
|
16
|
+
this.appendGrammarDirective(directive);
|
|
17
|
+
}
|
|
18
|
+
else if ("lexer" in directive) {
|
|
19
|
+
this.appendLexerDirective(directive);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
appendImportDirective(directive) {
|
|
24
|
+
this.source += `import * from ${directive.path ? JSON.stringify(directive.import) : directive.import};\n`;
|
|
25
|
+
}
|
|
26
|
+
appendConfigDirective(directive) {
|
|
27
|
+
this.appendSection('config', this.formatKV(directive.config, 1));
|
|
28
|
+
}
|
|
29
|
+
appendGrammarDirective(directive) {
|
|
30
|
+
let body = '';
|
|
31
|
+
if (directive.grammar.config) {
|
|
32
|
+
body += this.formatKV(directive.grammar.config, 1);
|
|
33
|
+
}
|
|
34
|
+
if (directive.grammar.rules) {
|
|
35
|
+
for (const rule of directive.grammar.rules) {
|
|
36
|
+
body += this.formatGrammarRule(rule);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.appendSection('grammar', body);
|
|
40
|
+
}
|
|
41
|
+
formatGrammarRule(rule) {
|
|
42
|
+
let body = '\n' + this.indent(1, `[${rule.name}]`);
|
|
43
|
+
if (rule.postprocess) {
|
|
44
|
+
body += ` ${this.formatPostProcess(rule.postprocess)}`;
|
|
45
|
+
}
|
|
46
|
+
for (const exp of rule.expressions) {
|
|
47
|
+
body += '\n' + this.indent(2, '| ') + this.formatSymbols(exp.symbols);
|
|
48
|
+
if (exp.postprocess) {
|
|
49
|
+
body += ` ${this.formatPostProcess(exp.postprocess)}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
body += '\n';
|
|
53
|
+
return body;
|
|
54
|
+
}
|
|
55
|
+
formatSymbols(exp) {
|
|
56
|
+
return exp.map(v => this.formatSymbol(v) + (v.alias ? "@" + v.alias : '')).join(' ');
|
|
57
|
+
}
|
|
58
|
+
formatSymbol(exp) {
|
|
59
|
+
if (typeof exp == 'string') {
|
|
60
|
+
return JSON.stringify(exp);
|
|
61
|
+
}
|
|
62
|
+
if ('subexpression' in exp) {
|
|
63
|
+
return `(${exp.subexpression.map(v => this.formatSymbols(v.symbols)).join(' | ')})`;
|
|
64
|
+
}
|
|
65
|
+
if ('rule' in exp) {
|
|
66
|
+
return exp.rule;
|
|
67
|
+
}
|
|
68
|
+
if ('literal' in exp) {
|
|
69
|
+
return (exp.insensitive ? '\\i ' : '') + JSON.stringify(exp.literal);
|
|
70
|
+
}
|
|
71
|
+
if ('regex' in exp) {
|
|
72
|
+
let { regex, flags } = exp;
|
|
73
|
+
return `r${flags || ''}:{${regex}}`;
|
|
74
|
+
}
|
|
75
|
+
if ('token' in exp) {
|
|
76
|
+
return `<${exp.token}>`;
|
|
77
|
+
}
|
|
78
|
+
if ('expression' in exp) {
|
|
79
|
+
return this.formatSymbol(exp.expression) + (exp.repeat || '');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
formatPostProcess(postProcess) {
|
|
83
|
+
if ('js' in postProcess) {
|
|
84
|
+
return `=> \${ ${postProcess.js} }`;
|
|
85
|
+
}
|
|
86
|
+
if ('template' in postProcess) {
|
|
87
|
+
const prefix = postProcess.template.slice(0, 1);
|
|
88
|
+
const suffix = postProcess.template.slice(-1);
|
|
89
|
+
return `=> ${prefix} ${postProcess.template.slice(1, -1).trim()} ${suffix}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
appendLexerDirective(directive) {
|
|
93
|
+
let body = '';
|
|
94
|
+
if (directive.lexer.start) {
|
|
95
|
+
body += this.formatKV({ start: directive.lexer.start }, 1);
|
|
96
|
+
}
|
|
97
|
+
if (directive.lexer.states) {
|
|
98
|
+
for (const { state, name } of directive.lexer.states) {
|
|
99
|
+
if ('span' in state) {
|
|
100
|
+
body += '\n' + this.indent(1, `[${name}] span {\n`);
|
|
101
|
+
const stateOpen = state.span.find(v => v.name == 'start');
|
|
102
|
+
const stateBody = state.span.find(v => v.name == 'span');
|
|
103
|
+
const stateClose = state.span.find(v => v.name == 'stop');
|
|
104
|
+
if (state.config) {
|
|
105
|
+
body += this.formatKV(state.config, 2);
|
|
106
|
+
}
|
|
107
|
+
if (stateOpen) {
|
|
108
|
+
body += this.formatLexerState('start', stateOpen.state, 2);
|
|
109
|
+
}
|
|
110
|
+
if (stateBody) {
|
|
111
|
+
body += this.formatLexerState('span', stateBody.state, 2);
|
|
112
|
+
}
|
|
113
|
+
if (stateClose) {
|
|
114
|
+
body += this.formatLexerState('stop', stateClose.state, 2);
|
|
115
|
+
}
|
|
116
|
+
body += '\n' + this.indent(1, `}\n`);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
body += this.formatLexerState(name, state, 1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
this.appendSection('lexer', body);
|
|
124
|
+
}
|
|
125
|
+
formatLexerState(name, state, depth = 0) {
|
|
126
|
+
let body = '\n' + this.indent(depth, `[${name}]\n`);
|
|
127
|
+
if (state.default) {
|
|
128
|
+
body += this.indent(depth + 1, 'default: ' + this.formatLexerStateRule(state.default) + ';\n');
|
|
129
|
+
}
|
|
130
|
+
if (state.unmatched) {
|
|
131
|
+
body += this.indent(depth + 1, 'unmatched: ' + this.formatLexerStateRule(state.unmatched) + ';\n');
|
|
132
|
+
}
|
|
133
|
+
for (const rule of state.rules) {
|
|
134
|
+
if ('span' in rule)
|
|
135
|
+
continue;
|
|
136
|
+
body += this.indent(depth + 1, '- ' + this.formatLexerStateRule(rule) + '\n');
|
|
137
|
+
}
|
|
138
|
+
return body;
|
|
139
|
+
}
|
|
140
|
+
formatLexerStateRule(rule) {
|
|
141
|
+
let body = '';
|
|
142
|
+
if ('import' in rule) {
|
|
143
|
+
body += 'import ' + rule.import.join(', ');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
if (rule.before) {
|
|
147
|
+
body += 'before ' + this.formatSymbol(rule.when);
|
|
148
|
+
}
|
|
149
|
+
else if (rule.skip) {
|
|
150
|
+
body += 'skip ' + this.formatSymbol(rule.when);
|
|
151
|
+
}
|
|
152
|
+
else if ('when' in rule) {
|
|
153
|
+
body += 'when ' + this.formatSymbol(rule.when);
|
|
154
|
+
}
|
|
155
|
+
if (typeof rule.type != 'undefined') {
|
|
156
|
+
body += ` type ${JSON.stringify(rule.type)}`;
|
|
157
|
+
}
|
|
158
|
+
if (typeof rule.tag != 'undefined') {
|
|
159
|
+
body += ` tag ${rule.tag.map(v => JSON.stringify(v)).join(', ')}`;
|
|
160
|
+
}
|
|
161
|
+
if (typeof rule.open != 'undefined') {
|
|
162
|
+
body += ` open ${JSON.stringify(rule.open)}`;
|
|
163
|
+
}
|
|
164
|
+
if (typeof rule.close != 'undefined') {
|
|
165
|
+
body += ` close ${JSON.stringify(rule.close)}`;
|
|
166
|
+
}
|
|
167
|
+
if (typeof rule.highlight != 'undefined') {
|
|
168
|
+
body += ` highlight ${JSON.stringify(rule.highlight)}`;
|
|
169
|
+
}
|
|
170
|
+
if (typeof rule.unembed != 'undefined') {
|
|
171
|
+
body += ` unembed`;
|
|
172
|
+
}
|
|
173
|
+
if (typeof rule.embed != 'undefined') {
|
|
174
|
+
body += ` embed`;
|
|
175
|
+
}
|
|
176
|
+
if (typeof rule.pop != 'undefined') {
|
|
177
|
+
body += ` pop` + (rule.pop == 'all' || rule.pop > 1 ? ' ' + rule.pop : '');
|
|
178
|
+
}
|
|
179
|
+
if (typeof rule.inset != 'undefined') {
|
|
180
|
+
body += ` inset` + (rule.inset > 1 ? ' ' + rule.inset : '');
|
|
181
|
+
}
|
|
182
|
+
if (typeof rule.goto != 'undefined') {
|
|
183
|
+
body += ` goto ${rule.goto}`;
|
|
184
|
+
}
|
|
185
|
+
if (typeof rule.set != 'undefined') {
|
|
186
|
+
body += ` set ${rule.set}`;
|
|
187
|
+
}
|
|
188
|
+
if ("stay" in rule && rule.stay) {
|
|
189
|
+
body += ` stay`;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return body.trim();
|
|
193
|
+
}
|
|
194
|
+
formatKV(obj, depth = 0) {
|
|
195
|
+
let body = '';
|
|
196
|
+
for (const key in obj) {
|
|
197
|
+
body += this.indent(depth, `${key}: ${JSON.stringify(obj[key])}\n`);
|
|
198
|
+
}
|
|
199
|
+
return body;
|
|
200
|
+
}
|
|
201
|
+
appendSection(label, body) {
|
|
202
|
+
if (this.source) {
|
|
203
|
+
this.source += '\n';
|
|
204
|
+
}
|
|
205
|
+
this.source += `${label} {\n${body}\n}\n`;
|
|
206
|
+
}
|
|
207
|
+
indent(depth = 0, content) {
|
|
208
|
+
return `\t`.repeat(depth) + content;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../../src/generator/stringify/grammar/v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Dictionary, GeneratorOutputOptions, GeneratorGrammarProductionRule } from "../../typings/index.js";
|
|
2
|
+
import { GeneratorState } from "../state.js";
|
|
3
|
+
export declare class JavaScriptGenerator {
|
|
4
|
+
state: GeneratorState;
|
|
5
|
+
options: GeneratorOutputOptions;
|
|
6
|
+
constructor(state: GeneratorState, options: GeneratorOutputOptions);
|
|
7
|
+
name(): string;
|
|
8
|
+
lifecycle(lifecycle: string): any;
|
|
9
|
+
artifacts(depth?: number): string;
|
|
10
|
+
postProcess(postprocess: GeneratorGrammarProductionRule['postprocess'], alias: Dictionary<number>): any;
|
|
11
|
+
grammarRule(rule: GeneratorGrammarProductionRule): string;
|
|
12
|
+
private templatePostProcess;
|
|
13
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { BasicGrammarTable } from "../artifacts/basic.js";
|
|
2
|
+
import { LexerArtifact } from "../artifacts/lexer.js";
|
|
3
|
+
import { LRParseTableBuilder } from "../artifacts/lr.js";
|
|
4
|
+
import { CommonGenerator } from "./common.js";
|
|
5
|
+
const PostProcessors = {
|
|
6
|
+
"join": "({data}) => data.join('')",
|
|
7
|
+
"concat": "({data}) => data[0].concat([data[1]])",
|
|
8
|
+
"null": "() => null",
|
|
9
|
+
"first": "({data}) => data[0]"
|
|
10
|
+
};
|
|
11
|
+
export class JavaScriptGenerator {
|
|
12
|
+
state;
|
|
13
|
+
options;
|
|
14
|
+
constructor(state, options) {
|
|
15
|
+
this.state = state;
|
|
16
|
+
this.options = options;
|
|
17
|
+
}
|
|
18
|
+
name() {
|
|
19
|
+
return this.options.name || 'GWLanguage';
|
|
20
|
+
}
|
|
21
|
+
lifecycle(lifecycle) {
|
|
22
|
+
if (this.options.noscript)
|
|
23
|
+
return '';
|
|
24
|
+
return this.state.lifecycle[lifecycle] || '';
|
|
25
|
+
}
|
|
26
|
+
artifacts(depth = 0) {
|
|
27
|
+
let output = {};
|
|
28
|
+
const artifacts = this.options.artifacts || { grammar: true, lexer: true };
|
|
29
|
+
if (artifacts && artifacts.lr) {
|
|
30
|
+
const table = new LRParseTableBuilder(this);
|
|
31
|
+
output.lr = CommonGenerator.JSON({
|
|
32
|
+
k: "0",
|
|
33
|
+
table: table.stringify(depth + 2)
|
|
34
|
+
}, depth + 1);
|
|
35
|
+
}
|
|
36
|
+
if ('lexer' in this.state && artifacts.lexer) {
|
|
37
|
+
const l = new LexerArtifact(this.state.lexer);
|
|
38
|
+
output.lexer = l.output(depth + 1);
|
|
39
|
+
}
|
|
40
|
+
if (artifacts.grammar) {
|
|
41
|
+
const basic = new BasicGrammarTable(this);
|
|
42
|
+
output.grammar = basic.stringify(depth + 1);
|
|
43
|
+
}
|
|
44
|
+
return CommonGenerator.JSON(output, depth);
|
|
45
|
+
}
|
|
46
|
+
postProcess(postprocess, alias) {
|
|
47
|
+
postprocess = this.state.grammar.config.postprocessorOverride || postprocess || this.state.grammar.config.postprocessorDefault;
|
|
48
|
+
if (!postprocess)
|
|
49
|
+
return null;
|
|
50
|
+
if ('builtin' in postprocess)
|
|
51
|
+
return PostProcessors[postprocess.builtin];
|
|
52
|
+
if (this.options.noscript)
|
|
53
|
+
return;
|
|
54
|
+
if (typeof postprocess == 'string')
|
|
55
|
+
return postprocess;
|
|
56
|
+
if ('js' in postprocess)
|
|
57
|
+
return postprocess.js;
|
|
58
|
+
if ('template' in postprocess)
|
|
59
|
+
return this.templatePostProcess(postprocess.template, alias);
|
|
60
|
+
}
|
|
61
|
+
grammarRule(rule) {
|
|
62
|
+
const symbols = [];
|
|
63
|
+
const alias = {};
|
|
64
|
+
for (let i = 0; i < rule.symbols.length; i++) {
|
|
65
|
+
symbols.push(CommonGenerator.SerializeSymbol(rule.symbols[i]));
|
|
66
|
+
if (rule.symbols[i].alias) {
|
|
67
|
+
alias[rule.symbols[i].alias] = i;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return CommonGenerator.JSON({
|
|
71
|
+
name: JSON.stringify(rule.name),
|
|
72
|
+
symbols: CommonGenerator.JSON(symbols, -1),
|
|
73
|
+
postprocess: this.postProcess(rule.postprocess, alias)
|
|
74
|
+
}, -1);
|
|
75
|
+
}
|
|
76
|
+
templatePostProcess(templateBody, alias) {
|
|
77
|
+
for (const key in alias) {
|
|
78
|
+
templateBody = templateBody.replace(new RegExp('(?:\\$)' + key + '(?![a-zA-Z\\d\\$_])'), `data[${alias[key]}]`);
|
|
79
|
+
}
|
|
80
|
+
return "({data}) => { return " + templateBody.replace(/\$(\d+)/g, "data[$1]") + "; }";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=javascript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/generator/stringify/javascript.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
3
|
-
export
|
|
4
|
-
export * from './
|
|
5
|
-
export
|
|
6
|
-
export * from './
|
|
1
|
+
export * from './generator/generator.js';
|
|
2
|
+
export * from './generator/import-resolvers/auto.js';
|
|
3
|
+
export { StatefulLexer } from './lexers/stateful-lexer.js';
|
|
4
|
+
export * from './parser/parse.js';
|
|
5
|
+
export * from './utility/parsing.js';
|
|
6
|
+
export * from './typings/index.js';
|
|
7
|
+
export * from './utility/index.js';
|
package/build/index.js
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.StatefulLexer = void 0;
|
|
18
|
-
__exportStar(require("./compiler/compiler"), exports);
|
|
19
|
-
__exportStar(require("./compiler/import-resolver"), exports);
|
|
20
|
-
__exportStar(require("./parser/parser"), exports);
|
|
21
|
-
__exportStar(require("./typings"), exports);
|
|
22
|
-
var stateful_lexer_1 = require("./lexers/stateful-lexer");
|
|
23
|
-
Object.defineProperty(exports, "StatefulLexer", { enumerable: true, get: function () { return stateful_lexer_1.StatefulLexer; } });
|
|
24
|
-
__exportStar(require("./utility/monarch"), exports);
|
|
1
|
+
export * from './generator/generator.js';
|
|
2
|
+
export * from './generator/import-resolvers/auto.js';
|
|
3
|
+
export { StatefulLexer } from './lexers/stateful-lexer.js';
|
|
4
|
+
export * from './parser/parse.js';
|
|
5
|
+
export * from './utility/parsing.js';
|
|
6
|
+
export * from './typings/index.js';
|
|
7
|
+
export * from './utility/index.js';
|
|
25
8
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class CharacterLexer implements
|
|
1
|
+
import { RuntimeLexer } from "../typings/index.js";
|
|
2
|
+
export declare class CharacterLexer implements RuntimeLexer {
|
|
3
3
|
private buffer;
|
|
4
4
|
private $indexOffset;
|
|
5
5
|
private $index;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CharacterLexer = void 0;
|
|
4
|
-
class CharacterLexer {
|
|
1
|
+
export class CharacterLexer {
|
|
5
2
|
buffer = '';
|
|
6
3
|
$indexOffset = 0;
|
|
7
4
|
$index = -1;
|
|
@@ -67,5 +64,4 @@ class CharacterLexer {
|
|
|
67
64
|
this.$line = 0;
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
|
-
exports.CharacterLexer = CharacterLexer;
|
|
71
67
|
//# sourceMappingURL=character-lexer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-lexer.js","sourceRoot":"","sources":["../../src/lexers/character-lexer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"character-lexer.js","sourceRoot":"","sources":["../../src/lexers/character-lexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class StatefulLexer implements
|
|
1
|
+
import { RuntimeLexer, RuntimeLexerConfig } from "../typings/index.js";
|
|
2
|
+
export declare class StatefulLexer implements RuntimeLexer {
|
|
3
3
|
private start;
|
|
4
4
|
private states;
|
|
5
5
|
private buffer;
|
|
@@ -13,7 +13,7 @@ export declare class StatefulLexer implements Lexer {
|
|
|
13
13
|
private rules;
|
|
14
14
|
private regexp;
|
|
15
15
|
private tags;
|
|
16
|
-
constructor({ states, start }:
|
|
16
|
+
constructor({ states, start }: RuntimeLexerConfig);
|
|
17
17
|
feed(data?: string, state?: ReturnType<StatefulLexer['state']>): void;
|
|
18
18
|
state(): {
|
|
19
19
|
line: number;
|
|
@@ -22,15 +22,15 @@ export declare class StatefulLexer implements Lexer {
|
|
|
22
22
|
stack: string[];
|
|
23
23
|
prefetched: RegExpExecArray;
|
|
24
24
|
};
|
|
25
|
-
next(): {
|
|
26
|
-
type:
|
|
27
|
-
highlight:
|
|
28
|
-
open:
|
|
29
|
-
close:
|
|
25
|
+
next(skipped?: boolean): {
|
|
26
|
+
type: any;
|
|
27
|
+
highlight: any;
|
|
28
|
+
open: any;
|
|
29
|
+
close: any;
|
|
30
30
|
tag: Set<string>;
|
|
31
|
-
value:
|
|
32
|
-
text:
|
|
33
|
-
offset:
|
|
31
|
+
value: any;
|
|
32
|
+
text: any;
|
|
33
|
+
offset: any;
|
|
34
34
|
line: number;
|
|
35
35
|
lines: number;
|
|
36
36
|
column: number;
|
|
@@ -40,13 +40,8 @@ export declare class StatefulLexer implements Lexer {
|
|
|
40
40
|
private pop;
|
|
41
41
|
private goto;
|
|
42
42
|
private matchNext;
|
|
43
|
-
private createToken;
|
|
44
43
|
private getTags;
|
|
44
|
+
private adjustPosition;
|
|
45
45
|
private adjustStack;
|
|
46
46
|
private getGroup;
|
|
47
47
|
}
|
|
48
|
-
export declare function ResolveStates(states: {
|
|
49
|
-
[key: string]: LexerStateDefinition;
|
|
50
|
-
}, start: string): {
|
|
51
|
-
[key: string]: LexerStateDefinition;
|
|
52
|
-
};
|