grammar-well 1.1.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 (117) hide show
  1. package/.eslintrc.cjs +14 -0
  2. package/README.md +288 -0
  3. package/bootstrap.ts +35 -0
  4. package/build/compiler/compiler.d.ts +48 -0
  5. package/build/compiler/compiler.js +227 -0
  6. package/build/compiler/compiler.js.map +1 -0
  7. package/build/compiler/generator.d.ts +23 -0
  8. package/build/compiler/generator.js +213 -0
  9. package/build/compiler/generator.js.map +1 -0
  10. package/build/compiler/import-resolver.d.ts +15 -0
  11. package/build/compiler/import-resolver.js +37 -0
  12. package/build/compiler/import-resolver.js.map +1 -0
  13. package/build/compiler/outputs/javascript.d.ts +3 -0
  14. package/build/compiler/outputs/javascript.js +29 -0
  15. package/build/compiler/outputs/javascript.js.map +1 -0
  16. package/build/compiler/outputs/json.d.ts +2 -0
  17. package/build/compiler/outputs/json.js +8 -0
  18. package/build/compiler/outputs/json.js.map +1 -0
  19. package/build/compiler/outputs/typescript.d.ts +2 -0
  20. package/build/compiler/outputs/typescript.js +108 -0
  21. package/build/compiler/outputs/typescript.js.map +1 -0
  22. package/build/grammars/gwell.d.ts +997 -0
  23. package/build/grammars/gwell.js +537 -0
  24. package/build/grammars/gwell.js.map +1 -0
  25. package/build/grammars/json.d.ts +151 -0
  26. package/build/grammars/json.js +112 -0
  27. package/build/grammars/json.js.map +1 -0
  28. package/build/grammars/number.d.ts +239 -0
  29. package/build/grammars/number.js +115 -0
  30. package/build/grammars/number.js.map +1 -0
  31. package/build/grammars/number.json +1 -0
  32. package/build/grammars/string.d.ts +116 -0
  33. package/build/grammars/string.js +50 -0
  34. package/build/grammars/string.js.map +1 -0
  35. package/build/grammars/string.json +1 -0
  36. package/build/grammars/whitespace.d.ts +51 -0
  37. package/build/grammars/whitespace.js +30 -0
  38. package/build/grammars/whitespace.js.map +1 -0
  39. package/build/grammars/whitespace.json +1 -0
  40. package/build/index.d.ts +4 -0
  41. package/build/index.js +21 -0
  42. package/build/index.js.map +1 -0
  43. package/build/lexers/character-lexer.d.ts +27 -0
  44. package/build/lexers/character-lexer.js +71 -0
  45. package/build/lexers/character-lexer.js.map +1 -0
  46. package/build/lexers/stateful-lexer.d.ts +48 -0
  47. package/build/lexers/stateful-lexer.js +309 -0
  48. package/build/lexers/stateful-lexer.js.map +1 -0
  49. package/build/lexers/token-buffer.d.ts +32 -0
  50. package/build/lexers/token-buffer.js +92 -0
  51. package/build/lexers/token-buffer.js.map +1 -0
  52. package/build/parser/algorithms/cyk.d.ts +16 -0
  53. package/build/parser/algorithms/cyk.js +58 -0
  54. package/build/parser/algorithms/cyk.js.map +1 -0
  55. package/build/parser/algorithms/earley.d.ts +48 -0
  56. package/build/parser/algorithms/earley.js +158 -0
  57. package/build/parser/algorithms/earley.js.map +1 -0
  58. package/build/parser/algorithms/lr.d.ts +10 -0
  59. package/build/parser/algorithms/lr.js +34 -0
  60. package/build/parser/algorithms/lr.js.map +1 -0
  61. package/build/parser/parser.d.ts +26 -0
  62. package/build/parser/parser.js +74 -0
  63. package/build/parser/parser.js.map +1 -0
  64. package/build/typings.d.ts +198 -0
  65. package/build/typings.js +3 -0
  66. package/build/typings.js.map +1 -0
  67. package/build/utility/general.d.ts +46 -0
  68. package/build/utility/general.js +112 -0
  69. package/build/utility/general.js.map +1 -0
  70. package/build/utility/lint.d.ts +2 -0
  71. package/build/utility/lint.js +28 -0
  72. package/build/utility/lint.js.map +1 -0
  73. package/build/utility/lr.d.ts +56 -0
  74. package/build/utility/lr.js +131 -0
  75. package/build/utility/lr.js.map +1 -0
  76. package/build/utility/text-format.d.ts +11 -0
  77. package/build/utility/text-format.js +84 -0
  78. package/build/utility/text-format.js.map +1 -0
  79. package/licenses/LICENSE.txt +165 -0
  80. package/licenses/moo.license +29 -0
  81. package/licenses/nearley.license +21 -0
  82. package/package.json +52 -0
  83. package/src/compiler/compiler.ts +239 -0
  84. package/src/compiler/generator.ts +229 -0
  85. package/src/compiler/import-resolver.ts +36 -0
  86. package/src/compiler/outputs/javascript.ts +27 -0
  87. package/src/compiler/outputs/json.ts +5 -0
  88. package/src/compiler/outputs/typescript.ts +105 -0
  89. package/src/grammars/gwell.gwell +278 -0
  90. package/src/grammars/gwell.js +539 -0
  91. package/src/grammars/gwell.json +1 -0
  92. package/src/grammars/json.gwell +75 -0
  93. package/src/grammars/json.js +121 -0
  94. package/src/grammars/json.json +1 -0
  95. package/src/grammars/number.gwell +20 -0
  96. package/src/grammars/number.js +117 -0
  97. package/src/grammars/number.json +1 -0
  98. package/src/grammars/string.gwell +15 -0
  99. package/src/grammars/string.js +52 -0
  100. package/src/grammars/string.json +1 -0
  101. package/src/grammars/whitespace.gwell +6 -0
  102. package/src/grammars/whitespace.js +32 -0
  103. package/src/grammars/whitespace.json +1 -0
  104. package/src/index.ts +4 -0
  105. package/src/lexers/character-lexer.ts +73 -0
  106. package/src/lexers/stateful-lexer.ts +335 -0
  107. package/src/lexers/token-buffer.ts +102 -0
  108. package/src/parser/algorithms/cyk.ts +74 -0
  109. package/src/parser/algorithms/earley.ts +193 -0
  110. package/src/parser/algorithms/lr.ts +37 -0
  111. package/src/parser/parser.ts +77 -0
  112. package/src/typings.ts +221 -0
  113. package/src/utility/general.ts +120 -0
  114. package/src/utility/lint.ts +26 -0
  115. package/src/utility/lr.ts +153 -0
  116. package/src/utility/text-format.ts +84 -0
  117. package/testing.ts +18 -0
@@ -0,0 +1 @@
1
+ { "state": { "grammar": { "start": "unsigned_int", "rules": { "unsigned_int$RPT1Nx1": [{ "name": "unsigned_int$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "unsigned_int$RPT1Nx1", "symbols": [{ "rule": "unsigned_int$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "unsigned_int": [{ "name": "unsigned_int", "symbols": [{ "rule": "unsigned_int$RPT1Nx1" }], "postprocess": { "template": "parseInt($0.join(\"\"))" } }], "int$RPT01x1$SUBx1": [{ "name": "int$RPT01x1$SUBx1", "symbols": [{ "literal": "-", "insensitive": false }] }, { "name": "int$RPT01x1$SUBx1", "symbols": [{ "literal": "+", "insensitive": false }] }], "int$RPT01x1": [{ "name": "int$RPT01x1", "symbols": [{ "rule": "int$RPT01x1$SUBx1" }], "postprocess": { "builtin": "first" } }, { "name": "int$RPT01x1", "symbols": [], "postprocess": { "builtin": "null" } }], "int$RPT1Nx1": [{ "name": "int$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "int$RPT1Nx1", "symbols": [{ "rule": "int$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "int": [{ "name": "int", "symbols": [{ "rule": "int$RPT01x1" }, { "rule": "int$RPT1Nx1" }], "postprocess": { "template": "$0 ? parseInt($0[0]+$1.join(\"\")) : parseInt($1.join(\"\"))" } }], "unsigned_decimal$RPT1Nx1": [{ "name": "unsigned_decimal$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "unsigned_decimal$RPT1Nx1", "symbols": [{ "rule": "unsigned_decimal$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "unsigned_decimal$RPT01x1$SUBx1$RPT1Nx1": [{ "name": "unsigned_decimal$RPT01x1$SUBx1$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "unsigned_decimal$RPT01x1$SUBx1$RPT1Nx1", "symbols": [{ "rule": "unsigned_decimal$RPT01x1$SUBx1$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "unsigned_decimal$RPT01x1$SUBx1": [{ "name": "unsigned_decimal$RPT01x1$SUBx1", "symbols": [{ "literal": ".", "insensitive": false }, { "rule": "unsigned_decimal$RPT01x1$SUBx1$RPT1Nx1" }] }], "unsigned_decimal$RPT01x1": [{ "name": "unsigned_decimal$RPT01x1", "symbols": [{ "rule": "unsigned_decimal$RPT01x1$SUBx1" }], "postprocess": { "builtin": "first" } }, { "name": "unsigned_decimal$RPT01x1", "symbols": [], "postprocess": { "builtin": "null" } }], "unsigned_decimal": [{ "name": "unsigned_decimal", "symbols": [{ "rule": "unsigned_decimal$RPT1Nx1" }, { "rule": "unsigned_decimal$RPT01x1" }], "postprocess": { "template": "parseFloat($0.join(\"\") + ($1 ? \".\"+$1[1].join(\"\") : \"\"))" } }], "decimal$RPT01x1": [{ "name": "decimal$RPT01x1", "symbols": [{ "literal": "-", "insensitive": false }], "postprocess": { "builtin": "first" } }, { "name": "decimal$RPT01x1", "symbols": [], "postprocess": { "builtin": "null" } }], "decimal$RPT1Nx1": [{ "name": "decimal$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "decimal$RPT1Nx1", "symbols": [{ "rule": "decimal$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "decimal$RPT01x2$SUBx1$RPT1Nx1": [{ "name": "decimal$RPT01x2$SUBx1$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "decimal$RPT01x2$SUBx1$RPT1Nx1", "symbols": [{ "rule": "decimal$RPT01x2$SUBx1$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "decimal$RPT01x2$SUBx1": [{ "name": "decimal$RPT01x2$SUBx1", "symbols": [{ "literal": ".", "insensitive": false }, { "rule": "decimal$RPT01x2$SUBx1$RPT1Nx1" }] }], "decimal$RPT01x2": [{ "name": "decimal$RPT01x2", "symbols": [{ "rule": "decimal$RPT01x2$SUBx1" }], "postprocess": { "builtin": "first" } }, { "name": "decimal$RPT01x2", "symbols": [], "postprocess": { "builtin": "null" } }], "decimal": [{ "name": "decimal", "symbols": [{ "rule": "decimal$RPT01x1" }, { "rule": "decimal$RPT1Nx1" }, { "rule": "decimal$RPT01x2" }], "postprocess": { "template": "parseFloat( ($0 || \"\") + $1.join(\"\") +($2 ? \".\"+$2[1].join(\"\") : \"\"))" } }], "percentage": [{ "name": "percentage", "symbols": [{ "rule": "decimal" }, { "literal": "%", "insensitive": false }], "postprocess": { "template": "$0/100" } }], "jsonfloat$RPT01x1": [{ "name": "jsonfloat$RPT01x1", "symbols": [{ "literal": "-", "insensitive": false }], "postprocess": { "builtin": "first" } }, { "name": "jsonfloat$RPT01x1", "symbols": [], "postprocess": { "builtin": "null" } }], "jsonfloat$RPT1Nx1": [{ "name": "jsonfloat$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "jsonfloat$RPT1Nx1", "symbols": [{ "rule": "jsonfloat$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "jsonfloat$RPT01x2$SUBx1$RPT1Nx1": [{ "name": "jsonfloat$RPT01x2$SUBx1$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "jsonfloat$RPT01x2$SUBx1$RPT1Nx1", "symbols": [{ "rule": "jsonfloat$RPT01x2$SUBx1$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "jsonfloat$RPT01x2$SUBx1": [{ "name": "jsonfloat$RPT01x2$SUBx1", "symbols": [{ "literal": ".", "insensitive": false }, { "rule": "jsonfloat$RPT01x2$SUBx1$RPT1Nx1" }] }], "jsonfloat$RPT01x2": [{ "name": "jsonfloat$RPT01x2", "symbols": [{ "rule": "jsonfloat$RPT01x2$SUBx1" }], "postprocess": { "builtin": "first" } }, { "name": "jsonfloat$RPT01x2", "symbols": [], "postprocess": { "builtin": "null" } }], "jsonfloat$RPT01x3$SUBx1$RPT01x1": [{ "name": "jsonfloat$RPT01x3$SUBx1$RPT01x1", "symbols": [{ "regex": "[+-]", "flags": "" }], "postprocess": { "builtin": "first" } }, { "name": "jsonfloat$RPT01x3$SUBx1$RPT01x1", "symbols": [], "postprocess": { "builtin": "null" } }], "jsonfloat$RPT01x3$SUBx1$RPT1Nx1": [{ "name": "jsonfloat$RPT01x3$SUBx1$RPT1Nx1", "symbols": [{ "regex": "[0-9]", "flags": "" }] }, { "name": "jsonfloat$RPT01x3$SUBx1$RPT1Nx1", "symbols": [{ "rule": "jsonfloat$RPT01x3$SUBx1$RPT1Nx1" }, { "regex": "[0-9]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "jsonfloat$RPT01x3$SUBx1": [{ "name": "jsonfloat$RPT01x3$SUBx1", "symbols": [{ "regex": "[eE]", "flags": "" }, { "rule": "jsonfloat$RPT01x3$SUBx1$RPT01x1" }, { "rule": "jsonfloat$RPT01x3$SUBx1$RPT1Nx1" }] }], "jsonfloat$RPT01x3": [{ "name": "jsonfloat$RPT01x3", "symbols": [{ "rule": "jsonfloat$RPT01x3$SUBx1" }], "postprocess": { "builtin": "first" } }, { "name": "jsonfloat$RPT01x3", "symbols": [], "postprocess": { "builtin": "null" } }], "jsonfloat": [{ "name": "jsonfloat", "symbols": [{ "rule": "jsonfloat$RPT01x1" }, { "rule": "jsonfloat$RPT1Nx1" }, { "rule": "jsonfloat$RPT01x2" }, { "rule": "jsonfloat$RPT01x3" }], "postprocess": { "template": "parseFloat( ($0 || \"\") + $1.join(\"\") + ($2 ? \".\"+$2[1].join(\"\") : \"\") + ($3 ? \"e\" + ($3[1] || \"+\") + $3[2].join(\"\") : \"\"))" } }] }, "uuids": { "unsigned_int$RPT1N": 1, "int$RPT01": 1, "int$RPT01x1$SUB": 1, "int$RPT1N": 1, "unsigned_decimal$RPT1N": 1, "unsigned_decimal$RPT01": 1, "unsigned_decimal$RPT01x1$SUB": 1, "unsigned_decimal$RPT01x1$SUBx1$RPT1N": 1, "decimal$RPT01": 2, "decimal$RPT1N": 1, "decimal$RPT01x2$SUB": 1, "decimal$RPT01x2$SUBx1$RPT1N": 1, "jsonfloat$RPT01": 3, "jsonfloat$RPT1N": 1, "jsonfloat$RPT01x2$SUB": 1, "jsonfloat$RPT01x2$SUBx1$RPT1N": 1, "jsonfloat$RPT01x3$SUB": 1, "jsonfloat$RPT01x3$SUBx1$RPT01": 1, "jsonfloat$RPT01x3$SUBx1$RPT1N": 1 } }, "lexer": null, "head": [], "body": [], "config": {}, "version": "unknown" }, "exportName": "GWLanguage" }
@@ -0,0 +1,116 @@
1
+ export default GWLanguage;
2
+ declare function GWLanguage(): {
3
+ grammar: {
4
+ start: string;
5
+ rules: {
6
+ dqstring$RPT0Nx1: ({
7
+ name: string;
8
+ symbols: any[];
9
+ postprocess?: undefined;
10
+ } | {
11
+ name: string;
12
+ symbols: string[];
13
+ postprocess: ({ data }: {
14
+ data: any;
15
+ }) => any;
16
+ })[];
17
+ dqstring: {
18
+ name: string;
19
+ symbols: (string | {
20
+ literal: string;
21
+ })[];
22
+ postprocess: ({ data }: {
23
+ data: any;
24
+ }) => any;
25
+ }[];
26
+ sqstring$RPT0Nx1: ({
27
+ name: string;
28
+ symbols: any[];
29
+ postprocess?: undefined;
30
+ } | {
31
+ name: string;
32
+ symbols: string[];
33
+ postprocess: ({ data }: {
34
+ data: any;
35
+ }) => any;
36
+ })[];
37
+ sqstring: {
38
+ name: string;
39
+ symbols: (string | {
40
+ literal: string;
41
+ })[];
42
+ postprocess: ({ data }: {
43
+ data: any;
44
+ }) => any;
45
+ }[];
46
+ btstring$RPT0Nx1: ({
47
+ name: string;
48
+ symbols: any[];
49
+ postprocess?: undefined;
50
+ } | {
51
+ name: string;
52
+ symbols: (string | RegExp)[];
53
+ postprocess: ({ data }: {
54
+ data: any;
55
+ }) => any;
56
+ })[];
57
+ btstring: {
58
+ name: string;
59
+ symbols: (string | {
60
+ literal: string;
61
+ })[];
62
+ postprocess: ({ data }: {
63
+ data: any;
64
+ }) => any;
65
+ }[];
66
+ dstrchar: ({
67
+ name: string;
68
+ symbols: RegExp[];
69
+ postprocess: ({ data }: {
70
+ data: any;
71
+ }) => any;
72
+ } | {
73
+ name: string;
74
+ symbols: (string | {
75
+ literal: string;
76
+ })[];
77
+ postprocess: ({ data }: {
78
+ data: any;
79
+ }) => any;
80
+ })[];
81
+ sstrchar: ({
82
+ name: string;
83
+ symbols: RegExp[];
84
+ postprocess: ({ data }: {
85
+ data: any;
86
+ }) => any;
87
+ } | {
88
+ name: string;
89
+ symbols: (string | {
90
+ literal: string;
91
+ })[];
92
+ postprocess: ({ data }: {
93
+ data: any;
94
+ }) => any;
95
+ })[];
96
+ sstrchar$STRx1: {
97
+ name: string;
98
+ symbols: {
99
+ literal: string;
100
+ }[];
101
+ postprocess: ({ data }: {
102
+ data: any;
103
+ }) => any;
104
+ }[];
105
+ strescape: {
106
+ name: string;
107
+ symbols: (RegExp | {
108
+ literal: string;
109
+ })[];
110
+ postprocess: ({ data }: {
111
+ data: any;
112
+ }) => any;
113
+ }[];
114
+ };
115
+ };
116
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function GWLanguage() {
4
+ return {
5
+ grammar: {
6
+ start: "dqstring",
7
+ rules: {
8
+ dqstring$RPT0Nx1: [
9
+ { name: "dqstring$RPT0Nx1", symbols: [] },
10
+ { name: "dqstring$RPT0Nx1", symbols: ["dqstring$RPT0Nx1", "dstrchar"], postprocess: ({ data }) => data[0].concat([data[1]]) }
11
+ ],
12
+ dqstring: [
13
+ { name: "dqstring", symbols: [{ literal: "\"" }, "dqstring$RPT0Nx1", { literal: "\"" }], postprocess: ({ data }) => { return data[1].join(""); } }
14
+ ],
15
+ sqstring$RPT0Nx1: [
16
+ { name: "sqstring$RPT0Nx1", symbols: [] },
17
+ { name: "sqstring$RPT0Nx1", symbols: ["sqstring$RPT0Nx1", "sstrchar"], postprocess: ({ data }) => data[0].concat([data[1]]) }
18
+ ],
19
+ sqstring: [
20
+ { name: "sqstring", symbols: [{ literal: "'" }, "sqstring$RPT0Nx1", { literal: "'" }], postprocess: ({ data }) => { return data[1].join(""); } }
21
+ ],
22
+ btstring$RPT0Nx1: [
23
+ { name: "btstring$RPT0Nx1", symbols: [] },
24
+ { name: "btstring$RPT0Nx1", symbols: ["btstring$RPT0Nx1", /[^`]/], postprocess: ({ data }) => data[0].concat([data[1]]) }
25
+ ],
26
+ btstring: [
27
+ { name: "btstring", symbols: [{ literal: "`" }, "btstring$RPT0Nx1", { literal: "`" }], postprocess: ({ data }) => { return data[1].join(""); } }
28
+ ],
29
+ dstrchar: [
30
+ { name: "dstrchar", symbols: [/[^\\"\n]/], postprocess: ({ data }) => { return data[0]; } },
31
+ { name: "dstrchar", symbols: [{ literal: "\\" }, "strescape"], postprocess: ({ data }) => { return JSON.parse("\"" + data.join("") + "\""); } }
32
+ ],
33
+ sstrchar: [
34
+ { name: "sstrchar", symbols: [/[^\\'\n]/], postprocess: ({ data }) => { return data[0]; } },
35
+ { name: "sstrchar", symbols: [{ literal: "\\" }, "strescape"], postprocess: ({ data }) => { return JSON.parse("\"" + data.join("") + "\""); } },
36
+ { name: "sstrchar", symbols: ["sstrchar$STRx1"], postprocess: ({ data }) => { return "'"; } }
37
+ ],
38
+ sstrchar$STRx1: [
39
+ { name: "sstrchar$STRx1", symbols: [{ literal: "\\" }, { literal: "'" }], postprocess: ({ data }) => data.join('') }
40
+ ],
41
+ strescape: [
42
+ { name: "strescape", symbols: [/["\/bfnrt]/], postprocess: ({ data }) => { return data[0]; } },
43
+ { name: "strescape", symbols: [{ literal: "u" }, /[a-fA-F0-9]/, /[a-fA-F0-9]/, /[a-fA-F0-9]/, /[a-fA-F0-9]/], postprocess: ({ data }) => { return data.join(""); } }
44
+ ]
45
+ }
46
+ }
47
+ };
48
+ }
49
+ exports.default = GWLanguage;
50
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/grammars/string.js"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ { "state": { "grammar": { "start": "dqstring", "rules": { "dqstring$RPT0Nx1": [{ "name": "dqstring$RPT0Nx1", "symbols": [] }, { "name": "dqstring$RPT0Nx1", "symbols": [{ "rule": "dqstring$RPT0Nx1" }, { "rule": "dstrchar" }], "postprocess": { "builtin": "concat" } }], "dqstring": [{ "name": "dqstring", "symbols": [{ "literal": "\"", "insensitive": false }, { "rule": "dqstring$RPT0Nx1" }, { "literal": "\"", "insensitive": false }], "postprocess": { "template": "$1.join(\"\")" } }], "sqstring$RPT0Nx1": [{ "name": "sqstring$RPT0Nx1", "symbols": [] }, { "name": "sqstring$RPT0Nx1", "symbols": [{ "rule": "sqstring$RPT0Nx1" }, { "rule": "sstrchar" }], "postprocess": { "builtin": "concat" } }], "sqstring": [{ "name": "sqstring", "symbols": [{ "literal": "'", "insensitive": false }, { "rule": "sqstring$RPT0Nx1" }, { "literal": "'", "insensitive": false }], "postprocess": { "template": "$1.join(\"\")" } }], "btstring$RPT0Nx1": [{ "name": "btstring$RPT0Nx1", "symbols": [] }, { "name": "btstring$RPT0Nx1", "symbols": [{ "rule": "btstring$RPT0Nx1" }, { "regex": "[^`]", "flags": "" }], "postprocess": { "builtin": "concat" } }], "btstring": [{ "name": "btstring", "symbols": [{ "literal": "`", "insensitive": false }, { "rule": "btstring$RPT0Nx1" }, { "literal": "`", "insensitive": false }], "postprocess": { "template": "$1.join(\"\")" } }], "dstrchar": [{ "name": "dstrchar", "symbols": [{ "regex": "[^\\\\\"\\n]", "flags": "" }], "postprocess": { "template": "$0" } }, { "name": "dstrchar", "symbols": [{ "literal": "\\", "insensitive": false }, { "rule": "strescape" }], "postprocess": { "template": "JSON.parse(\"\\\"\"+data.join(\"\")+\"\\\"\")" } }], "sstrchar": [{ "name": "sstrchar", "symbols": [{ "regex": "[^\\\\'\\n]", "flags": "" }], "postprocess": { "template": "$0" } }, { "name": "sstrchar", "symbols": [{ "literal": "\\", "insensitive": false }, { "rule": "strescape" }], "postprocess": { "template": "JSON.parse(\"\\\"\"+data.join(\"\")+\"\\\"\")" } }, { "name": "sstrchar", "symbols": [{ "rule": "sstrchar$STRx1" }], "postprocess": { "template": "\"'\"" } }], "sstrchar$STRx1": [{ "name": "sstrchar$STRx1", "symbols": [{ "literal": "\\" }, { "literal": "'" }], "postprocess": { "builtin": "join" } }], "strescape": [{ "name": "strescape", "symbols": [{ "regex": "[\"\\/bfnrt]", "flags": "" }], "postprocess": { "template": "$0" } }, { "name": "strescape", "symbols": [{ "literal": "u", "insensitive": false }, { "regex": "[a-fA-F0-9]", "flags": "" }, { "regex": "[a-fA-F0-9]", "flags": "" }, { "regex": "[a-fA-F0-9]", "flags": "" }, { "regex": "[a-fA-F0-9]", "flags": "" }], "postprocess": { "template": "data.join(\"\")" } }] }, "uuids": { "dqstring$RPT0N": 1, "sqstring$RPT0N": 1, "btstring$RPT0N": 1, "sstrchar$STR": 1 } }, "lexer": null, "head": [], "body": [], "config": {}, "version": "unknown" }, "exportName": "GWLanguage" }
@@ -0,0 +1,51 @@
1
+ export default GWLanguage;
2
+ declare function GWLanguage(): {
3
+ grammar: {
4
+ start: string;
5
+ rules: {
6
+ _$RPT0Nx1: ({
7
+ name: string;
8
+ symbols: any[];
9
+ postprocess?: undefined;
10
+ } | {
11
+ name: string;
12
+ symbols: string[];
13
+ postprocess: ({ data }: {
14
+ data: any;
15
+ }) => any;
16
+ })[];
17
+ _: {
18
+ name: string;
19
+ symbols: string[];
20
+ postprocess: ({ data }: {
21
+ data: any;
22
+ }) => any;
23
+ }[];
24
+ __$RPT1Nx1: ({
25
+ name: string;
26
+ symbols: string[];
27
+ postprocess?: undefined;
28
+ } | {
29
+ name: string;
30
+ symbols: string[];
31
+ postprocess: ({ data }: {
32
+ data: any;
33
+ }) => any;
34
+ })[];
35
+ __: {
36
+ name: string;
37
+ symbols: string[];
38
+ postprocess: ({ data }: {
39
+ data: any;
40
+ }) => any;
41
+ }[];
42
+ wschar: {
43
+ name: string;
44
+ symbols: RegExp[];
45
+ postprocess: ({ data }: {
46
+ data: any;
47
+ }) => any;
48
+ }[];
49
+ };
50
+ };
51
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function GWLanguage() {
4
+ return {
5
+ grammar: {
6
+ start: "_",
7
+ rules: {
8
+ _$RPT0Nx1: [
9
+ { name: "_$RPT0Nx1", symbols: [] },
10
+ { name: "_$RPT0Nx1", symbols: ["_$RPT0Nx1", "wschar"], postprocess: ({ data }) => data[0].concat([data[1]]) }
11
+ ],
12
+ _: [
13
+ { name: "_", symbols: ["_$RPT0Nx1"], postprocess: ({ data }) => { return null; } }
14
+ ],
15
+ __$RPT1Nx1: [
16
+ { name: "__$RPT1Nx1", symbols: ["wschar"] },
17
+ { name: "__$RPT1Nx1", symbols: ["__$RPT1Nx1", "wschar"], postprocess: ({ data }) => data[0].concat([data[1]]) }
18
+ ],
19
+ __: [
20
+ { name: "__", symbols: ["__$RPT1Nx1"], postprocess: ({ data }) => { return null; } }
21
+ ],
22
+ wschar: [
23
+ { name: "wschar", symbols: [/[\t\n\v\f]/], postprocess: ({ data }) => { return data[0].value; } }
24
+ ]
25
+ }
26
+ }
27
+ };
28
+ }
29
+ exports.default = GWLanguage;
30
+ //# sourceMappingURL=whitespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespace.js","sourceRoot":"","sources":["../../src/grammars/whitespace.js"],"names":[],"mappings":";;AAGA,SAAS,UAAU;IAEf,OAAO;QACH,OAAO,EAAE;YACL,KAAK,EAAE,GAAG;YACV,KAAK,EAAE;gBACH,SAAS,EAAE;oBACP,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAG,EAAE;oBACnC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAE,WAAW,EAAE,QAAQ,CAAE,EAAE,WAAW,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;iBAChH;gBACD,CAAC,EAAE;oBACC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAE,WAAW,CAAE,EAAE,WAAW,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE;iBACrF;gBACD,UAAU,EAAE;oBACR,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAE,QAAQ,CAAE,EAAE;oBAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAE,YAAY,EAAE,QAAQ,CAAE,EAAE,WAAW,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;iBAClH;gBACD,EAAE,EAAE;oBACA,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAE,YAAY,CAAE,EAAE,WAAW,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE;iBACvF;gBACD,MAAM,EAAE;oBACJ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAE,YAAY,CAAE,EAAE,WAAW,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;iBACpG;aACJ;SACJ;KACJ,CAAA;AACL,CAAC;AAED,kBAAe,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ { "state": { "grammar": { "start": "_", "rules": { "_$RPT0Nx1": [{ "name": "_$RPT0Nx1", "symbols": [] }, { "name": "_$RPT0Nx1", "symbols": [{ "rule": "_$RPT0Nx1" }, { "rule": "wschar" }], "postprocess": { "builtin": "concat" } }], "_": [{ "name": "_", "symbols": [{ "rule": "_$RPT0Nx1" }], "postprocess": { "template": "null" } }], "__$RPT1Nx1": [{ "name": "__$RPT1Nx1", "symbols": [{ "rule": "wschar" }] }, { "name": "__$RPT1Nx1", "symbols": [{ "rule": "__$RPT1Nx1" }, { "rule": "wschar" }], "postprocess": { "builtin": "concat" } }], "__": [{ "name": "__", "symbols": [{ "rule": "__$RPT1Nx1" }], "postprocess": { "template": "null" } }], "wschar": [{ "name": "wschar", "symbols": [{ "regex": "[\\t\\n\\v\\f]", "flags": "" }], "postprocess": { "template": "$0.value" } }] }, "uuids": { "_$RPT0N": 1, "__$RPT1N": 1 } }, "lexer": null, "head": [], "body": [], "config": {}, "version": "unknown" }, "exportName": "GWLanguage" }
@@ -0,0 +1,4 @@
1
+ export * from './compiler/compiler';
2
+ export * from './compiler/import-resolver';
3
+ export * from './parser/parser';
4
+ export * from './typings';
package/build/index.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./compiler/compiler"), exports);
18
+ __exportStar(require("./compiler/import-resolver"), exports);
19
+ __exportStar(require("./parser/parser"), exports);
20
+ __exportStar(require("./typings"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,6DAA2C;AAC3C,kDAAgC;AAChC,4CAAyB"}
@@ -0,0 +1,27 @@
1
+ import { Lexer } from "../typings";
2
+ export declare class CharacterLexer implements Lexer {
3
+ private buffer;
4
+ private $indexOffset;
5
+ private $index;
6
+ get index(): number;
7
+ private $lineOffset;
8
+ private $line;
9
+ get line(): number;
10
+ private column;
11
+ next(): {
12
+ type: string;
13
+ value: any;
14
+ offset: number;
15
+ line: number;
16
+ column: number;
17
+ };
18
+ feed(buffer: string | any[], state?: ReturnType<CharacterLexer['state']>): void;
19
+ state(): {
20
+ index: number;
21
+ indexOffset: number;
22
+ line: number;
23
+ lineOffset: number;
24
+ column: number;
25
+ };
26
+ flush(): void;
27
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharacterLexer = void 0;
4
+ class CharacterLexer {
5
+ buffer = '';
6
+ $indexOffset = 0;
7
+ $index = -1;
8
+ get index() { return this.$index + this.$indexOffset; }
9
+ $lineOffset = 0;
10
+ $line = 0;
11
+ get line() { return this.$line + this.$lineOffset; }
12
+ column = 0;
13
+ next() {
14
+ if (this.$index + 1 < this.buffer.length) {
15
+ if (this.buffer[this.index] === '\n') {
16
+ this.column = 0;
17
+ }
18
+ this.column++;
19
+ const value = this.buffer[++this.$index];
20
+ if (value === '\n') {
21
+ this.$line++;
22
+ }
23
+ return {
24
+ type: '',
25
+ value,
26
+ offset: this.index,
27
+ line: this.line,
28
+ column: this.column
29
+ };
30
+ }
31
+ }
32
+ feed(buffer, state) {
33
+ if (Array.isArray(buffer) && (!this.buffer || Array.isArray(this.buffer))) {
34
+ this.buffer = Array.isArray(this.buffer) ? this.buffer : [];
35
+ this.buffer.push(...buffer);
36
+ }
37
+ else {
38
+ if (Array.isArray(this.buffer)) {
39
+ this.buffer.push(buffer);
40
+ }
41
+ else {
42
+ this.buffer = this.buffer + buffer;
43
+ }
44
+ }
45
+ if (state) {
46
+ this.$index = state.index;
47
+ this.$indexOffset = state.indexOffset;
48
+ this.$line = state.line;
49
+ this.$lineOffset = state.lineOffset;
50
+ this.column = state.column;
51
+ }
52
+ }
53
+ state() {
54
+ return {
55
+ index: this.$index,
56
+ indexOffset: this.$indexOffset,
57
+ line: this.$line,
58
+ lineOffset: this.$lineOffset,
59
+ column: this.column
60
+ };
61
+ }
62
+ flush() {
63
+ this.buffer = this.buffer.slice(this.$index);
64
+ this.$indexOffset += this.$index;
65
+ this.$lineOffset += this.$line;
66
+ this.$index = 0;
67
+ this.$line = 0;
68
+ }
69
+ }
70
+ exports.CharacterLexer = CharacterLexer;
71
+ //# sourceMappingURL=character-lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-lexer.js","sourceRoot":"","sources":["../../src/lexers/character-lexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { LexerStateDefinition, LexerConfig } from "../typings";
2
+ export declare class StatefulLexer {
3
+ private start;
4
+ private states;
5
+ private buffer;
6
+ private stack;
7
+ private index;
8
+ private line;
9
+ private column;
10
+ private prefetched?;
11
+ private current;
12
+ private unmatched;
13
+ private rules;
14
+ private regexp;
15
+ private tags;
16
+ constructor({ states, start }: LexerConfig);
17
+ feed(data?: string, state?: ReturnType<StatefulLexer['state']>): void;
18
+ state(): {
19
+ line: number;
20
+ column: number;
21
+ state: string;
22
+ stack: string[];
23
+ prefetched: RegExpExecArray;
24
+ };
25
+ next(): {
26
+ type: string;
27
+ tag: Set<string>;
28
+ value: string;
29
+ text: string;
30
+ offset: number;
31
+ line: number;
32
+ column: number;
33
+ state: string;
34
+ };
35
+ private set;
36
+ private pop;
37
+ private goto;
38
+ private matchNext;
39
+ private createToken;
40
+ private getTags;
41
+ private processRule;
42
+ private getGroup;
43
+ }
44
+ export declare function ResolveStates(states: {
45
+ [key: string]: LexerStateDefinition;
46
+ }, start: string): {
47
+ [key: string]: LexerStateDefinition;
48
+ };