@traqula/core 0.0.23 → 0.0.25

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 (75) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/lib/AstCoreFactory.js +181 -149
  3. package/dist/cjs/lib/AstCoreFactory.js.map +1 -0
  4. package/dist/cjs/lib/generator-builder/builderTypes.js +2 -15
  5. package/dist/cjs/lib/generator-builder/builderTypes.js.map +1 -0
  6. package/dist/cjs/lib/generator-builder/dynamicGenerator.js +209 -200
  7. package/dist/cjs/lib/generator-builder/dynamicGenerator.js.map +1 -0
  8. package/dist/cjs/lib/generator-builder/generatorBuilder.js +103 -117
  9. package/dist/cjs/lib/generator-builder/generatorBuilder.js.map +1 -0
  10. package/dist/cjs/lib/generator-builder/generatorTypes.js +2 -15
  11. package/dist/cjs/lib/generator-builder/generatorTypes.js.map +1 -0
  12. package/dist/cjs/lib/index.js +39 -57
  13. package/dist/cjs/lib/index.js.map +1 -0
  14. package/dist/cjs/lib/indirection-builder/IndirBuilder.js +63 -85
  15. package/dist/cjs/lib/indirection-builder/IndirBuilder.js.map +1 -0
  16. package/dist/cjs/lib/indirection-builder/dynamicIndirected.js +28 -50
  17. package/dist/cjs/lib/indirection-builder/dynamicIndirected.js.map +1 -0
  18. package/dist/cjs/lib/indirection-builder/helpers.js +11 -31
  19. package/dist/cjs/lib/indirection-builder/helpers.js.map +1 -0
  20. package/dist/cjs/lib/lexer-builder/LexerBuilder.js +92 -114
  21. package/dist/cjs/lib/lexer-builder/LexerBuilder.js.map +1 -0
  22. package/dist/cjs/lib/parser-builder/builderTypes.js +2 -15
  23. package/dist/cjs/lib/parser-builder/builderTypes.js.map +1 -0
  24. package/dist/cjs/lib/parser-builder/dynamicParser.js +116 -136
  25. package/dist/cjs/lib/parser-builder/dynamicParser.js.map +1 -0
  26. package/dist/cjs/lib/parser-builder/parserBuilder.js +167 -169
  27. package/dist/cjs/lib/parser-builder/parserBuilder.js.map +1 -0
  28. package/dist/cjs/lib/parser-builder/ruleDefTypes.js +2 -15
  29. package/dist/cjs/lib/parser-builder/ruleDefTypes.js.map +1 -0
  30. package/dist/cjs/lib/transformers/TransformerObject.js +196 -198
  31. package/dist/cjs/lib/transformers/TransformerObject.js.map +1 -0
  32. package/dist/cjs/lib/transformers/TransformerSubTyped.js +110 -141
  33. package/dist/cjs/lib/transformers/TransformerSubTyped.js.map +1 -0
  34. package/dist/cjs/lib/transformers/TransformerTyped.js +87 -120
  35. package/dist/cjs/lib/transformers/TransformerTyped.js.map +1 -0
  36. package/dist/cjs/lib/types.js +2 -15
  37. package/dist/cjs/lib/types.js.map +1 -0
  38. package/dist/cjs/lib/utils.js +20 -34
  39. package/dist/cjs/lib/utils.js.map +1 -0
  40. package/dist/esm/lib/AstCoreFactory.d.ts +19 -7
  41. package/dist/esm/lib/AstCoreFactory.js +50 -5
  42. package/dist/esm/lib/AstCoreFactory.js.map +1 -1
  43. package/dist/esm/lib/generator-builder/dynamicGenerator.d.ts +5 -0
  44. package/dist/esm/lib/generator-builder/dynamicGenerator.js +20 -0
  45. package/dist/esm/lib/generator-builder/dynamicGenerator.js.map +1 -1
  46. package/dist/esm/lib/parser-builder/dynamicParser.js +1 -0
  47. package/dist/esm/lib/parser-builder/dynamicParser.js.map +1 -1
  48. package/dist/esm/lib/parser-builder/parserBuilder.js +2 -2
  49. package/dist/esm/lib/parser-builder/parserBuilder.js.map +1 -1
  50. package/dist/esm/lib/transformers/TransformerObject.d.ts +1 -1
  51. package/dist/esm/lib/transformers/TransformerObject.js.map +1 -1
  52. package/dist/esm/lib/transformers/TransformerSubTyped.d.ts +31 -22
  53. package/dist/esm/lib/transformers/TransformerSubTyped.js +30 -40
  54. package/dist/esm/lib/transformers/TransformerSubTyped.js.map +1 -1
  55. package/dist/esm/lib/transformers/TransformerTyped.d.ts +24 -20
  56. package/dist/esm/lib/transformers/TransformerTyped.js +23 -35
  57. package/dist/esm/lib/transformers/TransformerTyped.js.map +1 -1
  58. package/dist/esm/lib/types.d.ts +67 -5
  59. package/dist/esm/lib/types.js.map +1 -1
  60. package/dist/esm/lib/utils.d.ts +10 -0
  61. package/dist/esm/lib/utils.js +7 -0
  62. package/dist/esm/lib/utils.js.map +1 -1
  63. package/package.json +9 -9
  64. package/dist/cjs/test/generatorBuilder/generatorBuilder.types.test.js +0 -30
  65. package/dist/cjs/test/grammar-builder/parserBuilder.types.test.js +0 -27
  66. package/dist/cjs/test/transformer.test.js +0 -82
  67. package/dist/esm/test/generatorBuilder/generatorBuilder.types.test.d.ts +0 -1
  68. package/dist/esm/test/generatorBuilder/generatorBuilder.types.test.js +0 -38
  69. package/dist/esm/test/generatorBuilder/generatorBuilder.types.test.js.map +0 -1
  70. package/dist/esm/test/grammar-builder/parserBuilder.types.test.d.ts +0 -1
  71. package/dist/esm/test/grammar-builder/parserBuilder.types.test.js +0 -38
  72. package/dist/esm/test/grammar-builder/parserBuilder.types.test.js.map +0 -1
  73. package/dist/esm/test/transformer.test.d.ts +0 -1
  74. package/dist/esm/test/transformer.test.js +0 -82
  75. package/dist/esm/test/transformer.test.js.map +0 -1
@@ -1,139 +1,119 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var dynamicParser_exports = {};
20
- __export(dynamicParser_exports, {
21
- DynamicParser: () => DynamicParser
22
- });
23
- module.exports = __toCommonJS(dynamicParser_exports);
24
- var import_chevrotain = require("@traqula/chevrotain");
25
- class DynamicParser extends import_chevrotain.EmbeddedActionsParser {
26
- context;
27
- setContext(context) {
28
- this.context = context;
29
- }
30
- constructor(rules, tokenVocabulary, config = {}) {
31
- super(tokenVocabulary, {
32
- // RecoveryEnabled: true,
33
- maxLookahead: 1,
34
- skipValidations: true,
35
- ...config
36
- });
37
- this.context = void 0;
38
- const selfRef = this.constructSelfRef();
39
- const implArgs = {
40
- ...selfRef,
41
- cache: /* @__PURE__ */ new WeakMap()
42
- };
43
- for (const rule of Object.values(rules)) {
44
- this[rule.name] = this.RULE(rule.name, rule.impl(implArgs));
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DynamicParser = void 0;
4
+ const chevrotain_1 = require("@traqula/chevrotain");
5
+ class DynamicParser extends chevrotain_1.EmbeddedActionsParser {
6
+ context;
7
+ setContext(context) {
8
+ this.context = context;
9
+ }
10
+ constructor(rules, tokenVocabulary, config = {}) {
11
+ super(tokenVocabulary, {
12
+ // RecoveryEnabled: true,
13
+ maxLookahead: 1,
14
+ skipValidations: true,
15
+ dynamicTokensEnabled: false,
16
+ ...config,
17
+ });
18
+ this.context = undefined;
19
+ const selfRef = this.constructSelfRef();
20
+ const implArgs = {
21
+ ...selfRef,
22
+ cache: new WeakMap(),
23
+ };
24
+ for (const rule of Object.values(rules)) {
25
+ // Function implementation itself - this function is called AFTER lexing
26
+ this[rule.name] = this.RULE(rule.name, rule.impl(implArgs));
27
+ }
28
+ this.performSelfAnalysis();
29
+ }
30
+ constructSelfRef() {
31
+ const subRuleImpl = (chevrotainSubrule) => ((cstDef, ...arg) => chevrotainSubrule(this[cstDef.name], { ARGS: [this.context, ...arg] }));
32
+ return {
33
+ CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),
34
+ CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),
35
+ CONSUME2: (tokenType, option) => this.CONSUME2(tokenType, option),
36
+ CONSUME3: (tokenType, option) => this.CONSUME3(tokenType, option),
37
+ CONSUME4: (tokenType, option) => this.CONSUME4(tokenType, option),
38
+ CONSUME5: (tokenType, option) => this.CONSUME5(tokenType, option),
39
+ CONSUME6: (tokenType, option) => this.CONSUME6(tokenType, option),
40
+ CONSUME7: (tokenType, option) => this.CONSUME7(tokenType, option),
41
+ CONSUME8: (tokenType, option) => this.CONSUME8(tokenType, option),
42
+ CONSUME9: (tokenType, option) => this.CONSUME9(tokenType, option),
43
+ OPTION: actionORMethodDef => this.OPTION(actionORMethodDef),
44
+ OPTION1: actionORMethodDef => this.OPTION1(actionORMethodDef),
45
+ OPTION2: actionORMethodDef => this.OPTION2(actionORMethodDef),
46
+ OPTION3: actionORMethodDef => this.OPTION3(actionORMethodDef),
47
+ OPTION4: actionORMethodDef => this.OPTION4(actionORMethodDef),
48
+ OPTION5: actionORMethodDef => this.OPTION5(actionORMethodDef),
49
+ OPTION6: actionORMethodDef => this.OPTION6(actionORMethodDef),
50
+ OPTION7: actionORMethodDef => this.OPTION7(actionORMethodDef),
51
+ OPTION8: actionORMethodDef => this.OPTION8(actionORMethodDef),
52
+ OPTION9: actionORMethodDef => this.OPTION9(actionORMethodDef),
53
+ OR: altsOrOpts => this.OR(altsOrOpts),
54
+ OR1: altsOrOpts => this.OR1(altsOrOpts),
55
+ OR2: altsOrOpts => this.OR2(altsOrOpts),
56
+ OR3: altsOrOpts => this.OR3(altsOrOpts),
57
+ OR4: altsOrOpts => this.OR4(altsOrOpts),
58
+ OR5: altsOrOpts => this.OR5(altsOrOpts),
59
+ OR6: altsOrOpts => this.OR6(altsOrOpts),
60
+ OR7: altsOrOpts => this.OR7(altsOrOpts),
61
+ OR8: altsOrOpts => this.OR8(altsOrOpts),
62
+ OR9: altsOrOpts => this.OR9(altsOrOpts),
63
+ MANY: actionORMethodDef => this.MANY(actionORMethodDef),
64
+ MANY1: actionORMethodDef => this.MANY1(actionORMethodDef),
65
+ MANY2: actionORMethodDef => this.MANY2(actionORMethodDef),
66
+ MANY3: actionORMethodDef => this.MANY3(actionORMethodDef),
67
+ MANY4: actionORMethodDef => this.MANY4(actionORMethodDef),
68
+ MANY5: actionORMethodDef => this.MANY5(actionORMethodDef),
69
+ MANY6: actionORMethodDef => this.MANY6(actionORMethodDef),
70
+ MANY7: actionORMethodDef => this.MANY7(actionORMethodDef),
71
+ MANY8: actionORMethodDef => this.MANY8(actionORMethodDef),
72
+ MANY9: actionORMethodDef => this.MANY9(actionORMethodDef),
73
+ MANY_SEP: options => this.MANY_SEP(options),
74
+ MANY_SEP1: options => this.MANY_SEP1(options),
75
+ MANY_SEP2: options => this.MANY_SEP2(options),
76
+ MANY_SEP3: options => this.MANY_SEP3(options),
77
+ MANY_SEP4: options => this.MANY_SEP4(options),
78
+ MANY_SEP5: options => this.MANY_SEP5(options),
79
+ MANY_SEP6: options => this.MANY_SEP6(options),
80
+ MANY_SEP7: options => this.MANY_SEP7(options),
81
+ MANY_SEP8: options => this.MANY_SEP8(options),
82
+ MANY_SEP9: options => this.MANY_SEP9(options),
83
+ AT_LEAST_ONE: actionORMethodDef => this.AT_LEAST_ONE(actionORMethodDef),
84
+ AT_LEAST_ONE1: actionORMethodDef => this.AT_LEAST_ONE1(actionORMethodDef),
85
+ AT_LEAST_ONE2: actionORMethodDef => this.AT_LEAST_ONE2(actionORMethodDef),
86
+ AT_LEAST_ONE3: actionORMethodDef => this.AT_LEAST_ONE3(actionORMethodDef),
87
+ AT_LEAST_ONE4: actionORMethodDef => this.AT_LEAST_ONE4(actionORMethodDef),
88
+ AT_LEAST_ONE5: actionORMethodDef => this.AT_LEAST_ONE5(actionORMethodDef),
89
+ AT_LEAST_ONE6: actionORMethodDef => this.AT_LEAST_ONE6(actionORMethodDef),
90
+ AT_LEAST_ONE7: actionORMethodDef => this.AT_LEAST_ONE7(actionORMethodDef),
91
+ AT_LEAST_ONE8: actionORMethodDef => this.AT_LEAST_ONE8(actionORMethodDef),
92
+ AT_LEAST_ONE9: actionORMethodDef => this.AT_LEAST_ONE9(actionORMethodDef),
93
+ AT_LEAST_ONE_SEP: options => this.AT_LEAST_ONE_SEP(options),
94
+ AT_LEAST_ONE_SEP1: options => this.AT_LEAST_ONE_SEP1(options),
95
+ AT_LEAST_ONE_SEP2: options => this.AT_LEAST_ONE_SEP2(options),
96
+ AT_LEAST_ONE_SEP3: options => this.AT_LEAST_ONE_SEP3(options),
97
+ AT_LEAST_ONE_SEP4: options => this.AT_LEAST_ONE_SEP4(options),
98
+ AT_LEAST_ONE_SEP5: options => this.AT_LEAST_ONE_SEP5(options),
99
+ AT_LEAST_ONE_SEP6: options => this.AT_LEAST_ONE_SEP6(options),
100
+ AT_LEAST_ONE_SEP7: options => this.AT_LEAST_ONE_SEP7(options),
101
+ AT_LEAST_ONE_SEP8: options => this.AT_LEAST_ONE_SEP8(options),
102
+ AT_LEAST_ONE_SEP9: options => this.AT_LEAST_ONE_SEP9(options),
103
+ ACTION: func => this.ACTION(func),
104
+ BACKTRACK: (cstDef, ...args) => this.BACKTRACK(this[cstDef.name], { ARGS: args }),
105
+ SUBRULE: subRuleImpl((rule, args) => this.SUBRULE(rule, args)),
106
+ SUBRULE1: subRuleImpl((rule, args) => this.SUBRULE1(rule, args)),
107
+ SUBRULE2: subRuleImpl((rule, args) => this.SUBRULE2(rule, args)),
108
+ SUBRULE3: subRuleImpl((rule, args) => this.SUBRULE3(rule, args)),
109
+ SUBRULE4: subRuleImpl((rule, args) => this.SUBRULE4(rule, args)),
110
+ SUBRULE5: subRuleImpl((rule, args) => this.SUBRULE5(rule, args)),
111
+ SUBRULE6: subRuleImpl((rule, args) => this.SUBRULE6(rule, args)),
112
+ SUBRULE7: subRuleImpl((rule, args) => this.SUBRULE7(rule, args)),
113
+ SUBRULE8: subRuleImpl((rule, args) => this.SUBRULE8(rule, args)),
114
+ SUBRULE9: subRuleImpl((rule, args) => this.SUBRULE9(rule, args)),
115
+ };
45
116
  }
46
- this.performSelfAnalysis();
47
- }
48
- constructSelfRef() {
49
- const subRuleImpl = (chevrotainSubrule) => ((cstDef, ...arg) => chevrotainSubrule(this[cstDef.name], { ARGS: [this.context, ...arg] }));
50
- return {
51
- CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),
52
- CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),
53
- CONSUME2: (tokenType, option) => this.CONSUME2(tokenType, option),
54
- CONSUME3: (tokenType, option) => this.CONSUME3(tokenType, option),
55
- CONSUME4: (tokenType, option) => this.CONSUME4(tokenType, option),
56
- CONSUME5: (tokenType, option) => this.CONSUME5(tokenType, option),
57
- CONSUME6: (tokenType, option) => this.CONSUME6(tokenType, option),
58
- CONSUME7: (tokenType, option) => this.CONSUME7(tokenType, option),
59
- CONSUME8: (tokenType, option) => this.CONSUME8(tokenType, option),
60
- CONSUME9: (tokenType, option) => this.CONSUME9(tokenType, option),
61
- OPTION: (actionORMethodDef) => this.OPTION(actionORMethodDef),
62
- OPTION1: (actionORMethodDef) => this.OPTION1(actionORMethodDef),
63
- OPTION2: (actionORMethodDef) => this.OPTION2(actionORMethodDef),
64
- OPTION3: (actionORMethodDef) => this.OPTION3(actionORMethodDef),
65
- OPTION4: (actionORMethodDef) => this.OPTION4(actionORMethodDef),
66
- OPTION5: (actionORMethodDef) => this.OPTION5(actionORMethodDef),
67
- OPTION6: (actionORMethodDef) => this.OPTION6(actionORMethodDef),
68
- OPTION7: (actionORMethodDef) => this.OPTION7(actionORMethodDef),
69
- OPTION8: (actionORMethodDef) => this.OPTION8(actionORMethodDef),
70
- OPTION9: (actionORMethodDef) => this.OPTION9(actionORMethodDef),
71
- OR: (altsOrOpts) => this.OR(altsOrOpts),
72
- OR1: (altsOrOpts) => this.OR1(altsOrOpts),
73
- OR2: (altsOrOpts) => this.OR2(altsOrOpts),
74
- OR3: (altsOrOpts) => this.OR3(altsOrOpts),
75
- OR4: (altsOrOpts) => this.OR4(altsOrOpts),
76
- OR5: (altsOrOpts) => this.OR5(altsOrOpts),
77
- OR6: (altsOrOpts) => this.OR6(altsOrOpts),
78
- OR7: (altsOrOpts) => this.OR7(altsOrOpts),
79
- OR8: (altsOrOpts) => this.OR8(altsOrOpts),
80
- OR9: (altsOrOpts) => this.OR9(altsOrOpts),
81
- MANY: (actionORMethodDef) => this.MANY(actionORMethodDef),
82
- MANY1: (actionORMethodDef) => this.MANY1(actionORMethodDef),
83
- MANY2: (actionORMethodDef) => this.MANY2(actionORMethodDef),
84
- MANY3: (actionORMethodDef) => this.MANY3(actionORMethodDef),
85
- MANY4: (actionORMethodDef) => this.MANY4(actionORMethodDef),
86
- MANY5: (actionORMethodDef) => this.MANY5(actionORMethodDef),
87
- MANY6: (actionORMethodDef) => this.MANY6(actionORMethodDef),
88
- MANY7: (actionORMethodDef) => this.MANY7(actionORMethodDef),
89
- MANY8: (actionORMethodDef) => this.MANY8(actionORMethodDef),
90
- MANY9: (actionORMethodDef) => this.MANY9(actionORMethodDef),
91
- MANY_SEP: (options) => this.MANY_SEP(options),
92
- MANY_SEP1: (options) => this.MANY_SEP1(options),
93
- MANY_SEP2: (options) => this.MANY_SEP2(options),
94
- MANY_SEP3: (options) => this.MANY_SEP3(options),
95
- MANY_SEP4: (options) => this.MANY_SEP4(options),
96
- MANY_SEP5: (options) => this.MANY_SEP5(options),
97
- MANY_SEP6: (options) => this.MANY_SEP6(options),
98
- MANY_SEP7: (options) => this.MANY_SEP7(options),
99
- MANY_SEP8: (options) => this.MANY_SEP8(options),
100
- MANY_SEP9: (options) => this.MANY_SEP9(options),
101
- AT_LEAST_ONE: (actionORMethodDef) => this.AT_LEAST_ONE(actionORMethodDef),
102
- AT_LEAST_ONE1: (actionORMethodDef) => this.AT_LEAST_ONE1(actionORMethodDef),
103
- AT_LEAST_ONE2: (actionORMethodDef) => this.AT_LEAST_ONE2(actionORMethodDef),
104
- AT_LEAST_ONE3: (actionORMethodDef) => this.AT_LEAST_ONE3(actionORMethodDef),
105
- AT_LEAST_ONE4: (actionORMethodDef) => this.AT_LEAST_ONE4(actionORMethodDef),
106
- AT_LEAST_ONE5: (actionORMethodDef) => this.AT_LEAST_ONE5(actionORMethodDef),
107
- AT_LEAST_ONE6: (actionORMethodDef) => this.AT_LEAST_ONE6(actionORMethodDef),
108
- AT_LEAST_ONE7: (actionORMethodDef) => this.AT_LEAST_ONE7(actionORMethodDef),
109
- AT_LEAST_ONE8: (actionORMethodDef) => this.AT_LEAST_ONE8(actionORMethodDef),
110
- AT_LEAST_ONE9: (actionORMethodDef) => this.AT_LEAST_ONE9(actionORMethodDef),
111
- AT_LEAST_ONE_SEP: (options) => this.AT_LEAST_ONE_SEP(options),
112
- AT_LEAST_ONE_SEP1: (options) => this.AT_LEAST_ONE_SEP1(options),
113
- AT_LEAST_ONE_SEP2: (options) => this.AT_LEAST_ONE_SEP2(options),
114
- AT_LEAST_ONE_SEP3: (options) => this.AT_LEAST_ONE_SEP3(options),
115
- AT_LEAST_ONE_SEP4: (options) => this.AT_LEAST_ONE_SEP4(options),
116
- AT_LEAST_ONE_SEP5: (options) => this.AT_LEAST_ONE_SEP5(options),
117
- AT_LEAST_ONE_SEP6: (options) => this.AT_LEAST_ONE_SEP6(options),
118
- AT_LEAST_ONE_SEP7: (options) => this.AT_LEAST_ONE_SEP7(options),
119
- AT_LEAST_ONE_SEP8: (options) => this.AT_LEAST_ONE_SEP8(options),
120
- AT_LEAST_ONE_SEP9: (options) => this.AT_LEAST_ONE_SEP9(options),
121
- ACTION: (func) => this.ACTION(func),
122
- BACKTRACK: (cstDef, ...args) => this.BACKTRACK(this[cstDef.name], { ARGS: args }),
123
- SUBRULE: subRuleImpl((rule, args) => this.SUBRULE(rule, args)),
124
- SUBRULE1: subRuleImpl((rule, args) => this.SUBRULE1(rule, args)),
125
- SUBRULE2: subRuleImpl((rule, args) => this.SUBRULE2(rule, args)),
126
- SUBRULE3: subRuleImpl((rule, args) => this.SUBRULE3(rule, args)),
127
- SUBRULE4: subRuleImpl((rule, args) => this.SUBRULE4(rule, args)),
128
- SUBRULE5: subRuleImpl((rule, args) => this.SUBRULE5(rule, args)),
129
- SUBRULE6: subRuleImpl((rule, args) => this.SUBRULE6(rule, args)),
130
- SUBRULE7: subRuleImpl((rule, args) => this.SUBRULE7(rule, args)),
131
- SUBRULE8: subRuleImpl((rule, args) => this.SUBRULE8(rule, args)),
132
- SUBRULE9: subRuleImpl((rule, args) => this.SUBRULE9(rule, args))
133
- };
134
- }
135
117
  }
136
- // Annotate the CommonJS export names for ESM import in node:
137
- 0 && (module.exports = {
138
- DynamicParser
139
- });
118
+ exports.DynamicParser = DynamicParser;
119
+ //# sourceMappingURL=dynamicParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamicParser.js","sourceRoot":"","sources":["../../../../lib/parser-builder/dynamicParser.ts"],"names":[],"mappings":"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","sourcesContent":["import { EmbeddedActionsParser } from '@traqula/chevrotain';\nimport type { IParserConfig, TokenVocabulary } from '@traqula/chevrotain';\nimport type { ParseRuleMap } from './builderTypes.js';\nimport type { CstDef, ImplArgs, ParserRule } from './ruleDefTypes.js';\n\nexport class DynamicParser<Context, Names extends string, RuleDefs extends ParseRuleMap<Names>>\n extends EmbeddedActionsParser {\n private context: Context | undefined;\n\n public setContext(context: Context): void {\n this.context = context;\n }\n\n public constructor(rules: RuleDefs, tokenVocabulary: TokenVocabulary, config: IParserConfig = {}) {\n super(tokenVocabulary, {\n // RecoveryEnabled: true,\n maxLookahead: 1,\n skipValidations: true,\n dynamicTokensEnabled: false,\n ...config,\n });\n this.context = undefined;\n const selfRef = this.constructSelfRef();\n const implArgs: ImplArgs = {\n ...selfRef,\n cache: new WeakMap(),\n };\n\n for (const rule of Object.values(<Record<string, ParserRule<Context>>>rules)) {\n // Function implementation itself - this function is called AFTER lexing\n this[<keyof (typeof this)>rule.name] = <any> this.RULE(rule.name, rule.impl(implArgs));\n }\n this.performSelfAnalysis();\n }\n\n private constructSelfRef(): CstDef {\n const subRuleImpl = (chevrotainSubrule: typeof this.SUBRULE): CstDef['SUBRULE'] =>\n ((cstDef, ...arg) =>\n chevrotainSubrule(<any> this[<keyof (typeof this)>cstDef.name], <any>{ ARGS: [ this.context, ...arg ]})\n ) satisfies CstDef['SUBRULE'];\n return {\n CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),\n CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),\n CONSUME2: (tokenType, option) => this.CONSUME2(tokenType, option),\n CONSUME3: (tokenType, option) => this.CONSUME3(tokenType, option),\n CONSUME4: (tokenType, option) => this.CONSUME4(tokenType, option),\n CONSUME5: (tokenType, option) => this.CONSUME5(tokenType, option),\n CONSUME6: (tokenType, option) => this.CONSUME6(tokenType, option),\n CONSUME7: (tokenType, option) => this.CONSUME7(tokenType, option),\n CONSUME8: (tokenType, option) => this.CONSUME8(tokenType, option),\n CONSUME9: (tokenType, option) => this.CONSUME9(tokenType, option),\n OPTION: actionORMethodDef => this.OPTION(actionORMethodDef),\n OPTION1: actionORMethodDef => this.OPTION1(actionORMethodDef),\n OPTION2: actionORMethodDef => this.OPTION2(actionORMethodDef),\n OPTION3: actionORMethodDef => this.OPTION3(actionORMethodDef),\n OPTION4: actionORMethodDef => this.OPTION4(actionORMethodDef),\n OPTION5: actionORMethodDef => this.OPTION5(actionORMethodDef),\n OPTION6: actionORMethodDef => this.OPTION6(actionORMethodDef),\n OPTION7: actionORMethodDef => this.OPTION7(actionORMethodDef),\n OPTION8: actionORMethodDef => this.OPTION8(actionORMethodDef),\n OPTION9: actionORMethodDef => this.OPTION9(actionORMethodDef),\n OR: altsOrOpts => this.OR(altsOrOpts),\n OR1: altsOrOpts => this.OR1(altsOrOpts),\n OR2: altsOrOpts => this.OR2(altsOrOpts),\n OR3: altsOrOpts => this.OR3(altsOrOpts),\n OR4: altsOrOpts => this.OR4(altsOrOpts),\n OR5: altsOrOpts => this.OR5(altsOrOpts),\n OR6: altsOrOpts => this.OR6(altsOrOpts),\n OR7: altsOrOpts => this.OR7(altsOrOpts),\n OR8: altsOrOpts => this.OR8(altsOrOpts),\n OR9: altsOrOpts => this.OR9(altsOrOpts),\n MANY: actionORMethodDef => this.MANY(actionORMethodDef),\n MANY1: actionORMethodDef => this.MANY1(actionORMethodDef),\n MANY2: actionORMethodDef => this.MANY2(actionORMethodDef),\n MANY3: actionORMethodDef => this.MANY3(actionORMethodDef),\n MANY4: actionORMethodDef => this.MANY4(actionORMethodDef),\n MANY5: actionORMethodDef => this.MANY5(actionORMethodDef),\n MANY6: actionORMethodDef => this.MANY6(actionORMethodDef),\n MANY7: actionORMethodDef => this.MANY7(actionORMethodDef),\n MANY8: actionORMethodDef => this.MANY8(actionORMethodDef),\n MANY9: actionORMethodDef => this.MANY9(actionORMethodDef),\n MANY_SEP: options => this.MANY_SEP(options),\n MANY_SEP1: options => this.MANY_SEP1(options),\n MANY_SEP2: options => this.MANY_SEP2(options),\n MANY_SEP3: options => this.MANY_SEP3(options),\n MANY_SEP4: options => this.MANY_SEP4(options),\n MANY_SEP5: options => this.MANY_SEP5(options),\n MANY_SEP6: options => this.MANY_SEP6(options),\n MANY_SEP7: options => this.MANY_SEP7(options),\n MANY_SEP8: options => this.MANY_SEP8(options),\n MANY_SEP9: options => this.MANY_SEP9(options),\n AT_LEAST_ONE: actionORMethodDef => this.AT_LEAST_ONE(actionORMethodDef),\n AT_LEAST_ONE1: actionORMethodDef => this.AT_LEAST_ONE1(actionORMethodDef),\n AT_LEAST_ONE2: actionORMethodDef => this.AT_LEAST_ONE2(actionORMethodDef),\n AT_LEAST_ONE3: actionORMethodDef => this.AT_LEAST_ONE3(actionORMethodDef),\n AT_LEAST_ONE4: actionORMethodDef => this.AT_LEAST_ONE4(actionORMethodDef),\n AT_LEAST_ONE5: actionORMethodDef => this.AT_LEAST_ONE5(actionORMethodDef),\n AT_LEAST_ONE6: actionORMethodDef => this.AT_LEAST_ONE6(actionORMethodDef),\n AT_LEAST_ONE7: actionORMethodDef => this.AT_LEAST_ONE7(actionORMethodDef),\n AT_LEAST_ONE8: actionORMethodDef => this.AT_LEAST_ONE8(actionORMethodDef),\n AT_LEAST_ONE9: actionORMethodDef => this.AT_LEAST_ONE9(actionORMethodDef),\n AT_LEAST_ONE_SEP: options => this.AT_LEAST_ONE_SEP(options),\n AT_LEAST_ONE_SEP1: options => this.AT_LEAST_ONE_SEP1(options),\n AT_LEAST_ONE_SEP2: options => this.AT_LEAST_ONE_SEP2(options),\n AT_LEAST_ONE_SEP3: options => this.AT_LEAST_ONE_SEP3(options),\n AT_LEAST_ONE_SEP4: options => this.AT_LEAST_ONE_SEP4(options),\n AT_LEAST_ONE_SEP5: options => this.AT_LEAST_ONE_SEP5(options),\n AT_LEAST_ONE_SEP6: options => this.AT_LEAST_ONE_SEP6(options),\n AT_LEAST_ONE_SEP7: options => this.AT_LEAST_ONE_SEP7(options),\n AT_LEAST_ONE_SEP8: options => this.AT_LEAST_ONE_SEP8(options),\n AT_LEAST_ONE_SEP9: options => this.AT_LEAST_ONE_SEP9(options),\n ACTION: func => this.ACTION(func),\n BACKTRACK: (cstDef, ...args) =>\n this.BACKTRACK(<any> this[<keyof (typeof this)>cstDef.name], <any>{ ARGS: args }),\n SUBRULE: subRuleImpl((rule, args) => this.SUBRULE(rule, args)),\n SUBRULE1: subRuleImpl((rule, args) => this.SUBRULE1(rule, args)),\n SUBRULE2: subRuleImpl((rule, args) => this.SUBRULE2(rule, args)),\n SUBRULE3: subRuleImpl((rule, args) => this.SUBRULE3(rule, args)),\n SUBRULE4: subRuleImpl((rule, args) => this.SUBRULE4(rule, args)),\n SUBRULE5: subRuleImpl((rule, args) => this.SUBRULE5(rule, args)),\n SUBRULE6: subRuleImpl((rule, args) => this.SUBRULE6(rule, args)),\n SUBRULE7: subRuleImpl((rule, args) => this.SUBRULE7(rule, args)),\n SUBRULE8: subRuleImpl((rule, args) => this.SUBRULE8(rule, args)),\n SUBRULE9: subRuleImpl((rule, args) => this.SUBRULE9(rule, args)),\n };\n }\n}\n"]}
@@ -1,182 +1,180 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var parserBuilder_exports = {};
20
- __export(parserBuilder_exports, {
21
- ParserBuilder: () => ParserBuilder
22
- });
23
- module.exports = __toCommonJS(parserBuilder_exports);
24
- var import_LexerBuilder = require("../lexer-builder/LexerBuilder.js");
25
- var import_dynamicParser = require("./dynamicParser.js");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParserBuilder = void 0;
4
+ const LexerBuilder_js_1 = require("../lexer-builder/LexerBuilder.js");
5
+ const dynamicParser_js_1 = require("./dynamicParser.js");
6
+ /**
7
+ * Converts a list of ruledefs to a record mapping a name to the corresponding ruledef.
8
+ */
26
9
  function listToRuleDefMap(rules) {
27
- const newRules = {};
28
- for (const rule of rules) {
29
- newRules[rule.name] = rule;
30
- }
31
- return newRules;
10
+ const newRules = {};
11
+ for (const rule of rules) {
12
+ newRules[rule.name] = rule;
13
+ }
14
+ return newRules;
32
15
  }
16
+ /**
17
+ * The grammar builder. This is the core of traqula (besides using the amazing chevrotain framework).
18
+ * Using the builder you can create a grammar + AST creator.
19
+ * At any point in time, a parser can be constructed from the added rules.
20
+ * Constructing a parser will cause a validation which will validate the correctness of the grammar.
21
+ */
22
+ // This code is wild so other code can be simple.
33
23
  class ParserBuilder {
34
- /**
35
- * Create a builder from some initial grammar rules or an existing builder.
36
- * If a builder is provided, a new copy will be created.
37
- */
38
- static create(start) {
39
- if (Array.isArray(start)) {
40
- return new ParserBuilder(listToRuleDefMap(start));
24
+ /**
25
+ * Create a builder from some initial grammar rules or an existing builder.
26
+ * If a builder is provided, a new copy will be created.
27
+ */
28
+ static create(start) {
29
+ if (Array.isArray(start)) {
30
+ return new ParserBuilder(listToRuleDefMap(start));
31
+ }
32
+ return new ParserBuilder({ ...start.rules });
33
+ }
34
+ rules;
35
+ constructor(startRules) {
36
+ this.rules = startRules;
37
+ }
38
+ widenContext() {
39
+ return this;
41
40
  }
42
- return new ParserBuilder({ ...start.rules });
43
- }
44
- rules;
45
- constructor(startRules) {
46
- this.rules = startRules;
47
- }
48
- widenContext() {
49
- return this;
50
- }
51
- typePatch() {
52
- return this;
53
- }
54
- /**
55
- * Change the implementation of an existing grammar rule.
56
- */
57
- patchRule(patch) {
58
- const self = this;
59
- self.rules[patch.name] = patch;
60
- return self;
61
- }
62
- /**
63
- * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
64
- */
65
- addRuleRedundant(rule) {
66
- const self = this;
67
- const rules = self.rules;
68
- if (rules[rule.name] !== void 0 && rules[rule.name] !== rule) {
69
- throw new Error(`Rule ${rule.name} already exists in the builder`);
41
+ typePatch() {
42
+ return this;
70
43
  }
71
- rules[rule.name] = rule;
72
- return self;
73
- }
74
- /**
75
- * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
76
- */
77
- addRule(rule) {
78
- return this.addRuleRedundant(rule);
79
- }
80
- addMany(...rules) {
81
- this.rules = { ...this.rules, ...listToRuleDefMap(rules) };
82
- return this;
83
- }
84
- /**
85
- * Delete a grammar rule by its name.
86
- */
87
- deleteRule(ruleName) {
88
- delete this.rules[ruleName];
89
- return this;
90
- }
91
- getRule(ruleName) {
92
- return this.rules[ruleName];
93
- }
94
- /**
95
- * Merge this grammar builder with another.
96
- * It is best to merge the bigger grammar with the smaller one.
97
- * If the two builders both have a grammar rule with the same name,
98
- * no error will be thrown case they map to the same ruledef object.
99
- * If they map to a different object, an error will be thrown.
100
- * To fix this problem, the overridingRules array should contain a rule with the same conflicting name,
101
- * this rule implementation will be used.
102
- */
103
- merge(builder, overridingRules) {
104
- const otherRules = { ...builder.rules };
105
- const myRules = this.rules;
106
- for (const rule of Object.values(myRules)) {
107
- if (otherRules[rule.name] === void 0) {
108
- otherRules[rule.name] = rule;
109
- } else {
110
- const existingRule = otherRules[rule.name];
111
- if (existingRule !== rule) {
112
- const override = overridingRules.find((x) => x.name === rule.name);
113
- if (override) {
114
- otherRules[rule.name] = override;
115
- } else {
116
- throw new Error(`Rule with name "${rule.name}" already exists in the builder, specify an override to resolve conflict`);
117
- }
44
+ /**
45
+ * Change the implementation of an existing grammar rule.
46
+ */
47
+ patchRule(patch) {
48
+ const self = this;
49
+ self.rules[patch.name] = patch;
50
+ return self;
51
+ }
52
+ /**
53
+ * Add a rule to the grammar. If the rule already exists, but the implementation differs, an error will be thrown.
54
+ */
55
+ addRuleRedundant(rule) {
56
+ const self = this;
57
+ const rules = self.rules;
58
+ if (rules[rule.name] !== undefined && rules[rule.name] !== rule) {
59
+ throw new Error(`Rule ${rule.name} already exists in the builder`);
118
60
  }
119
- }
61
+ rules[rule.name] = rule;
62
+ return self;
63
+ }
64
+ /**
65
+ * Add a rule to the grammar. Will raise a typescript error if the rule already exists in the grammar.
66
+ */
67
+ addRule(rule) {
68
+ return this.addRuleRedundant(rule);
69
+ }
70
+ addMany(...rules) {
71
+ this.rules = { ...this.rules, ...listToRuleDefMap(rules) };
72
+ return this;
120
73
  }
121
- this.rules = otherRules;
122
- return this;
123
- }
124
- defaultErrorHandler(input, errors) {
125
- const firstError = errors[0];
126
- const messageBuilder = ["Parse error"];
127
- const lineIdx = firstError.token.startLine;
128
- if (lineIdx !== void 0 && !Number.isNaN(lineIdx)) {
129
- const errorLine = input.split("\n")[lineIdx - 1];
130
- messageBuilder.push(` on line ${lineIdx}
74
+ /**
75
+ * Delete a grammar rule by its name.
76
+ */
77
+ deleteRule(ruleName) {
78
+ delete this.rules[ruleName];
79
+ return this;
80
+ }
81
+ getRule(ruleName) {
82
+ return this.rules[ruleName];
83
+ }
84
+ /**
85
+ * Merge this grammar builder with another.
86
+ * It is best to merge the bigger grammar with the smaller one.
87
+ * If the two builders both have a grammar rule with the same name,
88
+ * no error will be thrown case they map to the same ruledef object.
89
+ * If they map to a different object, an error will be thrown.
90
+ * To fix this problem, the overridingRules array should contain a rule with the same conflicting name,
91
+ * this rule implementation will be used.
92
+ */
93
+ merge(builder, overridingRules) {
94
+ // Assume the other grammar is bigger than yours. So start from that one and add this one
95
+ const otherRules = { ...builder.rules };
96
+ const myRules = this.rules;
97
+ for (const rule of Object.values(myRules)) {
98
+ if (otherRules[rule.name] === undefined) {
99
+ otherRules[rule.name] = rule;
100
+ }
101
+ else {
102
+ const existingRule = otherRules[rule.name];
103
+ // If same rule, no issue, move on. Else
104
+ if (existingRule !== rule) {
105
+ const override = overridingRules.find(x => x.name === rule.name);
106
+ // If override specified, take override, else, inform user that there is a conflict
107
+ if (override) {
108
+ otherRules[rule.name] = override;
109
+ }
110
+ else {
111
+ throw new Error(`Rule with name "${rule.name}" already exists in the builder, specify an override to resolve conflict`);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ this.rules = otherRules;
117
+ return this;
118
+ }
119
+ defaultErrorHandler(input, errors) {
120
+ const firstError = errors[0];
121
+ const messageBuilder = ['Parse error'];
122
+ const lineIdx = firstError.token.startLine;
123
+ if (lineIdx !== undefined && !Number.isNaN(lineIdx)) {
124
+ const errorLine = input.split('\n')[lineIdx - 1];
125
+ messageBuilder.push(` on line ${lineIdx}
131
126
  ${errorLine}`);
132
- const columnIdx = firstError.token.startColumn;
133
- if (columnIdx !== void 0) {
134
- messageBuilder.push(`
135
- ${"-".repeat(columnIdx - 1)}^`);
136
- }
127
+ const columnIdx = firstError.token.startColumn;
128
+ if (columnIdx !== undefined) {
129
+ messageBuilder.push(`\n${'-'.repeat(columnIdx - 1)}^`);
130
+ }
131
+ }
132
+ messageBuilder.push(`\n${firstError.message}`);
133
+ throw new Error(messageBuilder.join(''));
137
134
  }
138
- messageBuilder.push(`
139
- ${firstError.message}`);
140
- throw new Error(messageBuilder.join(""));
141
- }
142
- build({ tokenVocabulary, parserConfig = {}, lexerConfig = {}, queryPreProcessor = (s) => s, errorHandler }) {
143
- const lexer = import_LexerBuilder.LexerBuilder.create().add(...tokenVocabulary).build({
144
- positionTracking: "full",
145
- recoveryEnabled: false,
146
- ensureOptimizations: true,
147
- safeMode: false,
148
- skipValidations: true,
149
- ...lexerConfig
150
- });
151
- const parser = this.consume({
152
- tokenVocabulary,
153
- config: parserConfig
154
- });
155
- const selfSufficientParser = {};
156
- for (const rule of Object.values(this.rules)) {
157
- selfSufficientParser[rule.name] = ((input, context, ...args) => {
158
- const processedInput = queryPreProcessor(input);
159
- const lexResult = lexer.tokenize(processedInput);
160
- parser.input = lexResult.tokens;
161
- parser.setContext(context);
162
- const result = parser[rule.name](context, ...args);
163
- if (parser.errors.length > 0) {
164
- if (errorHandler) {
165
- errorHandler(parser.errors);
166
- } else {
167
- this.defaultErrorHandler(processedInput, parser.errors);
168
- }
135
+ build({ tokenVocabulary, parserConfig = {}, lexerConfig = {}, queryPreProcessor = s => s, errorHandler, }) {
136
+ const lexer = LexerBuilder_js_1.LexerBuilder.create().add(...tokenVocabulary).build({
137
+ positionTracking: 'onlyOffset',
138
+ recoveryEnabled: false,
139
+ ensureOptimizations: true,
140
+ safeMode: false,
141
+ skipValidations: true,
142
+ ...lexerConfig,
143
+ });
144
+ // Get the chevrotain parser
145
+ const parser = this.consume({
146
+ tokenVocabulary: tokenVocabulary,
147
+ config: parserConfig,
148
+ });
149
+ // Start building a parser that does not pass input using a state, but instead gets it as a function argument.
150
+ const selfSufficientParser = {};
151
+ // To do that, we need to create a wrapper for each parser rule.
152
+ // eslint-disable-next-line ts/no-unnecessary-type-assertion
153
+ for (const rule of Object.values(this.rules)) {
154
+ selfSufficientParser[rule.name] = ((input, context, ...args) => {
155
+ const processedInput = queryPreProcessor(input);
156
+ const lexResult = lexer.tokenize(processedInput);
157
+ // This also resets the parser
158
+ parser.input = lexResult.tokens;
159
+ parser.setContext(context);
160
+ const result = parser[rule.name](context, ...args);
161
+ if (parser.errors.length > 0) {
162
+ // Console.log(JSON.stringify(lexResult, null, 2));
163
+ if (errorHandler) {
164
+ errorHandler(parser.errors);
165
+ }
166
+ else {
167
+ this.defaultErrorHandler(processedInput, parser.errors);
168
+ }
169
+ }
170
+ return result;
171
+ });
169
172
  }
170
- return result;
171
- });
173
+ return selfSufficientParser;
174
+ }
175
+ consume({ tokenVocabulary, config = {} }) {
176
+ return new dynamicParser_js_1.DynamicParser(this.rules, tokenVocabulary, config);
172
177
  }
173
- return selfSufficientParser;
174
- }
175
- consume({ tokenVocabulary, config = {} }) {
176
- return new import_dynamicParser.DynamicParser(this.rules, tokenVocabulary, config);
177
- }
178
178
  }
179
- // Annotate the CommonJS export names for ESM import in node:
180
- 0 && (module.exports = {
181
- ParserBuilder
182
- });
179
+ exports.ParserBuilder = ParserBuilder;
180
+ //# sourceMappingURL=parserBuilder.js.map