grammar-well 1.3.2 → 2.0.0

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