@renovatebot/good-enough-parser 1.1.24 → 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.
Files changed (219) hide show
  1. package/README.md +6 -6
  2. package/dist/cjs/index.d.ts +4 -4
  3. package/dist/cjs/index.js +7 -7
  4. package/dist/cjs/lang/groovy.d.ts +6 -6
  5. package/dist/cjs/lang/groovy.js +83 -83
  6. package/dist/cjs/lang/index.d.ts +20 -20
  7. package/dist/cjs/lang/index.js +56 -56
  8. package/dist/cjs/lang/index.js.map +1 -1
  9. package/dist/cjs/lang/python.d.ts +6 -6
  10. package/dist/cjs/lang/python.js +73 -73
  11. package/dist/cjs/lang/scala.d.ts +6 -6
  12. package/dist/cjs/lang/scala.js +71 -71
  13. package/dist/cjs/lang/starlark.d.ts +6 -6
  14. package/dist/cjs/lang/starlark.js +58 -58
  15. package/dist/cjs/lang/types.d.ts +6 -6
  16. package/dist/cjs/lang/types.js +2 -2
  17. package/dist/cjs/lexer/bracket.d.ts +6 -6
  18. package/dist/cjs/lexer/bracket.js +56 -57
  19. package/dist/cjs/lexer/bracket.js.map +1 -1
  20. package/dist/cjs/lexer/comment.d.ts +3 -3
  21. package/dist/cjs/lexer/comment.js +43 -44
  22. package/dist/cjs/lexer/comment.js.map +1 -1
  23. package/dist/cjs/lexer/index.d.ts +5 -5
  24. package/dist/cjs/lexer/index.js +154 -155
  25. package/dist/cjs/lexer/index.js.map +1 -1
  26. package/dist/cjs/lexer/number.d.ts +2 -2
  27. package/dist/cjs/lexer/number.js +17 -18
  28. package/dist/cjs/lexer/number.js.map +1 -1
  29. package/dist/cjs/lexer/operator.d.ts +2 -2
  30. package/dist/cjs/lexer/operator.js +23 -24
  31. package/dist/cjs/lexer/operator.js.map +1 -1
  32. package/dist/cjs/lexer/rules.d.ts +4 -4
  33. package/dist/cjs/lexer/rules.js +74 -74
  34. package/dist/cjs/lexer/rules.js.map +1 -1
  35. package/dist/cjs/lexer/string.d.ts +2 -2
  36. package/dist/cjs/lexer/string.js +180 -181
  37. package/dist/cjs/lexer/string.js.map +1 -1
  38. package/dist/cjs/lexer/symbol.d.ts +2 -2
  39. package/dist/cjs/lexer/symbol.js +17 -18
  40. package/dist/cjs/lexer/symbol.js.map +1 -1
  41. package/dist/cjs/lexer/token.d.ts +3 -3
  42. package/dist/cjs/lexer/token.js +63 -64
  43. package/dist/cjs/lexer/token.js.map +1 -1
  44. package/dist/cjs/lexer/types.d.ts +142 -142
  45. package/dist/cjs/lexer/types.js +2 -2
  46. package/dist/cjs/parser/cursor.d.ts +2 -2
  47. package/dist/cjs/parser/cursor.js +12 -13
  48. package/dist/cjs/parser/cursor.js.map +1 -1
  49. package/dist/cjs/parser/index.d.ts +3 -3
  50. package/dist/cjs/parser/index.js +19 -19
  51. package/dist/cjs/parser/tree.d.ts +4 -4
  52. package/dist/cjs/parser/tree.js +245 -246
  53. package/dist/cjs/parser/tree.js.map +1 -1
  54. package/dist/cjs/parser/types.d.ts +33 -33
  55. package/dist/cjs/parser/types.js +2 -2
  56. package/dist/cjs/query/builder.d.ts +144 -144
  57. package/dist/cjs/query/builder.d.ts.map +1 -1
  58. package/dist/cjs/query/builder.js +333 -332
  59. package/dist/cjs/query/builder.js.map +1 -1
  60. package/dist/cjs/query/handler.d.ts +2 -2
  61. package/dist/cjs/query/handler.js +9 -10
  62. package/dist/cjs/query/handler.js.map +1 -1
  63. package/dist/cjs/query/index.d.ts +2 -2
  64. package/dist/cjs/query/index.js +32 -32
  65. package/dist/cjs/query/matchers/abstract-matcher.d.ts +9 -9
  66. package/dist/cjs/query/matchers/abstract-matcher.js +36 -36
  67. package/dist/cjs/query/matchers/abstract-matcher.js.map +1 -1
  68. package/dist/cjs/query/matchers/alt-matcher.d.ts +10 -10
  69. package/dist/cjs/query/matchers/alt-matcher.js +33 -33
  70. package/dist/cjs/query/matchers/alt-matcher.js.map +1 -1
  71. package/dist/cjs/query/matchers/anchor-matcher.d.ts +17 -17
  72. package/dist/cjs/query/matchers/anchor-matcher.js +50 -50
  73. package/dist/cjs/query/matchers/anchor-matcher.js.map +1 -1
  74. package/dist/cjs/query/matchers/comment-matcher.d.ts +10 -10
  75. package/dist/cjs/query/matchers/comment-matcher.js +39 -39
  76. package/dist/cjs/query/matchers/comment-matcher.js.map +1 -1
  77. package/dist/cjs/query/matchers/index.d.ts +6 -6
  78. package/dist/cjs/query/matchers/index.js +22 -22
  79. package/dist/cjs/query/matchers/many-matcher.d.ts +13 -13
  80. package/dist/cjs/query/matchers/many-matcher.js +61 -61
  81. package/dist/cjs/query/matchers/many-matcher.js.map +1 -1
  82. package/dist/cjs/query/matchers/num-matcher.d.ts +8 -8
  83. package/dist/cjs/query/matchers/num-matcher.js +34 -34
  84. package/dist/cjs/query/matchers/num-matcher.js.map +1 -1
  85. package/dist/cjs/query/matchers/op-matcher.d.ts +8 -8
  86. package/dist/cjs/query/matchers/op-matcher.js +34 -34
  87. package/dist/cjs/query/matchers/op-matcher.js.map +1 -1
  88. package/dist/cjs/query/matchers/seq-matcher.d.ts +14 -14
  89. package/dist/cjs/query/matchers/seq-matcher.js +76 -76
  90. package/dist/cjs/query/matchers/seq-matcher.js.map +1 -1
  91. package/dist/cjs/query/matchers/str-matcher.d.ts +38 -38
  92. package/dist/cjs/query/matchers/str-matcher.js +108 -108
  93. package/dist/cjs/query/matchers/str-matcher.js.map +1 -1
  94. package/dist/cjs/query/matchers/sym-matcher.d.ts +8 -8
  95. package/dist/cjs/query/matchers/sym-matcher.js +34 -34
  96. package/dist/cjs/query/matchers/sym-matcher.js.map +1 -1
  97. package/dist/cjs/query/matchers/tree-matcher.d.ts +23 -23
  98. package/dist/cjs/query/matchers/tree-matcher.js +121 -121
  99. package/dist/cjs/query/matchers/tree-matcher.js.map +1 -1
  100. package/dist/cjs/query/options.d.ts +10 -10
  101. package/dist/cjs/query/options.js +148 -149
  102. package/dist/cjs/query/options.js.map +1 -1
  103. package/dist/cjs/query/regex.d.ts +1 -1
  104. package/dist/cjs/query/regex.js +12 -13
  105. package/dist/cjs/query/regex.js.map +1 -1
  106. package/dist/cjs/query/types.d.ts +100 -100
  107. package/dist/cjs/query/types.d.ts.map +1 -1
  108. package/dist/cjs/query/types.js +2 -2
  109. package/dist/cjs/util/clone.d.ts +1 -1
  110. package/dist/cjs/util/clone.js +5 -5
  111. package/dist/cjs/util/regex.d.ts +1 -1
  112. package/dist/cjs/util/regex.js +6 -7
  113. package/dist/cjs/util/regex.js.map +1 -1
  114. package/dist/esm/index.d.ts +4 -4
  115. package/dist/esm/index.js +8 -8
  116. package/dist/esm/lang/groovy.d.ts +6 -6
  117. package/dist/esm/lang/groovy.js +80 -80
  118. package/dist/esm/lang/index.d.ts +20 -20
  119. package/dist/esm/lang/index.js +37 -37
  120. package/dist/esm/lang/python.d.ts +6 -6
  121. package/dist/esm/lang/python.js +70 -70
  122. package/dist/esm/lang/scala.d.ts +6 -6
  123. package/dist/esm/lang/scala.js +68 -68
  124. package/dist/esm/lang/starlark.d.ts +6 -6
  125. package/dist/esm/lang/starlark.js +55 -55
  126. package/dist/esm/lang/types.d.ts +6 -6
  127. package/dist/esm/lang/types.js +1 -1
  128. package/dist/esm/lexer/bracket.d.ts +6 -6
  129. package/dist/esm/lexer/bracket.js +49 -49
  130. package/dist/esm/lexer/bracket.js.map +1 -1
  131. package/dist/esm/lexer/comment.d.ts +3 -3
  132. package/dist/esm/lexer/comment.js +39 -39
  133. package/dist/esm/lexer/comment.js.map +1 -1
  134. package/dist/esm/lexer/index.d.ts +5 -5
  135. package/dist/esm/lexer/index.js +136 -136
  136. package/dist/esm/lexer/index.js.map +1 -1
  137. package/dist/esm/lexer/number.d.ts +2 -2
  138. package/dist/esm/lexer/number.js +14 -14
  139. package/dist/esm/lexer/operator.d.ts +2 -2
  140. package/dist/esm/lexer/operator.js +20 -20
  141. package/dist/esm/lexer/rules.d.ts +4 -4
  142. package/dist/esm/lexer/rules.js +69 -69
  143. package/dist/esm/lexer/rules.js.map +1 -1
  144. package/dist/esm/lexer/string.d.ts +2 -2
  145. package/dist/esm/lexer/string.js +177 -177
  146. package/dist/esm/lexer/string.js.map +1 -1
  147. package/dist/esm/lexer/symbol.d.ts +2 -2
  148. package/dist/esm/lexer/symbol.js +14 -14
  149. package/dist/esm/lexer/token.d.ts +3 -3
  150. package/dist/esm/lexer/token.js +60 -60
  151. package/dist/esm/lexer/token.js.map +1 -1
  152. package/dist/esm/lexer/types.d.ts +142 -142
  153. package/dist/esm/lexer/types.js +1 -1
  154. package/dist/esm/parser/cursor.d.ts +2 -2
  155. package/dist/esm/parser/cursor.js +9 -9
  156. package/dist/esm/parser/index.d.ts +3 -3
  157. package/dist/esm/parser/index.js +3 -3
  158. package/dist/esm/parser/tree.d.ts +4 -4
  159. package/dist/esm/parser/tree.js +241 -241
  160. package/dist/esm/parser/tree.js.map +1 -1
  161. package/dist/esm/parser/types.d.ts +33 -33
  162. package/dist/esm/parser/types.js +1 -1
  163. package/dist/esm/query/builder.d.ts +144 -144
  164. package/dist/esm/query/builder.d.ts.map +1 -1
  165. package/dist/esm/query/builder.js +305 -304
  166. package/dist/esm/query/builder.js.map +1 -1
  167. package/dist/esm/query/handler.d.ts +2 -2
  168. package/dist/esm/query/handler.js +6 -6
  169. package/dist/esm/query/index.d.ts +2 -2
  170. package/dist/esm/query/index.js +2 -2
  171. package/dist/esm/query/matchers/abstract-matcher.d.ts +9 -9
  172. package/dist/esm/query/matchers/abstract-matcher.js +32 -32
  173. package/dist/esm/query/matchers/abstract-matcher.js.map +1 -1
  174. package/dist/esm/query/matchers/alt-matcher.d.ts +10 -10
  175. package/dist/esm/query/matchers/alt-matcher.js +29 -29
  176. package/dist/esm/query/matchers/alt-matcher.js.map +1 -1
  177. package/dist/esm/query/matchers/anchor-matcher.d.ts +17 -17
  178. package/dist/esm/query/matchers/anchor-matcher.js +44 -44
  179. package/dist/esm/query/matchers/anchor-matcher.js.map +1 -1
  180. package/dist/esm/query/matchers/comment-matcher.d.ts +10 -10
  181. package/dist/esm/query/matchers/comment-matcher.js +35 -35
  182. package/dist/esm/query/matchers/comment-matcher.js.map +1 -1
  183. package/dist/esm/query/matchers/index.d.ts +6 -6
  184. package/dist/esm/query/matchers/index.js +6 -6
  185. package/dist/esm/query/matchers/many-matcher.d.ts +13 -13
  186. package/dist/esm/query/matchers/many-matcher.js +57 -57
  187. package/dist/esm/query/matchers/many-matcher.js.map +1 -1
  188. package/dist/esm/query/matchers/num-matcher.d.ts +8 -8
  189. package/dist/esm/query/matchers/num-matcher.js +30 -30
  190. package/dist/esm/query/matchers/num-matcher.js.map +1 -1
  191. package/dist/esm/query/matchers/op-matcher.d.ts +8 -8
  192. package/dist/esm/query/matchers/op-matcher.js +30 -30
  193. package/dist/esm/query/matchers/op-matcher.js.map +1 -1
  194. package/dist/esm/query/matchers/seq-matcher.d.ts +14 -14
  195. package/dist/esm/query/matchers/seq-matcher.js +72 -72
  196. package/dist/esm/query/matchers/seq-matcher.js.map +1 -1
  197. package/dist/esm/query/matchers/str-matcher.d.ts +38 -38
  198. package/dist/esm/query/matchers/str-matcher.js +102 -102
  199. package/dist/esm/query/matchers/str-matcher.js.map +1 -1
  200. package/dist/esm/query/matchers/sym-matcher.d.ts +8 -8
  201. package/dist/esm/query/matchers/sym-matcher.js +30 -30
  202. package/dist/esm/query/matchers/sym-matcher.js.map +1 -1
  203. package/dist/esm/query/matchers/tree-matcher.d.ts +23 -23
  204. package/dist/esm/query/matchers/tree-matcher.js +117 -117
  205. package/dist/esm/query/matchers/tree-matcher.js.map +1 -1
  206. package/dist/esm/query/options.d.ts +10 -10
  207. package/dist/esm/query/options.js +139 -139
  208. package/dist/esm/query/options.js.map +1 -1
  209. package/dist/esm/query/regex.d.ts +1 -1
  210. package/dist/esm/query/regex.js +9 -9
  211. package/dist/esm/query/regex.js.map +1 -1
  212. package/dist/esm/query/types.d.ts +100 -100
  213. package/dist/esm/query/types.d.ts.map +1 -1
  214. package/dist/esm/query/types.js +1 -1
  215. package/dist/esm/util/clone.d.ts +1 -1
  216. package/dist/esm/util/clone.js +1 -1
  217. package/dist/esm/util/regex.d.ts +1 -1
  218. package/dist/esm/util/regex.js +3 -3
  219. package/package.json +42 -46
package/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  TypeScript library aiming to fill the gap between usage of ad-hoc regular expressions and generation of complete grammar descriptions.
4
4
 
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/zharinov/good-enough-parser/blob/main/LICENSE)
6
- [![Trunk](https://github.com/zharinov/good-enough-parser/actions/workflows/trunk.yml/badge.svg)](https://github.com/zharinov/good-enough-parser/actions/workflows/trunk.yml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/renovatebot/good-enough-parser/blob/main/LICENSE)
6
+ [![Build](https://github.com/renovatebot/good-enough-parser/actions/workflows/build.yml/badge.svg)](https://github.com/renovatebot/good-enough-parser/actions/workflows/build.yml)
7
7
 
8
8
  ## Motivation
9
9
 
@@ -27,7 +27,7 @@ While most programming languages provide parser tooling for the language they're
27
27
 
28
28
  The library is divided into multiple levels of abstraction, from the lowest to the highest one:
29
29
 
30
- ### [`lib/lexer`](https://github.com/zharinov/good-enough-parser/tree/main/lib/lexer)
30
+ ### [`lib/lexer`](https://github.com/renovatebot/good-enough-parser/tree/main/lib/lexer)
31
31
 
32
32
  Configures the [moo](https://github.com/no-context/moo) tokenizer for specific language features such as:
33
33
 
@@ -40,14 +40,14 @@ Configures the [moo](https://github.com/no-context/moo) tokenizer for specific l
40
40
  - Line joins: if the line ends with `\`, the next one will be treated as its continuation
41
41
 
42
42
  Refer to the `LexerConfig` interface for more details.
43
- Also check out [our usage example for Python](https://github.com/zharinov/good-enough-parser/blob/main/lib/lang/python.ts).
43
+ Also check out [our usage example for Python](https://github.com/renovatebot/good-enough-parser/blob/main/lib/lang/python.ts).
44
44
 
45
- ### [`lib/parser`](https://github.com/zharinov/good-enough-parser/tree/main/lib/tree)
45
+ ### [`lib/parser`](https://github.com/renovatebot/good-enough-parser/tree/main/lib/tree)
46
46
 
47
47
  This layer is responsible for transforming the token sequence to the nested tree with the tokens as leafs.
48
48
  Internally, we're using functional [zipper](<https://en.wikipedia.org/wiki/Zipper_(data_structure)>) data structure to perform queries on the tree.
49
49
 
50
- ### [`lib/query`](https://github.com/zharinov/good-enough-parser/tree/main/lib/query)
50
+ ### [`lib/query`](https://github.com/renovatebot/good-enough-parser/tree/main/lib/query)
51
51
 
52
52
  To understand `parser-utils` queries, it's useful to keep in mind the principle of how regular expressions work.
53
53
  Each query represents sequence of adjacent tokens and tree elements.
@@ -1,5 +1,5 @@
1
- export * as lang from './lang';
2
- export * as lexer from './lexer';
3
- export * as parser from './parser';
4
- export * as query from './query';
1
+ export * as lang from './lang';
2
+ export * as lexer from './lexer';
3
+ export * as parser from './parser';
4
+ export * as query from './query';
5
5
  //# sourceMappingURL=index.d.ts.map
package/dist/cjs/index.js CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.query = exports.parser = exports.lexer = exports.lang = void 0;
4
- exports.lang = require("./lang");
5
- exports.lexer = require("./lexer");
6
- exports.parser = require("./parser");
7
- exports.query = require("./query");
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.query = exports.parser = exports.lexer = exports.lang = void 0;
4
+ exports.lang = require("./lang");
5
+ exports.lexer = require("./lexer");
6
+ exports.parser = require("./parser");
7
+ exports.query = require("./query");
8
8
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- import type { LexerConfig } from '../lexer/types';
2
- import type { ParserConfig } from '../parser/types';
3
- import type { LanguageConfig } from './types';
4
- export declare const lexer: LexerConfig;
5
- export declare const parser: ParserConfig;
6
- export declare const lang: LanguageConfig;
1
+ import type { LexerConfig } from '../lexer/types';
2
+ import type { ParserConfig } from '../parser/types';
3
+ import type { LanguageConfig } from './types';
4
+ export declare const lexer: LexerConfig;
5
+ export declare const parser: ParserConfig;
6
+ export declare const lang: LanguageConfig;
7
7
  //# sourceMappingURL=groovy.d.ts.map
@@ -1,84 +1,84 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lang = exports.parser = exports.lexer = void 0;
4
- /**
5
- * @see https://docs.groovy-lang.org/latest/html/documentation/#groovy-operators
6
- */
7
- const operators =
8
- /* prettier-ignore */ [
9
- '+', '-', '*', '/', '%', '**',
10
- '++', '--',
11
- '+=', '-=', '*=', '/=', '%=', '**=',
12
- '==', '!=', '<', '<=', '>', '>=', '===', '!==', '<=>',
13
- '&&', '||', '!',
14
- '&', '|', '^', '~',
15
- '<<', '>>', '>>>',
16
- '?', '?:',
17
- '=', '?=',
18
- '.', '?.', '.@', '.&', '::',
19
- '=~', '==~',
20
- '*.', ':',
21
- '..', '..<',
22
- '<>',
23
- '<<=', '>>=', '>>>=', '&=', '^=', '|=', '?=',
24
- '->',
25
- ',', ';',
26
- ];
27
- /**
28
- * Borrowed from Python implementation:
29
- *
30
- * @see https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
31
- */
32
- const bindigit = '[01]';
33
- const octdigit = '[0-7]';
34
- const digit = '[0-9]';
35
- const nonzerodigit = '[1-9]';
36
- const hexdigit = `(?:${digit}|[a-fA-F])`;
37
- const bininteger = `(?:0[bB](?:_?${bindigit})+)`;
38
- const octinteger = `(?:0[oO](?:_?${octdigit})+)`;
39
- const hexinteger = `(?:0[xX](?:_?${hexdigit})+)`;
40
- const decinteger = `(?:${nonzerodigit}(?:_?${digit})*|0+(?:_?0)*)`;
41
- const integer = `(?:${decinteger}|${bininteger}|${octinteger}|${hexinteger})`;
42
- const digitpart = `(?:${digit}(?:_?${digit})*)`;
43
- const fraction = `(?:\\.${digitpart})`;
44
- const exponent = `(?:[eE][-+]?${digitpart})`;
45
- const pointfloat = `(?:${digitpart}?${fraction}|${digitpart}\\.)`;
46
- const exponentfloat = `(?:(?:${digitpart}|${pointfloat})${exponent})`;
47
- const floatnumber = `(?:${pointfloat}|${exponentfloat})`;
48
- const numbers = new RegExp(`(?:${integer}|${floatnumber})`);
49
- const templates = [
50
- {
51
- type: 'var',
52
- startsWith: '$',
53
- symbols: /[a-zA-Z_][a-zA-Z0-9_]*/,
54
- operators: ['.'],
55
- },
56
- { type: 'expr', startsWith: '${', endsWith: '}' },
57
- ];
58
- exports.lexer = {
59
- joinLines: '\\',
60
- comments: [
61
- { type: 'line-comment', startsWith: '#!' },
62
- { type: 'line-comment', startsWith: '//' },
63
- { type: 'multiline-comment', startsWith: '/*', endsWith: '*/' },
64
- ],
65
- symbols: /[a-zA-Z$_][a-zA-Z0-9$_]*/,
66
- numbers,
67
- operators,
68
- brackets: [
69
- { startsWith: '{', endsWith: '}' },
70
- { startsWith: '[', endsWith: ']' },
71
- { startsWith: '(', endsWith: ')' },
72
- ],
73
- strings: [
74
- { startsWith: "'", escapeChar: '\\' },
75
- { startsWith: "'''", escapeChar: '\\' },
76
- { startsWith: '"', templates, escapeChar: '\\' },
77
- { startsWith: '"""', templates, escapeChar: '\\' },
78
- ],
79
- };
80
- exports.parser = {
81
- useIndentBlocks: false,
82
- };
83
- exports.lang = { lexer: exports.lexer, parser: exports.parser };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lang = exports.parser = exports.lexer = void 0;
4
+ /**
5
+ * @see https://docs.groovy-lang.org/latest/html/documentation/#groovy-operators
6
+ */
7
+ const operators =
8
+ /* prettier-ignore */ [
9
+ '+', '-', '*', '/', '%', '**',
10
+ '++', '--',
11
+ '+=', '-=', '*=', '/=', '%=', '**=',
12
+ '==', '!=', '<', '<=', '>', '>=', '===', '!==', '<=>',
13
+ '&&', '||', '!',
14
+ '&', '|', '^', '~',
15
+ '<<', '>>', '>>>',
16
+ '?', '?:',
17
+ '=', '?=',
18
+ '.', '?.', '.@', '.&', '::',
19
+ '=~', '==~',
20
+ '*.', ':',
21
+ '..', '..<',
22
+ '<>',
23
+ '<<=', '>>=', '>>>=', '&=', '^=', '|=', '?=',
24
+ '->',
25
+ ',', ';',
26
+ ];
27
+ /**
28
+ * Borrowed from Python implementation:
29
+ *
30
+ * @see https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
31
+ */
32
+ const bindigit = '[01]';
33
+ const octdigit = '[0-7]';
34
+ const digit = '[0-9]';
35
+ const nonzerodigit = '[1-9]';
36
+ const hexdigit = `(?:${digit}|[a-fA-F])`;
37
+ const bininteger = `(?:0[bB](?:_?${bindigit})+)`;
38
+ const octinteger = `(?:0[oO](?:_?${octdigit})+)`;
39
+ const hexinteger = `(?:0[xX](?:_?${hexdigit})+)`;
40
+ const decinteger = `(?:${nonzerodigit}(?:_?${digit})*|0+(?:_?0)*)`;
41
+ const integer = `(?:${decinteger}|${bininteger}|${octinteger}|${hexinteger})`;
42
+ const digitpart = `(?:${digit}(?:_?${digit})*)`;
43
+ const fraction = `(?:\\.${digitpart})`;
44
+ const exponent = `(?:[eE][-+]?${digitpart})`;
45
+ const pointfloat = `(?:${digitpart}?${fraction}|${digitpart}\\.)`;
46
+ const exponentfloat = `(?:(?:${digitpart}|${pointfloat})${exponent})`;
47
+ const floatnumber = `(?:${pointfloat}|${exponentfloat})`;
48
+ const numbers = new RegExp(`(?:${integer}|${floatnumber})`);
49
+ const templates = [
50
+ {
51
+ type: 'var',
52
+ startsWith: '$',
53
+ symbols: /[a-zA-Z_][a-zA-Z0-9_]*/,
54
+ operators: ['.'],
55
+ },
56
+ { type: 'expr', startsWith: '${', endsWith: '}' },
57
+ ];
58
+ exports.lexer = {
59
+ joinLines: '\\',
60
+ comments: [
61
+ { type: 'line-comment', startsWith: '#!' },
62
+ { type: 'line-comment', startsWith: '//' },
63
+ { type: 'multiline-comment', startsWith: '/*', endsWith: '*/' },
64
+ ],
65
+ symbols: /[a-zA-Z$_][a-zA-Z0-9$_]*/,
66
+ numbers,
67
+ operators,
68
+ brackets: [
69
+ { startsWith: '{', endsWith: '}' },
70
+ { startsWith: '[', endsWith: ']' },
71
+ { startsWith: '(', endsWith: ')' },
72
+ ],
73
+ strings: [
74
+ { startsWith: "'", escapeChar: '\\' },
75
+ { startsWith: "'''", escapeChar: '\\' },
76
+ { startsWith: '"', templates, escapeChar: '\\' },
77
+ { startsWith: '"""', templates, escapeChar: '\\' },
78
+ ],
79
+ };
80
+ exports.parser = {
81
+ useIndentBlocks: false,
82
+ };
83
+ exports.lang = { lexer: exports.lexer, parser: exports.parser };
84
84
  //# sourceMappingURL=groovy.js.map
@@ -1,21 +1,21 @@
1
- import type { Cursor, Node } from '../parser/types';
2
- import type { QueryBuilder } from '../query/types';
3
- import type { LanguageConfig } from './types';
4
- export * from './types';
5
- export declare class Language {
6
- readonly config: LanguageConfig;
7
- private lexer;
8
- constructor(config: LanguageConfig);
9
- parse(input: string): Cursor;
10
- query<Ctx, T extends Node>(input: string | Cursor, q: QueryBuilder<Ctx, T>, context: Ctx): Ctx | null;
11
- }
12
- declare const languagePresets: {
13
- groovy: LanguageConfig;
14
- python: LanguageConfig;
15
- scala: LanguageConfig;
16
- starlark: LanguageConfig;
17
- };
18
- type LanguagePreset = keyof typeof languagePresets;
19
- export declare function createLang(key: LanguagePreset): Language;
20
- export declare function createLang(config: LanguageConfig): Language;
1
+ import type { Cursor, Node } from '../parser/types';
2
+ import type { QueryBuilder } from '../query/types';
3
+ import type { LanguageConfig } from './types';
4
+ export * from './types';
5
+ export declare class Language {
6
+ readonly config: LanguageConfig;
7
+ private lexer;
8
+ constructor(config: LanguageConfig);
9
+ parse(input: string): Cursor;
10
+ query<Ctx, T extends Node>(input: string | Cursor, q: QueryBuilder<Ctx, T>, context: Ctx): Ctx | null;
11
+ }
12
+ declare const languagePresets: {
13
+ groovy: LanguageConfig;
14
+ python: LanguageConfig;
15
+ scala: LanguageConfig;
16
+ starlark: LanguageConfig;
17
+ };
18
+ type LanguagePreset = keyof typeof languagePresets;
19
+ export declare function createLang(key: LanguagePreset): Language;
20
+ export declare function createLang(config: LanguageConfig): Language;
21
21
  //# sourceMappingURL=index.d.ts.map
@@ -1,57 +1,57 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
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.createLang = exports.Language = void 0;
18
- const lexer_1 = require("../lexer");
19
- const parser_1 = require("../parser");
20
- const query_1 = require("../query");
21
- const clone_1 = require("../util/clone");
22
- const groovy_1 = require("./groovy");
23
- const python_1 = require("./python");
24
- const scala_1 = require("./scala");
25
- const starlark_1 = require("./starlark");
26
- __exportStar(require("./types"), exports);
27
- class Language {
28
- constructor(config) {
29
- this.config = config;
30
- this.lexer = (0, lexer_1.createLexer)(config.lexer);
31
- }
32
- parse(input) {
33
- this.lexer.reset(input);
34
- const root = (0, parser_1.createTree)(this.lexer, this.config.parser);
35
- return (0, parser_1.createCursor)(root);
36
- }
37
- query(input, q, context) {
38
- const matcher = (0, query_1.buildRoot)(q);
39
- const cursor = typeof input === 'string' ? this.parse(input) : input;
40
- const checkpoint = matcher.match({ cursor, context });
41
- const result = checkpoint === null || checkpoint === void 0 ? void 0 : checkpoint.context;
42
- return result ? (0, clone_1.clone)(result) : null;
43
- }
44
- }
45
- exports.Language = Language;
46
- const languagePresets = {
47
- groovy: groovy_1.lang,
48
- python: python_1.lang,
49
- scala: scala_1.lang,
50
- starlark: starlark_1.lang,
51
- };
52
- function createLang(arg1) {
53
- const config = typeof arg1 === 'string' ? languagePresets[arg1] : arg1;
54
- return new Language(config);
55
- }
56
- exports.createLang = createLang;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
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.Language = void 0;
18
+ exports.createLang = createLang;
19
+ const lexer_1 = require("../lexer");
20
+ const parser_1 = require("../parser");
21
+ const query_1 = require("../query");
22
+ const clone_1 = require("../util/clone");
23
+ const groovy_1 = require("./groovy");
24
+ const python_1 = require("./python");
25
+ const scala_1 = require("./scala");
26
+ const starlark_1 = require("./starlark");
27
+ __exportStar(require("./types"), exports);
28
+ class Language {
29
+ constructor(config) {
30
+ this.config = config;
31
+ this.lexer = (0, lexer_1.createLexer)(config.lexer);
32
+ }
33
+ parse(input) {
34
+ this.lexer.reset(input);
35
+ const root = (0, parser_1.createTree)(this.lexer, this.config.parser);
36
+ return (0, parser_1.createCursor)(root);
37
+ }
38
+ query(input, q, context) {
39
+ const matcher = (0, query_1.buildRoot)(q);
40
+ const cursor = typeof input === 'string' ? this.parse(input) : input;
41
+ const checkpoint = matcher.match({ cursor, context });
42
+ const result = checkpoint === null || checkpoint === void 0 ? void 0 : checkpoint.context;
43
+ return result ? (0, clone_1.clone)(result) : null;
44
+ }
45
+ }
46
+ exports.Language = Language;
47
+ const languagePresets = {
48
+ groovy: groovy_1.lang,
49
+ python: python_1.lang,
50
+ scala: scala_1.lang,
51
+ starlark: starlark_1.lang,
52
+ };
53
+ function createLang(arg1) {
54
+ const config = typeof arg1 === 'string' ? languagePresets[arg1] : arg1;
55
+ return new Language(config);
56
+ }
57
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/lang/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oCAAuC;AAEvC,sCAAqD;AAErD,oCAAqC;AAErC,yCAAsC;AACtC,qCAA0C;AAC1C,qCAA0C;AAC1C,mCAAwC;AACxC,yCAA8C;AAG9C,0CAAwB;AAExB,MAAa,QAAQ;IAGnB,YAAqB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACzC,IAAI,CAAC,KAAK,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CACH,KAAsB,EACtB,CAAuB,EACvB,OAAY;QAEZ,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC;QACnC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,aAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;CACF;AAxBD,4BAwBC;AAED,MAAM,eAAe,GAAG;IACtB,MAAM,EAAN,aAAM;IACN,MAAM,EAAN,aAAM;IACN,KAAK,EAAL,YAAK;IACL,QAAQ,EAAR,eAAQ;CACT,CAAC;AAMF,SAAgB,UAAU,CAAC,IAAqC;IAC9D,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAHD,gCAGC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/lang/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoDA,gCAGC;AAvDD,oCAAuC;AAEvC,sCAAqD;AAErD,oCAAqC;AAErC,yCAAsC;AACtC,qCAA0C;AAC1C,qCAA0C;AAC1C,mCAAwC;AACxC,yCAA8C;AAG9C,0CAAwB;AAExB,MAAa,QAAQ;IAGnB,YAAqB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACzC,IAAI,CAAC,KAAK,GAAG,IAAA,mBAAW,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CACH,KAAsB,EACtB,CAAuB,EACvB,OAAY;QAEZ,MAAM,OAAO,GAAG,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC;QACnC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,aAAK,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;CACF;AAxBD,4BAwBC;AAED,MAAM,eAAe,GAAG;IACtB,MAAM,EAAN,aAAM;IACN,MAAM,EAAN,aAAM;IACN,KAAK,EAAL,YAAK;IACL,QAAQ,EAAR,eAAQ;CACT,CAAC;AAMF,SAAgB,UAAU,CAAC,IAAqC;IAC9D,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { LexerConfig } from '../lexer/types';
2
- import type { ParserConfig } from '../parser/types';
3
- import type { LanguageConfig } from './types';
4
- export declare const lexer: LexerConfig;
5
- export declare const parser: ParserConfig;
6
- export declare const lang: LanguageConfig;
1
+ import type { LexerConfig } from '../lexer/types';
2
+ import type { ParserConfig } from '../parser/types';
3
+ import type { LanguageConfig } from './types';
4
+ export declare const lexer: LexerConfig;
5
+ export declare const parser: ParserConfig;
6
+ export declare const lang: LanguageConfig;
7
7
  //# sourceMappingURL=python.d.ts.map
@@ -1,74 +1,74 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lang = exports.parser = exports.lexer = void 0;
4
- /**
5
- * @see https://docs.python.org/3/reference/lexical_analysis.html#operators
6
- */
7
- const operators =
8
- /* prettier-ignore */ [
9
- // Operators
10
- '+', '-', '*', '**', '/', '//', '%', '@',
11
- '<<', '>>', '&', '|', '^', '~', ':=',
12
- '<', '>', '<=', '>=', '==', '!=',
13
- // Delimiters
14
- ',', ':', '.', ';', '@', '=', '->',
15
- '+=', '-=', '*=', '/=', '//=', '%=', '@=',
16
- '&=', '|=', '^=', '>>=', '<<=', '**=',
17
- ];
18
- /**
19
- * @see https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
20
- */
21
- const bindigit = '[01]';
22
- const octdigit = '[0-7]';
23
- const digit = '[0-9]';
24
- const nonzerodigit = '[1-9]';
25
- const hexdigit = `(?:${digit}|[a-fA-F])`;
26
- const bininteger = `(?:0[bB](?:_?${bindigit})+)`;
27
- const octinteger = `(?:0[oO](?:_?${octdigit})+)`;
28
- const hexinteger = `(?:0[xX](?:_?${hexdigit})+)`;
29
- const decinteger = `(?:${nonzerodigit}(?:_?${digit})*|0+(?:_?0)*)`;
30
- const integer = `(?:${decinteger}|${bininteger}|${octinteger}|${hexinteger})`;
31
- const digitpart = `(?:${digit}(?:_?${digit})*)`;
32
- const fraction = `(?:\\.${digitpart})`;
33
- const exponent = `(?:[eE][-+]?${digitpart})`;
34
- const pointfloat = `(?:${digitpart}?${fraction}|${digitpart}\\.)`;
35
- const exponentfloat = `(?:(?:${digitpart}|${pointfloat})${exponent})`;
36
- const floatnumber = `(?:${pointfloat}|${exponentfloat})`;
37
- const numbers = new RegExp(`(?:${integer}|${floatnumber})`);
38
- exports.lexer = {
39
- joinLines: '\\',
40
- comments: [{ type: 'line-comment', startsWith: '#' }],
41
- symbols: /[_a-zA-Z][_a-zA-Z0-9]*/,
42
- numbers,
43
- operators,
44
- brackets: [
45
- { startsWith: '{', endsWith: '}' },
46
- { startsWith: '[', endsWith: ']' },
47
- { startsWith: '(', endsWith: ')' },
48
- ],
49
- strings: [
50
- { startsWith: "'", escapeChar: '\\' },
51
- { startsWith: '"', escapeChar: '\\' },
52
- { startsWith: "'''", escapeChar: '\\' },
53
- { startsWith: '"""', escapeChar: '\\' },
54
- {
55
- startsWith: "f'",
56
- endsWith: "'",
57
- escapeChar: '\\',
58
- templates: [{ type: 'expr', startsWith: '{', endsWith: '}' }],
59
- },
60
- {
61
- startsWith: 'f"',
62
- endsWith: '"',
63
- escapeChar: '\\',
64
- templates: [{ type: 'expr', startsWith: '{', endsWith: '}' }],
65
- },
66
- { startsWith: "r'", endsWith: "'" },
67
- { startsWith: 'r"', endsWith: '"' },
68
- ],
69
- };
70
- exports.parser = {
71
- useIndentBlocks: true,
72
- };
73
- exports.lang = { lexer: exports.lexer, parser: exports.parser };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lang = exports.parser = exports.lexer = void 0;
4
+ /**
5
+ * @see https://docs.python.org/3/reference/lexical_analysis.html#operators
6
+ */
7
+ const operators =
8
+ /* prettier-ignore */ [
9
+ // Operators
10
+ '+', '-', '*', '**', '/', '//', '%', '@',
11
+ '<<', '>>', '&', '|', '^', '~', ':=',
12
+ '<', '>', '<=', '>=', '==', '!=',
13
+ // Delimiters
14
+ ',', ':', '.', ';', '@', '=', '->',
15
+ '+=', '-=', '*=', '/=', '//=', '%=', '@=',
16
+ '&=', '|=', '^=', '>>=', '<<=', '**=',
17
+ ];
18
+ /**
19
+ * @see https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
20
+ */
21
+ const bindigit = '[01]';
22
+ const octdigit = '[0-7]';
23
+ const digit = '[0-9]';
24
+ const nonzerodigit = '[1-9]';
25
+ const hexdigit = `(?:${digit}|[a-fA-F])`;
26
+ const bininteger = `(?:0[bB](?:_?${bindigit})+)`;
27
+ const octinteger = `(?:0[oO](?:_?${octdigit})+)`;
28
+ const hexinteger = `(?:0[xX](?:_?${hexdigit})+)`;
29
+ const decinteger = `(?:${nonzerodigit}(?:_?${digit})*|0+(?:_?0)*)`;
30
+ const integer = `(?:${decinteger}|${bininteger}|${octinteger}|${hexinteger})`;
31
+ const digitpart = `(?:${digit}(?:_?${digit})*)`;
32
+ const fraction = `(?:\\.${digitpart})`;
33
+ const exponent = `(?:[eE][-+]?${digitpart})`;
34
+ const pointfloat = `(?:${digitpart}?${fraction}|${digitpart}\\.)`;
35
+ const exponentfloat = `(?:(?:${digitpart}|${pointfloat})${exponent})`;
36
+ const floatnumber = `(?:${pointfloat}|${exponentfloat})`;
37
+ const numbers = new RegExp(`(?:${integer}|${floatnumber})`);
38
+ exports.lexer = {
39
+ joinLines: '\\',
40
+ comments: [{ type: 'line-comment', startsWith: '#' }],
41
+ symbols: /[_a-zA-Z][_a-zA-Z0-9]*/,
42
+ numbers,
43
+ operators,
44
+ brackets: [
45
+ { startsWith: '{', endsWith: '}' },
46
+ { startsWith: '[', endsWith: ']' },
47
+ { startsWith: '(', endsWith: ')' },
48
+ ],
49
+ strings: [
50
+ { startsWith: "'", escapeChar: '\\' },
51
+ { startsWith: '"', escapeChar: '\\' },
52
+ { startsWith: "'''", escapeChar: '\\' },
53
+ { startsWith: '"""', escapeChar: '\\' },
54
+ {
55
+ startsWith: "f'",
56
+ endsWith: "'",
57
+ escapeChar: '\\',
58
+ templates: [{ type: 'expr', startsWith: '{', endsWith: '}' }],
59
+ },
60
+ {
61
+ startsWith: 'f"',
62
+ endsWith: '"',
63
+ escapeChar: '\\',
64
+ templates: [{ type: 'expr', startsWith: '{', endsWith: '}' }],
65
+ },
66
+ { startsWith: "r'", endsWith: "'" },
67
+ { startsWith: 'r"', endsWith: '"' },
68
+ ],
69
+ };
70
+ exports.parser = {
71
+ useIndentBlocks: true,
72
+ };
73
+ exports.lang = { lexer: exports.lexer, parser: exports.parser };
74
74
  //# sourceMappingURL=python.js.map
@@ -1,7 +1,7 @@
1
- import type { LexerConfig } from '../lexer/types';
2
- import type { ParserConfig } from '../parser/types';
3
- import type { LanguageConfig } from './types';
4
- export declare const lexer: LexerConfig;
5
- export declare const parser: ParserConfig;
6
- export declare const lang: LanguageConfig;
1
+ import type { LexerConfig } from '../lexer/types';
2
+ import type { ParserConfig } from '../parser/types';
3
+ import type { LanguageConfig } from './types';
4
+ export declare const lexer: LexerConfig;
5
+ export declare const parser: ParserConfig;
6
+ export declare const lang: LanguageConfig;
7
7
  //# sourceMappingURL=scala.d.ts.map