grammar-well 1.3.3 → 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 (261) hide show
  1. package/README.md +76 -560
  2. package/build/generator/artifacts/basic.d.ts +7 -0
  3. package/build/generator/artifacts/basic.js +24 -0
  4. package/build/generator/artifacts/basic.js.map +1 -0
  5. package/build/generator/artifacts/lexer.d.ts +13 -0
  6. package/build/generator/artifacts/lexer.js +204 -0
  7. package/build/generator/artifacts/lexer.js.map +1 -0
  8. package/build/{compiler/generator → generator}/artifacts/lr.d.ts +14 -14
  9. package/build/{compiler/generator → generator}/artifacts/lr.js +18 -22
  10. package/build/generator/artifacts/lr.js.map +1 -0
  11. package/build/generator/builtin/json.d.ts +183 -0
  12. package/build/generator/builtin/json.js +124 -0
  13. package/build/generator/builtin/json.js.map +1 -0
  14. package/build/generator/builtin/registry.json +1 -0
  15. package/build/generator/builtin/whitespace.d.ts +61 -0
  16. package/build/generator/builtin/whitespace.js +37 -0
  17. package/build/generator/builtin/whitespace.js.map +1 -0
  18. package/build/generator/generator.d.ts +38 -0
  19. package/build/generator/generator.js +368 -0
  20. package/build/generator/generator.js.map +1 -0
  21. package/build/generator/grammars/index.d.ts +2 -0
  22. package/build/generator/grammars/index.js +3 -0
  23. package/build/generator/grammars/index.js.map +1 -0
  24. package/build/generator/grammars/v1.d.ts +1190 -0
  25. package/build/generator/grammars/v1.js +614 -0
  26. package/build/generator/grammars/v1.js.map +1 -0
  27. package/build/generator/grammars/v2.d.ts +1367 -0
  28. package/build/generator/grammars/v2.js +695 -0
  29. package/build/generator/grammars/v2.js.map +1 -0
  30. package/build/generator/import-resolvers/auto.d.ts +2 -0
  31. package/build/generator/import-resolvers/auto.js +11 -0
  32. package/build/generator/import-resolvers/auto.js.map +1 -0
  33. package/build/generator/import-resolvers/browser.d.ts +7 -0
  34. package/build/generator/import-resolvers/browser.js +13 -0
  35. package/build/generator/import-resolvers/browser.js.map +1 -0
  36. package/build/generator/import-resolvers/default.d.ts +2 -0
  37. package/build/generator/import-resolvers/default.js +11 -0
  38. package/build/generator/import-resolvers/default.js.map +1 -0
  39. package/build/generator/import-resolvers/filesystem.d.ts +7 -0
  40. package/build/generator/import-resolvers/filesystem.js +15 -0
  41. package/build/generator/import-resolvers/filesystem.js.map +1 -0
  42. package/build/generator/index.d.ts +3 -0
  43. package/build/generator/index.js +4 -0
  44. package/build/generator/index.js.map +1 -0
  45. package/build/generator/state.d.ts +28 -0
  46. package/build/generator/state.js +73 -0
  47. package/build/generator/state.js.map +1 -0
  48. package/build/generator/stringify/common.d.ts +22 -0
  49. package/build/generator/stringify/common.js +83 -0
  50. package/build/generator/stringify/common.js.map +1 -0
  51. package/build/generator/stringify/exports/javascript.d.ts +3 -0
  52. package/build/generator/stringify/exports/javascript.js +26 -0
  53. package/build/generator/stringify/exports/javascript.js.map +1 -0
  54. package/build/generator/stringify/exports/json.d.ts +2 -0
  55. package/build/generator/stringify/exports/json.js +4 -0
  56. package/build/generator/stringify/exports/json.js.map +1 -0
  57. package/build/generator/stringify/exports/registry.d.ts +20 -0
  58. package/build/generator/stringify/exports/registry.js +17 -0
  59. package/build/generator/stringify/exports/registry.js.map +1 -0
  60. package/build/generator/stringify/exports/typescript.d.ts +2 -0
  61. package/build/generator/stringify/exports/typescript.js +16 -0
  62. package/build/generator/stringify/exports/typescript.js.map +1 -0
  63. package/build/generator/stringify/grammar/v2.d.ts +20 -0
  64. package/build/generator/stringify/grammar/v2.js +211 -0
  65. package/build/generator/stringify/grammar/v2.js.map +1 -0
  66. package/build/generator/stringify/javascript.d.ts +13 -0
  67. package/build/generator/stringify/javascript.js +83 -0
  68. package/build/generator/stringify/javascript.js.map +1 -0
  69. package/build/index.d.ts +7 -6
  70. package/build/index.js +7 -24
  71. package/build/index.js.map +1 -1
  72. package/build/lexers/character-lexer.d.ts +2 -2
  73. package/build/lexers/character-lexer.js +1 -5
  74. package/build/lexers/character-lexer.js.map +1 -1
  75. package/build/lexers/stateful-lexer.d.ts +12 -17
  76. package/build/lexers/stateful-lexer.js +38 -186
  77. package/build/lexers/stateful-lexer.js.map +1 -1
  78. package/build/lexers/token-buffer.d.ts +8 -8
  79. package/build/lexers/token-buffer.js +1 -5
  80. package/build/lexers/token-buffer.js.map +1 -1
  81. package/build/parser/algorithms/cyk.d.ts +6 -6
  82. package/build/parser/algorithms/cyk.js +10 -13
  83. package/build/parser/algorithms/cyk.js.map +1 -1
  84. package/build/parser/algorithms/earley.d.ts +7 -7
  85. package/build/parser/algorithms/earley.js +7 -11
  86. package/build/parser/algorithms/earley.js.map +1 -1
  87. package/build/parser/algorithms/lrk/algorithm.d.ts +3 -3
  88. package/build/parser/algorithms/lrk/algorithm.js +10 -13
  89. package/build/parser/algorithms/lrk/algorithm.js.map +1 -1
  90. package/build/parser/algorithms/lrk/bimap.js +1 -5
  91. package/build/parser/algorithms/lrk/bimap.js.map +1 -1
  92. package/build/parser/algorithms/lrk/canonical-collection.d.ts +7 -7
  93. package/build/parser/algorithms/lrk/canonical-collection.js +11 -15
  94. package/build/parser/algorithms/lrk/canonical-collection.js.map +1 -1
  95. package/build/parser/algorithms/lrk/closure.d.ts +3 -3
  96. package/build/parser/algorithms/lrk/closure.js +3 -7
  97. package/build/parser/algorithms/lrk/closure.js.map +1 -1
  98. package/build/parser/algorithms/lrk/stack.d.ts +6 -6
  99. package/build/parser/algorithms/lrk/stack.js +1 -5
  100. package/build/parser/algorithms/lrk/stack.js.map +1 -1
  101. package/build/parser/algorithms/lrk/state.d.ts +5 -5
  102. package/build/parser/algorithms/lrk/state.js +1 -2
  103. package/build/parser/parse.d.ts +10 -0
  104. package/build/parser/parse.js +34 -0
  105. package/build/parser/parse.js.map +1 -0
  106. package/build/parser/parser.d.ts +6 -17
  107. package/build/parser/parser.js +26 -42
  108. package/build/parser/parser.js.map +1 -1
  109. package/build/tsconfig.tsbuildinfo +1 -0
  110. package/build/typings/ast.d.ts +134 -0
  111. package/build/typings/ast.js +3 -0
  112. package/build/typings/ast.js.map +1 -0
  113. package/build/typings/common.d.ts +4 -0
  114. package/build/typings/common.js +2 -0
  115. package/build/typings/common.js.map +1 -0
  116. package/build/typings/generator.d.ts +58 -0
  117. package/build/typings/generator.js +3 -0
  118. package/build/typings/generator.js.map +1 -0
  119. package/build/typings/index.d.ts +43 -0
  120. package/build/typings/index.js +5 -0
  121. package/build/typings/index.js.map +1 -0
  122. package/build/typings/runtime.d.ts +70 -0
  123. package/build/typings/runtime.js +2 -0
  124. package/build/typings/runtime.js.map +1 -0
  125. package/build/utility/format.d.ts +1 -0
  126. package/build/utility/format.js +12 -0
  127. package/build/utility/format.js.map +1 -0
  128. package/build/utility/formatter.d.ts +1 -0
  129. package/build/utility/formatter.js +12 -0
  130. package/build/utility/formatter.js.map +1 -0
  131. package/build/utility/general.d.ts +1 -1
  132. package/build/utility/general.js +5 -13
  133. package/build/utility/general.js.map +1 -1
  134. package/build/utility/index.d.ts +4 -1
  135. package/build/utility/index.js +4 -17
  136. package/build/utility/index.js.map +1 -1
  137. package/build/utility/lint.d.ts +2 -2
  138. package/build/utility/lint.js +2 -6
  139. package/build/utility/lint.js.map +1 -1
  140. package/build/utility/migrate.d.ts +1 -0
  141. package/build/utility/migrate.js +10 -0
  142. package/build/utility/migrate.js.map +1 -0
  143. package/build/utility/monarch.d.ts +2 -2
  144. package/build/utility/monarch.js +33 -38
  145. package/build/utility/monarch.js.map +1 -1
  146. package/build/utility/parsing.d.ts +6 -0
  147. package/build/utility/parsing.js +26 -0
  148. package/build/utility/parsing.js.map +1 -0
  149. package/build/utility/text-format.d.ts +6 -6
  150. package/build/utility/text-format.js +2 -6
  151. package/build/utility/text-format.js.map +1 -1
  152. package/package.json +17 -24
  153. package/src/generator/artifacts/basic.ts +26 -0
  154. package/src/generator/artifacts/lexer.ts +228 -0
  155. package/src/{compiler/generator → generator}/artifacts/lr.ts +25 -24
  156. package/src/generator/builtin/character.well +7 -0
  157. package/src/generator/builtin/json.well +85 -0
  158. package/src/generator/builtin/number.well +21 -0
  159. package/src/generator/builtin/registry.json +1 -0
  160. package/src/generator/builtin/string.well +54 -0
  161. package/src/generator/builtin/whitespace.well +16 -0
  162. package/src/generator/generator.ts +401 -0
  163. package/src/generator/grammars/index.ts +2 -0
  164. package/src/generator/grammars/v1.ts +620 -0
  165. package/src/generator/grammars/v1.well +422 -0
  166. package/src/generator/grammars/v2.ts +701 -0
  167. package/src/generator/grammars/v2.well +413 -0
  168. package/src/generator/import-resolvers/auto.ts +12 -0
  169. package/src/generator/import-resolvers/browser.ts +13 -0
  170. package/src/generator/import-resolvers/filesystem.ts +18 -0
  171. package/src/generator/index.ts +3 -0
  172. package/src/generator/state.ts +89 -0
  173. package/src/generator/stringify/common.ts +90 -0
  174. package/src/generator/stringify/exports/javascript.ts +29 -0
  175. package/src/generator/stringify/exports/json.ts +5 -0
  176. package/src/generator/stringify/exports/registry.ts +20 -0
  177. package/src/generator/stringify/exports/typescript.ts +17 -0
  178. package/src/generator/stringify/grammar/v2.ts +223 -0
  179. package/src/generator/stringify/javascript.ts +94 -0
  180. package/src/index.ts +7 -6
  181. package/src/lexers/character-lexer.ts +2 -2
  182. package/src/lexers/stateful-lexer.ts +46 -203
  183. package/src/lexers/token-buffer.ts +3 -3
  184. package/src/parser/algorithms/cyk.ts +13 -12
  185. package/src/parser/algorithms/earley.ts +10 -10
  186. package/src/parser/algorithms/lrk/algorithm.ts +8 -7
  187. package/src/parser/algorithms/lrk/canonical-collection.ts +14 -14
  188. package/src/parser/algorithms/lrk/closure.ts +6 -6
  189. package/src/parser/algorithms/lrk/stack.ts +6 -6
  190. package/src/parser/algorithms/lrk/state.ts +5 -5
  191. package/src/parser/parse.ts +45 -0
  192. package/src/typings/ast.ts +148 -0
  193. package/src/typings/common.ts +2 -0
  194. package/src/typings/generator.ts +62 -0
  195. package/src/typings/index.ts +38 -0
  196. package/src/typings/runtime.ts +82 -0
  197. package/src/utility/format.ts +12 -0
  198. package/src/utility/general.ts +1 -2
  199. package/src/utility/index.ts +4 -1
  200. package/src/utility/lint.ts +5 -5
  201. package/src/utility/monarch.ts +34 -34
  202. package/src/utility/parsing.ts +30 -0
  203. package/src/utility/text-format.ts +7 -7
  204. package/.eslintrc.cjs +0 -14
  205. package/bootstrap.ts +0 -45
  206. package/build/compiler/builtin.json +0 -1
  207. package/build/compiler/compiler.d.ts +0 -50
  208. package/build/compiler/compiler.js +0 -249
  209. package/build/compiler/compiler.js.map +0 -1
  210. package/build/compiler/generator/artifacts/lr.js.map +0 -1
  211. package/build/compiler/generator/artifacts/standard.d.ts +0 -7
  212. package/build/compiler/generator/artifacts/standard.js +0 -28
  213. package/build/compiler/generator/artifacts/standard.js.map +0 -1
  214. package/build/compiler/generator/generator.d.ts +0 -24
  215. package/build/compiler/generator/generator.js +0 -217
  216. package/build/compiler/generator/generator.js.map +0 -1
  217. package/build/compiler/gwell.d.ts +0 -1112
  218. package/build/compiler/gwell.js +0 -576
  219. package/build/compiler/gwell.js.map +0 -1
  220. package/build/compiler/import-resolver.d.ts +0 -15
  221. package/build/compiler/import-resolver.js +0 -37
  222. package/build/compiler/import-resolver.js.map +0 -1
  223. package/build/compiler/index.d.ts +0 -2
  224. package/build/compiler/index.js +0 -19
  225. package/build/compiler/index.js.map +0 -1
  226. package/build/compiler/outputs/javascript.d.ts +0 -3
  227. package/build/compiler/outputs/javascript.js +0 -29
  228. package/build/compiler/outputs/javascript.js.map +0 -1
  229. package/build/compiler/outputs/json.d.ts +0 -2
  230. package/build/compiler/outputs/json.js +0 -8
  231. package/build/compiler/outputs/json.js.map +0 -1
  232. package/build/compiler/outputs/typescript.d.ts +0 -2
  233. package/build/compiler/outputs/typescript.js +0 -21
  234. package/build/compiler/outputs/typescript.js.map +0 -1
  235. package/build/parser/algorithms/lr.d.ts +0 -7
  236. package/build/parser/algorithms/lr.js +0 -108
  237. package/build/parser/algorithms/lr.js.map +0 -5
  238. package/build/parser/algorithms/lr0.d.ts +0 -7
  239. package/build/parser/algorithms/lr0.js +0 -156
  240. package/build/parser/algorithms/lr0.js.map +0 -1
  241. package/build/typings.d.ts +0 -226
  242. package/build/typings.js +0 -3
  243. package/build/typings.js.map +0 -1
  244. package/src/compiler/builtin/json.gwell +0 -74
  245. package/src/compiler/builtin/number.gwell +0 -20
  246. package/src/compiler/builtin/string.gwell +0 -48
  247. package/src/compiler/builtin/whitespace.gwell +0 -10
  248. package/src/compiler/builtin.json +0 -1
  249. package/src/compiler/compiler.ts +0 -265
  250. package/src/compiler/generator/artifacts/standard.ts +0 -26
  251. package/src/compiler/generator/generator.ts +0 -237
  252. package/src/compiler/gwell.gwell +0 -294
  253. package/src/compiler/gwell.js +0 -578
  254. package/src/compiler/import-resolver.ts +0 -36
  255. package/src/compiler/index.ts +0 -2
  256. package/src/compiler/outputs/javascript.ts +0 -27
  257. package/src/compiler/outputs/json.ts +0 -5
  258. package/src/compiler/outputs/typescript.ts +0 -18
  259. package/src/parser/parser.ts +0 -77
  260. package/src/typings.ts +0 -248
  261. package/testing.ts +0 -18
@@ -0,0 +1,695 @@
1
+ class grammar {
2
+ artifacts = {
3
+ grammar: {
4
+ rules: {
5
+ POSTPROCESSOR: [
6
+ { name: "POSTPROCESSOR", postprocess: ({ data }) => { return ({ template: data[2].value + data[3].map(v => v.value).join('').trim() + data[4].value }); }, symbols: [{ literal: "=>" }, "_", { literal: "(" }, "POSTPROCESSOR.RPT0Nx1", { literal: ")" }] },
7
+ { name: "POSTPROCESSOR", postprocess: ({ data }) => { return ({ template: data[2].value + data[3].map(v => v.value).join('').trim() + data[4].value }); }, symbols: [{ literal: "=>" }, "_", { literal: "{" }, "POSTPROCESSOR.RPT0Nx2", { literal: "}" }] },
8
+ { name: "POSTPROCESSOR", postprocess: ({ data }) => { return ({ template: data[2].value + data[3].map(v => v.value).join('').trim() + data[4].value }); }, symbols: [{ literal: "=>" }, "_", { literal: "[" }, "POSTPROCESSOR.RPT0Nx3", { literal: "]" }] },
9
+ { name: "POSTPROCESSOR", postprocess: ({ data }) => { return ({ js: data[3].map(v => v.value).join('').trim() }); }, symbols: [{ literal: "=>" }, "_", { literal: "${" }, "POSTPROCESSOR.RPT0Nx4", { literal: "}" }] }
10
+ ],
11
+ "POSTPROCESSOR.RPT0Nx1": [
12
+ { name: "POSTPROCESSOR.RPT0Nx1", symbols: [] },
13
+ { name: "POSTPROCESSOR.RPT0Nx1", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["POSTPROCESSOR.RPT0Nx1", { token: "T_JSBODY" }] }
14
+ ],
15
+ "POSTPROCESSOR.RPT0Nx2": [
16
+ { name: "POSTPROCESSOR.RPT0Nx2", symbols: [] },
17
+ { name: "POSTPROCESSOR.RPT0Nx2", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["POSTPROCESSOR.RPT0Nx2", { token: "T_JSBODY" }] }
18
+ ],
19
+ "POSTPROCESSOR.RPT0Nx3": [
20
+ { name: "POSTPROCESSOR.RPT0Nx3", symbols: [] },
21
+ { name: "POSTPROCESSOR.RPT0Nx3", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["POSTPROCESSOR.RPT0Nx3", { token: "T_JSBODY" }] }
22
+ ],
23
+ "POSTPROCESSOR.RPT0Nx4": [
24
+ { name: "POSTPROCESSOR.RPT0Nx4", symbols: [] },
25
+ { name: "POSTPROCESSOR.RPT0Nx4", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["POSTPROCESSOR.RPT0Nx4", { token: "T_JSBODY" }] }
26
+ ],
27
+ T_INTEGER: [
28
+ { name: "T_INTEGER", postprocess: ({ data }) => { return (data[0].value); }, symbols: [{ token: "T_INTEGER" }] }
29
+ ],
30
+ T_JS: [
31
+ { name: "T_JS", postprocess: ({ data }) => { return ({ js: data[1].map(v => v.value).join('') }); }, symbols: [{ literal: "{" }, "T_JS.RPT0Nx1", { literal: "}" }] }
32
+ ],
33
+ "T_JS.RPT0Nx1": [
34
+ { name: "T_JS.RPT0Nx1", symbols: [] },
35
+ { name: "T_JS.RPT0Nx1", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["T_JS.RPT0Nx1", { token: "T_JSBODY" }] }
36
+ ],
37
+ T_REGEX: [
38
+ { name: "T_REGEX", postprocess: ({ data }) => { return ({ regex: data[1].map(v => v.value).join(''), flags: data[0].value.slice(1, -3) }); }, symbols: [{ token: "REGEX_DEFSTART" }, "T_REGEX.RPT0Nx1", { token: "REGEX_DEFEND" }] }
39
+ ],
40
+ "T_REGEX.RPT0Nx1": [
41
+ { name: "T_REGEX.RPT0Nx1", symbols: [] },
42
+ { name: "T_REGEX.RPT0Nx1", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["T_REGEX.RPT0Nx1", { token: "T_REGEX" }] }
43
+ ],
44
+ T_SECTWORD: [
45
+ { name: "T_SECTWORD", postprocess: ({ data }) => { return (data[0].value.substring(1, data[0].value.length - 1).trim()); }, symbols: [{ token: "T_SECTWORD" }] }
46
+ ],
47
+ T_STRING: [
48
+ { name: "T_STRING", postprocess: ({ data }) => { return (JSON.parse(data[0].value)); }, symbols: [{ token: "T_STRING" }] }
49
+ ],
50
+ T_WORD: [
51
+ { name: "T_WORD", postprocess: ({ data }) => { return (data[0].value); }, symbols: [{ token: "T_WORD" }] }
52
+ ],
53
+ _: [
54
+ { name: "_", postprocess: ({ data }) => { return (null); }, symbols: ["_.RPT0Nx1"] }
55
+ ],
56
+ "_.RPT0Nx1": [
57
+ { name: "_.RPT0Nx1", symbols: [] },
58
+ { name: "_.RPT0Nx1", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["_.RPT0Nx1", "_.RPT0Nx1.SUBx1"] }
59
+ ],
60
+ "_.RPT0Nx1.SUBx1": [
61
+ { name: "_.RPT0Nx1.SUBx1", symbols: [{ token: "T_WS" }] },
62
+ { name: "_.RPT0Nx1.SUBx1", symbols: [{ token: "T_COMMENT" }] }
63
+ ],
64
+ __: [
65
+ { name: "__", postprocess: ({ data }) => { return (null); }, symbols: ["__.RPT1Nx1"] }
66
+ ],
67
+ "__.RPT1Nx1": [
68
+ { name: "__.RPT1Nx1", symbols: ["__.RPT1Nx1.SUBx1"] },
69
+ { name: "__.RPT1Nx1", postprocess: ({ data }) => data[0].concat([data[1]]), symbols: ["__.RPT1Nx1", "__.RPT1Nx1.SUBx2"] }
70
+ ],
71
+ "__.RPT1Nx1.SUBx1": [
72
+ { name: "__.RPT1Nx1.SUBx1", symbols: [{ token: "T_WS" }] },
73
+ { name: "__.RPT1Nx1.SUBx1", symbols: [{ token: "T_COMMENT" }] }
74
+ ],
75
+ "__.RPT1Nx1.SUBx2": [
76
+ { name: "__.RPT1Nx1.SUBx2", symbols: [{ token: "T_WS" }] },
77
+ { name: "__.RPT1Nx1.SUBx2", symbols: [{ token: "T_COMMENT" }] }
78
+ ],
79
+ expression: [
80
+ { name: "expression", postprocess: ({ data }) => { return ({ symbols: data[0] }); }, symbols: ["expression_symbol_list"] },
81
+ { name: "expression", postprocess: ({ data }) => { return ({ symbols: data[0], postprocess: data[2] }); }, symbols: ["expression_symbol_list", "_", "POSTPROCESSOR"] }
82
+ ],
83
+ expression_list: [
84
+ { name: "expression_list", postprocess: ({ data }) => { return ([data[0]]); }, symbols: ["expression"] },
85
+ { name: "expression_list", postprocess: ({ data }) => { return ([data[2]]); }, symbols: [{ literal: "|" }, "_", "expression"] },
86
+ { name: "expression_list", postprocess: ({ data }) => { return (data[0].concat([data[4]])); }, symbols: ["expression_list", "_", { literal: "|" }, "_", "expression"] }
87
+ ],
88
+ expression_repeater: [
89
+ { name: "expression_repeater", postprocess: ({ data }) => { return (data[0].value); }, symbols: [{ literal: "?" }] },
90
+ { name: "expression_repeater", postprocess: ({ data }) => { return (data[0].value); }, symbols: [{ literal: "+" }] },
91
+ { name: "expression_repeater", postprocess: ({ data }) => { return (data[0].value); }, symbols: [{ literal: "*" }] }
92
+ ],
93
+ expression_symbol: [
94
+ { name: "expression_symbol", postprocess: ({ data }) => { return (data[0]); }, symbols: ["expression_symbol_match"] },
95
+ { name: "expression_symbol", postprocess: ({ data }) => { return ({ ...data[0], alias: data[2] }); }, symbols: ["expression_symbol_match", { literal: "@" }, "T_WORD"] },
96
+ { name: "expression_symbol", postprocess: ({ data }) => { return ({ expression: data[0], repeat: data[1] }); }, symbols: ["expression_symbol_match", "expression_repeater"] },
97
+ { name: "expression_symbol", postprocess: ({ data }) => { return ({ expression: data[0], repeat: data[1], alias: data[4] }); }, symbols: ["expression_symbol_match", "expression_repeater", { literal: "@" }, "T_WORD"] }
98
+ ],
99
+ expression_symbol_list: [
100
+ { name: "expression_symbol_list", symbols: ["expression_symbol"] },
101
+ { name: "expression_symbol_list", postprocess: ({ data }) => { return (data[0].concat([data[2]])); }, symbols: ["expression_symbol_list", "__", "expression_symbol"] }
102
+ ],
103
+ expression_symbol_match: [
104
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return ({ rule: data[0] }); }, symbols: ["T_WORD"] },
105
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return ({ literal: data[0], insensitive: false }); }, symbols: ["T_STRING"] },
106
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return ({ literal: data[2], insensitive: true }); }, symbols: [{ literal: "i:" }, "T_STRING"] },
107
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return ({ token: data[2] }); }, symbols: [{ literal: "<" }, "_", "T_WORD", "_", { literal: ">" }] },
108
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return ({ token: data[2] }); }, symbols: [{ literal: "<" }, "_", "T_STRING", "_", { literal: ">" }] },
109
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return (data[0]); }, symbols: ["T_REGEX"] },
110
+ { name: "expression_symbol_match", postprocess: ({ data }) => { return ({ subexpression: data[2] }); }, symbols: [{ literal: "(" }, "_", "expression_list", "_", { literal: ")" }] }
111
+ ],
112
+ grammar: [
113
+ { name: "grammar", postprocess: ({ data }) => { return ({ config: Object.assign(...data[0]), rules: data[2] }); }, symbols: ["kv_list", "_", "grammar_rule_list"] },
114
+ { name: "grammar", postprocess: ({ data }) => { return ({ rules: data[0] }); }, symbols: ["grammar_rule_list"] }
115
+ ],
116
+ grammar_rule: [
117
+ { name: "grammar_rule", postprocess: ({ data }) => { return ({ name: data[0], expressions: data[2] }); }, symbols: ["grammar_rule_name", "_", "expression_list"] },
118
+ { name: "grammar_rule", postprocess: ({ data }) => { return ({ name: data[0], expressions: data[4], postprocess: data[2] }); }, symbols: ["grammar_rule_name", "__", "POSTPROCESSOR", "_", "expression_list"] }
119
+ ],
120
+ grammar_rule_list: [
121
+ { name: "grammar_rule_list", postprocess: ({ data }) => { return ([data[0]]); }, symbols: ["grammar_rule"] },
122
+ { name: "grammar_rule_list", postprocess: ({ data }) => { return ([data[0]].concat(data[2])); }, symbols: ["grammar_rule", "_", "grammar_rule_list"] }
123
+ ],
124
+ grammar_rule_name: [
125
+ { name: "grammar_rule_name", postprocess: ({ data }) => { return (data[0]); }, symbols: ["T_SECTWORD"] }
126
+ ],
127
+ kv: [
128
+ { name: "kv", postprocess: ({ data }) => { return ({ [data[0]]: data[4][0] }); }, symbols: ["T_WORD", "_", { literal: ":" }, "_", "kv.SUBx1"] }
129
+ ],
130
+ "kv.SUBx1": [
131
+ { name: "kv.SUBx1", symbols: ["T_WORD"] },
132
+ { name: "kv.SUBx1", symbols: ["T_STRING"] },
133
+ { name: "kv.SUBx1", symbols: ["T_INTEGER"] },
134
+ { name: "kv.SUBx1", symbols: ["T_JS"] }
135
+ ],
136
+ kv_list: [
137
+ { name: "kv_list", postprocess: ({ data }) => { return (data); }, symbols: ["kv"] },
138
+ { name: "kv_list", postprocess: ({ data }) => { return ([data[0]].concat(data[2])); }, symbols: ["kv", "_", "kv_list"] }
139
+ ],
140
+ lexer: [
141
+ { name: "lexer", postprocess: ({ data }) => { return (data[0].concat({ states: data[2] })); }, symbols: ["kv_list", "_", "state_list"] },
142
+ { name: "lexer", postprocess: ({ data }) => { return ([{ states: data[0] }]); }, symbols: ["state_list"] }
143
+ ],
144
+ main: [
145
+ { name: "main", postprocess: ({ data }) => { return (data[1]); }, symbols: ["_", "section_list", "_"] }
146
+ ],
147
+ section: [
148
+ { name: "section", postprocess: ({ data }) => { return ({ config: Object.assign(...data[4]) }); }, symbols: [{ literal: "config" }, "_", { literal: "{" }, "_", "kv_list", "_", { literal: "}" }] },
149
+ { name: "section", postprocess: ({ data }) => { return ({ import: data[6] }); }, symbols: [{ literal: "import" }, "_", { literal: "*" }, "_", { literal: "from" }, "__", "T_WORD", "_", { literal: ";" }] },
150
+ { name: "section", postprocess: ({ data }) => { return ({ import: data[6], path: true }); }, symbols: [{ literal: "import" }, "_", { literal: "*" }, "_", { literal: "from" }, "__", "T_STRING", "_", { literal: ";" }] },
151
+ { name: "section", postprocess: ({ data }) => { return ({ import: data[10], alias: data[6] }); }, symbols: [{ literal: "import" }, "_", { literal: "*" }, "_", { literal: "as" }, "_", "T_WORD", "_", { literal: "from" }, "__", "T_WORD", "_", { literal: ";" }] },
152
+ { name: "section", postprocess: ({ data }) => { return ({ import: data[10], path: true, alias: data[6] }); }, symbols: [{ literal: "import" }, "_", { literal: "*" }, "_", { literal: "as" }, "_", "T_WORD", "_", { literal: "from" }, "__", "T_STRING", "_", { literal: ";" }] },
153
+ { name: "section", postprocess: ({ data }) => { return ({ lexer: Object.assign(...data[4]) }); }, symbols: [{ literal: "lexer" }, "_", { literal: "{" }, "_", "lexer", "_", { literal: "}" }] },
154
+ { name: "section", postprocess: ({ data }) => { return ({ grammar: data[4] }); }, symbols: [{ literal: "grammar" }, "_", { literal: "{" }, "_", "grammar", "_", { literal: "}" }] },
155
+ { name: "section", postprocess: ({ data }) => { return ({ lifecycle: data[2], js: data[4] }); }, symbols: [/on/, { literal: ":" }, "T_WORD", "_", "T_JS"] },
156
+ { name: "section", postprocess: ({ data }) => { return ({ lifecycle: data[2], js: data[4], path: true }); }, symbols: [/on/, { literal: ":" }, "T_WORD", "_", "T_STRING"] }
157
+ ],
158
+ section_list: [
159
+ { name: "section_list", postprocess: ({ data }) => { return ([data[0]]); }, symbols: ["section"] },
160
+ { name: "section_list", postprocess: ({ data }) => { return ([data[0]].concat(data[2])); }, symbols: ["section", "__", "section_list"] }
161
+ ],
162
+ state: [
163
+ { name: "state", postprocess: ({ data }) => { return ({ name: data[0], state: data[2] }); }, symbols: ["T_SECTWORD", "_", "state_definition"] }
164
+ ],
165
+ state_config: [
166
+ { name: "state_config", postprocess: ({ data }) => { return ({ [data[0]]: Object.assign(...data[4]) }); }, symbols: ["T_WORD", "_", { literal: ":" }, "_", "token_definition_list", "_", { literal: ";" }] }
167
+ ],
168
+ state_config_list: [
169
+ { name: "state_config_list", postprocess: ({ data }) => { return (data[0]); }, symbols: ["state_config"] },
170
+ { name: "state_config_list", postprocess: ({ data }) => { return (Object.assign(data[0], data[2])); }, symbols: ["state_config", "_", "state_config_list"] }
171
+ ],
172
+ state_definition: [
173
+ { name: "state_definition", postprocess: ({ data }) => { return (Object.assign(data[0], { rules: data[2] })); }, symbols: ["state_config_list", "_", "token_list"] },
174
+ { name: "state_definition", postprocess: ({ data }) => { return ({ rules: data[0] }); }, symbols: ["token_list"] },
175
+ { name: "state_definition", postprocess: ({ data }) => { return ({ config: Object.assign(...data[4]), span: data[6] }); }, symbols: [{ literal: "span" }, "_", { literal: "{" }, "_", "kv_list", "_", "state_list", "_", { literal: "}" }] },
176
+ { name: "state_definition", postprocess: ({ data }) => { return ({ span: data[4] }); }, symbols: [{ literal: "span" }, "_", { literal: "{" }, "_", "state_list", "_", { literal: "}" }] }
177
+ ],
178
+ state_list: [
179
+ { name: "state_list", postprocess: ({ data }) => { return ([data[0]]); }, symbols: ["state"] },
180
+ { name: "state_list", postprocess: ({ data }) => { return ([data[0]].concat(data[2])); }, symbols: ["state", "_", "state_list"] }
181
+ ],
182
+ string_list: [
183
+ { name: "string_list", postprocess: ({ data }) => { return ([data[0]]); }, symbols: ["T_STRING"] },
184
+ { name: "string_list", postprocess: ({ data }) => { return ([data[0]].concat(data[4])); }, symbols: ["T_STRING", "_", { literal: "," }, "_", "string_list"] }
185
+ ],
186
+ token: [
187
+ { name: "token", postprocess: ({ data }) => { return ({ import: data[4] }); }, symbols: [{ literal: "-" }, "_", { literal: "import" }, "_", "word_list"] },
188
+ { name: "token", postprocess: ({ data }) => { return (Object.assign(...data[2])); }, symbols: [{ literal: "-" }, "_", "token_definition_list"] }
189
+ ],
190
+ token_definition: [
191
+ { name: "token_definition", postprocess: ({ data }) => { return ({ open: data[2] }); }, symbols: [{ literal: "open" }, "_", "T_STRING"] },
192
+ { name: "token_definition", postprocess: ({ data }) => { return ({ close: data[2] }); }, symbols: [{ literal: "close" }, "_", "T_STRING"] },
193
+ { name: "token_definition", postprocess: ({ data }) => { return ({ tag: data[2] }); }, symbols: [{ literal: "tag" }, "_", "string_list"] },
194
+ { name: "token_definition", postprocess: ({ data }) => { return ({ when: data[2] }); }, symbols: [{ literal: "when" }, "_", "T_STRING"] },
195
+ { name: "token_definition", postprocess: ({ data }) => { return ({ when: data[2] }); }, symbols: [{ literal: "when" }, "_", "T_REGEX"] },
196
+ { name: "token_definition", postprocess: ({ data }) => { return ({ when: data[2], before: true }); }, symbols: [{ literal: "before" }, "_", "T_STRING"] },
197
+ { name: "token_definition", postprocess: ({ data }) => { return ({ when: data[2], before: true }); }, symbols: [{ literal: "before" }, "_", "T_REGEX"] },
198
+ { name: "token_definition", postprocess: ({ data }) => { return ({ when: data[2], skip: true }); }, symbols: [{ literal: "skip" }, "_", "T_STRING"] },
199
+ { name: "token_definition", postprocess: ({ data }) => { return ({ when: data[2], skip: true }); }, symbols: [{ literal: "skip" }, "_", "T_REGEX"] },
200
+ { name: "token_definition", postprocess: ({ data }) => { return ({ stay: true }); }, symbols: [{ literal: "stay" }] },
201
+ { name: "token_definition", postprocess: ({ data }) => { return ({ pop: 1 }); }, symbols: [{ literal: "pop" }] },
202
+ { name: "token_definition", postprocess: ({ data }) => { return ({ pop: parseInt(data[2]) }); }, symbols: [{ literal: "pop" }, "_", "T_INTEGER"] },
203
+ { name: "token_definition", postprocess: ({ data }) => { return ({ pop: "all" }); }, symbols: [{ literal: "pop" }, "_", { literal: "all" }] },
204
+ { name: "token_definition", postprocess: ({ data }) => { return ({ highlight: data[2] }); }, symbols: [{ literal: "highlight" }, "_", "T_STRING"] },
205
+ { name: "token_definition", postprocess: ({ data }) => { return ({ embed: data[2] }); }, symbols: [{ literal: "embed" }, "_", "T_STRING"] },
206
+ { name: "token_definition", postprocess: ({ data }) => { return ({ unembed: true }); }, symbols: [{ literal: "unembed" }] },
207
+ { name: "token_definition", postprocess: ({ data }) => { return ({ inset: 1 }); }, symbols: [{ literal: "inset" }] },
208
+ { name: "token_definition", postprocess: ({ data }) => { return ({ inset: parseInt(data[2]) }); }, symbols: [{ literal: "inset" }, "_", "T_INTEGER"] },
209
+ { name: "token_definition", postprocess: ({ data }) => { return ({ set: data[2] }); }, symbols: [{ literal: "set" }, "_", "T_WORD"] },
210
+ { name: "token_definition", postprocess: ({ data }) => { return ({ goto: data[2] }); }, symbols: [{ literal: "goto" }, "_", "T_WORD"] },
211
+ { name: "token_definition", postprocess: ({ data }) => { return ({ type: data[2] }); }, symbols: [{ literal: "type" }, "_", "T_STRING"] }
212
+ ],
213
+ token_definition_list: [
214
+ { name: "token_definition_list", postprocess: ({ data }) => { return (data); }, symbols: ["token_definition"] },
215
+ { name: "token_definition_list", postprocess: ({ data }) => { return ([data[0]].concat(data[2])); }, symbols: ["token_definition", "_", "token_definition_list"] }
216
+ ],
217
+ token_list: [
218
+ { name: "token_list", postprocess: ({ data }) => { return (data); }, symbols: ["token"] },
219
+ { name: "token_list", postprocess: ({ data }) => { return ([data[0]].concat(data[2])); }, symbols: ["token", "_", "token_list"] }
220
+ ],
221
+ word_list: [
222
+ { name: "word_list", postprocess: ({ data }) => { return ([data[0]]); }, symbols: ["T_WORD"] },
223
+ { name: "word_list", postprocess: ({ data }) => { return ([data[0]].concat(data[4])); }, symbols: ["T_WORD", "_", { literal: "," }, "_", "word_list"] }
224
+ ]
225
+ },
226
+ start: "main"
227
+ },
228
+ lexer: {
229
+ start: "main",
230
+ states: {
231
+ comment: {
232
+ regex: /(?:(?:(\/\/[^\n]*)))/ym,
233
+ rules: [
234
+ { highlight: "comment", tag: ["T_COMMENT"], when: /\/\/[^\n]*/ }
235
+ ]
236
+ },
237
+ config: {
238
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
239
+ rules: [
240
+ { tag: ["T_WS"], when: /\s+/ },
241
+ { set: "config.span", when: "{" }
242
+ ]
243
+ },
244
+ "config.span": {
245
+ regex: /(?:(?:(\/\/[^\n]*))|(?:("(?:\\.|[^"\\\r\n])*"))|(?:(\s+))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:((?::)))|(?:(\d+))|(?:((?:;)))|(?:((?:\}))))/ym,
246
+ rules: [
247
+ { highlight: "comment", tag: ["T_COMMENT"], when: /\/\/[^\n]*/ },
248
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ },
249
+ { tag: ["T_WS"], when: /\s+/ },
250
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
251
+ { highlight: "keyword", when: ":" },
252
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ },
253
+ { when: ";" },
254
+ { pop: 1, when: "}" }
255
+ ]
256
+ },
257
+ "config.start": {
258
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
259
+ rules: [
260
+ { tag: ["T_WS"], when: /\s+/ },
261
+ { set: "config.span", when: "{" }
262
+ ]
263
+ },
264
+ "config.stop": {
265
+ regex: /(?:(?:((?:\}))))/ym,
266
+ rules: [
267
+ { pop: 1, when: "}" }
268
+ ]
269
+ },
270
+ grammar: {
271
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
272
+ rules: [
273
+ { tag: ["T_WS"], when: /\s+/ },
274
+ { set: "grammar.span", when: "{" }
275
+ ]
276
+ },
277
+ "grammar.span": {
278
+ regex: /(?:(?:(\/\/[^\n]*))|(?:(\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]))|(?:((?:=>)))|(?:(\s+))|(?:((?:i:)))|(?:(r[gmiuy]*:\{))|(?:((?:\?)))|(?:((?:\+)))|(?:((?:\*)))|(?:("(?:\\.|[^"\\\r\n])*"))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:((?::)))|(?:(\d+))|(?:((?:;)))|(?:((?:@)))|(?:((?:,)))|(?:((?:\|)))|(?:((?:\()))|(?:((?:\))))|(?:((?:<)))|(?:((?:>)))|(?:((?:\->)))|(?:((?:\$)))|(?:((?:\-)))|(?:((?:\}))))/ym,
279
+ rules: [
280
+ { highlight: "comment", tag: ["T_COMMENT"], when: /\/\/[^\n]*/ },
281
+ { highlight: "type.identifier", tag: ["T_SECTWORD"], when: /\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]/ },
282
+ { goto: "js_template_inner", highlight: "annotation", when: "=>" },
283
+ { tag: ["T_WS"], when: /\s+/ },
284
+ { highlight: "constant", when: "i:" },
285
+ { goto: "regex.span", highlight: "annotation", tag: ["REGEX_DEFSTART"], when: /r[gmiuy]*:\{/ },
286
+ { when: "?" },
287
+ { when: "+" },
288
+ { when: "*" },
289
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ },
290
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
291
+ { highlight: "keyword", when: ":" },
292
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ },
293
+ { when: ";" },
294
+ { highlight: "keyword", when: "@" },
295
+ { when: "," },
296
+ { highlight: "keyword", when: "|" },
297
+ { when: "(" },
298
+ { when: ")" },
299
+ { when: "<" },
300
+ { when: ">" },
301
+ { highlight: "keyword", when: "->" },
302
+ { when: "$" },
303
+ { when: "-" },
304
+ { pop: 1, when: "}" }
305
+ ]
306
+ },
307
+ "grammar.start": {
308
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
309
+ rules: [
310
+ { tag: ["T_WS"], when: /\s+/ },
311
+ { set: "grammar.span", when: "{" }
312
+ ]
313
+ },
314
+ "grammar.stop": {
315
+ regex: /(?:(?:((?:\}))))/ym,
316
+ rules: [
317
+ { pop: 1, when: "}" }
318
+ ]
319
+ },
320
+ insensitive: {
321
+ regex: /(?:(?:((?:i:))))/ym,
322
+ rules: [
323
+ { highlight: "constant", when: "i:" }
324
+ ]
325
+ },
326
+ integer: {
327
+ regex: /(?:(?:(\d+)))/ym,
328
+ rules: [
329
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ }
330
+ ]
331
+ },
332
+ js_body: {
333
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
334
+ rules: [
335
+ { tag: ["T_WS"], when: /\s+/ },
336
+ { highlight: "annotation", set: "js_literal", tag: ["T_JSBODY"], when: "{" }
337
+ ]
338
+ },
339
+ js_literal: {
340
+ regex: /(?:(?:("(?:\\.|[^"\\\r\n])*"))|(?:('(?:\\.|[^'\\\r\n])*'))|(?:(`(?:\\.|[^`\\])*`))|(?:(\/(?:\\.|[^/\\\r\n])+\/[gmiyu]*))|(?:(\/\/[^\n]*))|(?:(\/\*.*\*\/))|(?:((?:\{)))|(?:((?:\})))|(?:((?:\()))|(?:((?:\))))|(?:((?:\[)))|(?:((?:\]))))/gm,
341
+ rules: [
342
+ { tag: ["T_JSBODY"], when: /"(?:\\.|[^"\\\r\n])*"/ },
343
+ { tag: ["T_JSBODY"], when: /'(?:\\.|[^'\\\r\n])*'/ },
344
+ { tag: ["T_JSBODY"], when: /`(?:\\.|[^`\\])*`/ },
345
+ { tag: ["T_JSBODY"], when: /\/(?:\\.|[^/\\\r\n])+\/[gmiyu]*/ },
346
+ { tag: ["T_JSBODY"], when: /\/\/[^\n]*/ },
347
+ { tag: ["T_JSBODY"], when: /\/\*.*\*\// },
348
+ { goto: "js_literal", highlight: "annotation", tag: ["T_JSBODY"], when: "{" },
349
+ { highlight: "annotation", pop: 1, tag: ["T_JSBODY"], when: "}" },
350
+ { goto: "js_literal", highlight: "annotation", tag: ["T_JSBODY"], when: "(" },
351
+ { highlight: "annotation", pop: 1, tag: ["T_JSBODY"], when: ")" },
352
+ { goto: "js_literal", highlight: "annotation", tag: ["T_JSBODY"], when: "[" },
353
+ { highlight: "annotation", pop: 1, tag: ["T_JSBODY"], when: "]" }
354
+ ],
355
+ unmatched: { tag: ["T_JSBODY"] }
356
+ },
357
+ js_template: {
358
+ regex: /(?:(?:((?:=>))))/ym,
359
+ rules: [
360
+ { goto: "js_template_inner", highlight: "annotation", when: "=>" }
361
+ ]
362
+ },
363
+ js_template_inner: {
364
+ regex: /(?:(?:(\s+))|(?:((?:\$\{)))|(?:((?:\()))|(?:((?:\{)))|(?:((?:\[))))/ym,
365
+ rules: [
366
+ { tag: ["T_WS"], when: /\s+/ },
367
+ { highlight: "annotation", set: "js_literal", when: "${" },
368
+ { highlight: "annotation", set: "js_literal", when: "(" },
369
+ { highlight: "annotation", set: "js_literal", when: "{" },
370
+ { highlight: "annotation", set: "js_literal", when: "[" }
371
+ ]
372
+ },
373
+ jsignore: {
374
+ regex: /(?:(?:("(?:\\.|[^"\\\r\n])*"))|(?:('(?:\\.|[^'\\\r\n])*'))|(?:(`(?:\\.|[^`\\])*`))|(?:(\/(?:\\.|[^/\\\r\n])+\/[gmiyu]*))|(?:(\/\/[^\n]*))|(?:(\/\*.*\*\/)))/ym,
375
+ rules: [
376
+ { tag: ["T_JSBODY"], when: /"(?:\\.|[^"\\\r\n])*"/ },
377
+ { tag: ["T_JSBODY"], when: /'(?:\\.|[^'\\\r\n])*'/ },
378
+ { tag: ["T_JSBODY"], when: /`(?:\\.|[^`\\])*`/ },
379
+ { tag: ["T_JSBODY"], when: /\/(?:\\.|[^/\\\r\n])+\/[gmiyu]*/ },
380
+ { tag: ["T_JSBODY"], when: /\/\/[^\n]*/ },
381
+ { tag: ["T_JSBODY"], when: /\/\*.*\*\// }
382
+ ]
383
+ },
384
+ kv: {
385
+ regex: /(?:(?:("(?:\\.|[^"\\\r\n])*"))|(?:(\s+))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:((?::)))|(?:(\d+))|(?:((?:;))))/ym,
386
+ rules: [
387
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ },
388
+ { tag: ["T_WS"], when: /\s+/ },
389
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
390
+ { highlight: "keyword", when: ":" },
391
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ },
392
+ { when: ";" }
393
+ ]
394
+ },
395
+ l_abracketl: {
396
+ regex: /(?:(?:((?:<))))/ym,
397
+ rules: [
398
+ { when: "<" }
399
+ ]
400
+ },
401
+ l_abracketr: {
402
+ regex: /(?:(?:((?:>))))/ym,
403
+ rules: [
404
+ { when: ">" }
405
+ ]
406
+ },
407
+ l_arrow: {
408
+ regex: /(?:(?:((?:\->))))/ym,
409
+ rules: [
410
+ { highlight: "keyword", when: "->" }
411
+ ]
412
+ },
413
+ l_at: {
414
+ regex: /(?:(?:((?:@))))/ym,
415
+ rules: [
416
+ { highlight: "keyword", when: "@" }
417
+ ]
418
+ },
419
+ l_colon: {
420
+ regex: /(?:(?:((?::))))/ym,
421
+ rules: [
422
+ { highlight: "keyword", when: ":" }
423
+ ]
424
+ },
425
+ l_comma: {
426
+ regex: /(?:(?:((?:,))))/ym,
427
+ rules: [
428
+ { when: "," }
429
+ ]
430
+ },
431
+ l_dash: {
432
+ regex: /(?:(?:((?:\-))))/ym,
433
+ rules: [
434
+ { when: "-" }
435
+ ]
436
+ },
437
+ l_dsign: {
438
+ regex: /(?:(?:((?:\$))))/ym,
439
+ rules: [
440
+ { when: "$" }
441
+ ]
442
+ },
443
+ l_parenl: {
444
+ regex: /(?:(?:((?:\())))/ym,
445
+ rules: [
446
+ { when: "(" }
447
+ ]
448
+ },
449
+ l_parenr: {
450
+ regex: /(?:(?:((?:\)))))/ym,
451
+ rules: [
452
+ { when: ")" }
453
+ ]
454
+ },
455
+ l_pipe: {
456
+ regex: /(?:(?:((?:\|))))/ym,
457
+ rules: [
458
+ { highlight: "keyword", when: "|" }
459
+ ]
460
+ },
461
+ l_plus: {
462
+ regex: /(?:(?:((?:\+))))/ym,
463
+ rules: [
464
+ { when: "+" }
465
+ ]
466
+ },
467
+ l_qmark: {
468
+ regex: /(?:(?:((?:\?))))/ym,
469
+ rules: [
470
+ { when: "?" }
471
+ ]
472
+ },
473
+ l_scolon: {
474
+ regex: /(?:(?:((?:;))))/ym,
475
+ rules: [
476
+ { when: ";" }
477
+ ]
478
+ },
479
+ l_star: {
480
+ regex: /(?:(?:((?:\*))))/ym,
481
+ rules: [
482
+ { when: "*" }
483
+ ]
484
+ },
485
+ lexer: {
486
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
487
+ rules: [
488
+ { tag: ["T_WS"], when: /\s+/ },
489
+ { set: "lexer.span", when: "{" }
490
+ ]
491
+ },
492
+ "lexer.span": {
493
+ regex: /(?:(?:(\s+))|(?:(\/\/[^\n]*))|(?:(\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]))|(?:(r[gmiuy]*:\{))|(?:((?:,)))|(?:((?:\->)))|(?:((?:\-)))|(?:("(?:\\.|[^"\\\r\n])*"))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:((?::)))|(?:(\d+))|(?:((?:;)))|(?:((?:\{)))|(?:((?:\}))))/ym,
494
+ rules: [
495
+ { tag: ["T_WS"], when: /\s+/ },
496
+ { highlight: "comment", tag: ["T_COMMENT"], when: /\/\/[^\n]*/ },
497
+ { highlight: "type.identifier", tag: ["T_SECTWORD"], when: /\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]/ },
498
+ { goto: "regex.span", highlight: "annotation", tag: ["REGEX_DEFSTART"], when: /r[gmiuy]*:\{/ },
499
+ { when: "," },
500
+ { highlight: "keyword", when: "->" },
501
+ { when: "-" },
502
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ },
503
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
504
+ { highlight: "keyword", when: ":" },
505
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ },
506
+ { when: ";" },
507
+ { goto: "lexer_span.span", when: "{" },
508
+ { pop: 1, when: "}" }
509
+ ]
510
+ },
511
+ "lexer.start": {
512
+ regex: /(?:(?:(\s+))|(?:((?:\{))))/ym,
513
+ rules: [
514
+ { tag: ["T_WS"], when: /\s+/ },
515
+ { set: "lexer.span", when: "{" }
516
+ ]
517
+ },
518
+ "lexer.stop": {
519
+ regex: /(?:(?:((?:\}))))/ym,
520
+ rules: [
521
+ { pop: 1, when: "}" }
522
+ ]
523
+ },
524
+ lexer_span: {
525
+ regex: /(?:(?:((?:\{))))/ym,
526
+ rules: [
527
+ { goto: "lexer_span.span", when: "{" }
528
+ ]
529
+ },
530
+ "lexer_span.span": {
531
+ regex: /(?:(?:(\s+))|(?:(\/\/[^\n]*))|(?:(\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]))|(?:(r[gmiuy]*:\{))|(?:((?:,)))|(?:((?:\->)))|(?:((?:\-)))|(?:("(?:\\.|[^"\\\r\n])*"))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:((?::)))|(?:(\d+))|(?:((?:;)))|(?:((?:\}))))/ym,
532
+ rules: [
533
+ { tag: ["T_WS"], when: /\s+/ },
534
+ { highlight: "comment", tag: ["T_COMMENT"], when: /\/\/[^\n]*/ },
535
+ { highlight: "type.identifier", tag: ["T_SECTWORD"], when: /\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]/ },
536
+ { goto: "regex.span", highlight: "annotation", tag: ["REGEX_DEFSTART"], when: /r[gmiuy]*:\{/ },
537
+ { when: "," },
538
+ { highlight: "keyword", when: "->" },
539
+ { when: "-" },
540
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ },
541
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
542
+ { highlight: "keyword", when: ":" },
543
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ },
544
+ { when: ";" },
545
+ { pop: 1, when: "}" }
546
+ ]
547
+ },
548
+ "lexer_span.start": {
549
+ regex: /(?:(?:((?:\{))))/ym,
550
+ rules: [
551
+ { goto: "lexer_span.span", when: "{" }
552
+ ]
553
+ },
554
+ "lexer_span.stop": {
555
+ regex: /(?:(?:((?:\}))))/ym,
556
+ rules: [
557
+ { pop: 1, when: "}" }
558
+ ]
559
+ },
560
+ lifecycle: {
561
+ regex: /(?:(?:(on(?![a-zA-Z\d_]))))/ym,
562
+ rules: [
563
+ { goto: "lifecycle.span", highlight: "tag", tag: ["T_WORD"], when: /on(?![a-zA-Z\d_])/ }
564
+ ]
565
+ },
566
+ "lifecycle.span": {
567
+ regex: /(?:(?:(\s+))|(?:((?:\{)))|(?:((?::)))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:([\'"`])))/ym,
568
+ rules: [
569
+ { tag: ["T_WS"], when: /\s+/ },
570
+ { highlight: "annotation", set: "js_literal", tag: ["T_JSBODY"], when: "{" },
571
+ { highlight: "keyword", when: ":" },
572
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
573
+ { before: true, pop: 1, when: /[\'"`]/ }
574
+ ]
575
+ },
576
+ "lifecycle.start": {
577
+ regex: /(?:(?:(on(?![a-zA-Z\d_]))))/ym,
578
+ rules: [
579
+ { goto: "lifecycle.span", highlight: "tag", tag: ["T_WORD"], when: /on(?![a-zA-Z\d_])/ }
580
+ ]
581
+ },
582
+ "lifecycle.stop": {
583
+ regex: /(?:(?:([\'"`])))/ym,
584
+ rules: [
585
+ { before: true, pop: 1, when: /[\'"`]/ }
586
+ ]
587
+ },
588
+ main: {
589
+ regex: /(?:(?:("(?:\\.|[^"\\\r\n])*"))|(?:(\s+))|(?:(\/\/[^\n]*))|(?:((?:\*)))|(?:(on(?![a-zA-Z\d_])))|(?:(lexer(?![a-zA-Z\d_])))|(?:(grammar(?![a-zA-Z\d_])))|(?:(config(?![a-zA-Z\d_])))|(?:([a-zA-Z_][a-zA-Z_\d]*))|(?:((?::)))|(?:(\d+))|(?:((?:;))))/ym,
590
+ rules: [
591
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ },
592
+ { tag: ["T_WS"], when: /\s+/ },
593
+ { highlight: "comment", tag: ["T_COMMENT"], when: /\/\/[^\n]*/ },
594
+ { when: "*" },
595
+ { goto: "lifecycle.span", highlight: "tag", tag: ["T_WORD"], when: /on(?![a-zA-Z\d_])/ },
596
+ { goto: "lexer", highlight: "tag", tag: ["T_WORD"], when: /lexer(?![a-zA-Z\d_])/ },
597
+ { goto: "grammar", highlight: "tag", tag: ["T_WORD"], when: /grammar(?![a-zA-Z\d_])/ },
598
+ { goto: "config", highlight: "tag", tag: ["T_WORD"], when: /config(?![a-zA-Z\d_])/ },
599
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ },
600
+ { highlight: "keyword", when: ":" },
601
+ { highlight: "number", tag: ["T_INTEGER"], when: /\d+/ },
602
+ { when: ";" }
603
+ ]
604
+ },
605
+ regex: {
606
+ regex: /(?:(?:(r[gmiuy]*:\{)))/ym,
607
+ rules: [
608
+ { goto: "regex.span", highlight: "annotation", tag: ["REGEX_DEFSTART"], when: /r[gmiuy]*:\{/ }
609
+ ]
610
+ },
611
+ "regex.span": {
612
+ regex: /(?:(?:(\\.))|(?:((?:\[\^)))|(?:((?:\[)))|(?:(\{[\d\s,]+\}))|(?:([?!:^$+*.|]))|(?:([()]))|(?:([^\}]+?))|(?:((?:\}))))/ym,
613
+ rules: [
614
+ { highlight: "string.escape", tag: ["T_REGEX"], when: /\\./ },
615
+ { goto: "regex_charclass.span", highlight: "regexp", tag: ["T_REGEX"], when: "[^" },
616
+ { goto: "regex_charclass.span", highlight: "regexp", tag: ["T_REGEX"], when: "[" },
617
+ { highlight: "number", tag: ["T_REGEX"], when: /\{[\d\s,]+\}/ },
618
+ { highlight: "keyword", tag: ["T_REGEX"], when: /[?!:^$+*.|]/ },
619
+ { highlight: "delimiter", tag: ["T_REGEX"], when: /[()]/ },
620
+ { highlight: "string", tag: ["T_REGEX"], when: /[^\}]+?/ },
621
+ { highlight: "annotation", pop: 1, tag: ["REGEX_DEFEND"], when: "}" }
622
+ ]
623
+ },
624
+ "regex.start": {
625
+ regex: /(?:(?:(r[gmiuy]*:\{)))/ym,
626
+ rules: [
627
+ { goto: "regex.span", highlight: "annotation", tag: ["REGEX_DEFSTART"], when: /r[gmiuy]*:\{/ }
628
+ ]
629
+ },
630
+ "regex.stop": {
631
+ regex: /(?:(?:((?:\}))))/ym,
632
+ rules: [
633
+ { highlight: "annotation", pop: 1, tag: ["REGEX_DEFEND"], when: "}" }
634
+ ]
635
+ },
636
+ regex_charclass: {
637
+ regex: /(?:(?:((?:\[\^)))|(?:((?:\[))))/ym,
638
+ rules: [
639
+ { goto: "regex_charclass.span", highlight: "regexp", tag: ["T_REGEX"], when: "[^" },
640
+ { goto: "regex_charclass.span", highlight: "regexp", tag: ["T_REGEX"], when: "[" }
641
+ ]
642
+ },
643
+ "regex_charclass.span": {
644
+ regex: /(?:(?:(\\.))|(?:((?:\-)))|(?:([^\]]+?))|(?:((?:\]))))/ym,
645
+ rules: [
646
+ { highlight: "string.escape", tag: ["T_REGEX"], when: /\\./ },
647
+ { highlight: "keyword", tag: ["T_REGEX"], when: "-" },
648
+ { highlight: "regexp", tag: ["T_REGEX"], when: /[^\]]+?/ },
649
+ { highlight: "regexp", pop: 1, tag: ["T_REGEX"], when: "]" }
650
+ ]
651
+ },
652
+ "regex_charclass.start": {
653
+ regex: /(?:(?:((?:\[\^)))|(?:((?:\[))))/ym,
654
+ rules: [
655
+ { goto: "regex_charclass.span", highlight: "regexp", tag: ["T_REGEX"], when: "[^" },
656
+ { goto: "regex_charclass.span", highlight: "regexp", tag: ["T_REGEX"], when: "[" }
657
+ ]
658
+ },
659
+ "regex_charclass.stop": {
660
+ regex: /(?:(?:((?:\]))))/ym,
661
+ rules: [
662
+ { highlight: "regexp", pop: 1, tag: ["T_REGEX"], when: "]" }
663
+ ]
664
+ },
665
+ section_word: {
666
+ regex: /(?:(?:(\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\])))/ym,
667
+ rules: [
668
+ { highlight: "type.identifier", tag: ["T_SECTWORD"], when: /\[\s*[a-zA-Z_][a-zA-Z_\d]*\s*\]/ }
669
+ ]
670
+ },
671
+ string: {
672
+ regex: /(?:(?:("(?:\\.|[^"\\\r\n])*")))/ym,
673
+ rules: [
674
+ { highlight: "string", tag: ["T_STRING"], when: /"(?:\\.|[^"\\\r\n])*"/ }
675
+ ]
676
+ },
677
+ word: {
678
+ regex: /(?:(?:([a-zA-Z_][a-zA-Z_\d]*)))/ym,
679
+ rules: [
680
+ { tag: ["T_WORD"], when: /[a-zA-Z_][a-zA-Z_\d]*/ }
681
+ ]
682
+ },
683
+ ws: {
684
+ regex: /(?:(?:(\s+)))/ym,
685
+ rules: [
686
+ { tag: ["T_WS"], when: /\s+/ }
687
+ ]
688
+ }
689
+ }
690
+ }
691
+ };
692
+ constructor() { }
693
+ }
694
+ export default grammar;
695
+ //# sourceMappingURL=v2.js.map