@bscotch/gml-parser 1.14.2

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 (208) hide show
  1. package/LICENSE.md +29 -0
  2. package/README.md +151 -0
  3. package/assets/GmlSpec.xml +11419 -0
  4. package/dist/index.d.ts +16 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +13 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/jsdoc.d.ts +79 -0
  9. package/dist/jsdoc.d.ts.map +1 -0
  10. package/dist/jsdoc.feather.d.ts +23 -0
  11. package/dist/jsdoc.feather.d.ts.map +1 -0
  12. package/dist/jsdoc.feather.js +143 -0
  13. package/dist/jsdoc.feather.js.map +1 -0
  14. package/dist/jsdoc.js +468 -0
  15. package/dist/jsdoc.js.map +1 -0
  16. package/dist/jsdoc.test.d.ts +2 -0
  17. package/dist/jsdoc.test.d.ts.map +1 -0
  18. package/dist/jsdoc.test.js +185 -0
  19. package/dist/jsdoc.test.js.map +1 -0
  20. package/dist/lexer.d.ts +3 -0
  21. package/dist/lexer.d.ts.map +1 -0
  22. package/dist/lexer.js +14 -0
  23. package/dist/lexer.js.map +1 -0
  24. package/dist/lexer.test.d.ts +2 -0
  25. package/dist/lexer.test.d.ts.map +1 -0
  26. package/dist/lexer.test.js +78 -0
  27. package/dist/lexer.test.js.map +1 -0
  28. package/dist/lib.objects.d.ts +190 -0
  29. package/dist/lib.objects.d.ts.map +1 -0
  30. package/dist/lib.objects.js +242 -0
  31. package/dist/lib.objects.js.map +1 -0
  32. package/dist/logger.d.ts +13 -0
  33. package/dist/logger.d.ts.map +1 -0
  34. package/dist/logger.js +14 -0
  35. package/dist/logger.js.map +1 -0
  36. package/dist/modules.d.ts +19 -0
  37. package/dist/modules.d.ts.map +1 -0
  38. package/dist/modules.js +320 -0
  39. package/dist/modules.js.map +1 -0
  40. package/dist/modules.test.d.ts +2 -0
  41. package/dist/modules.test.d.ts.map +1 -0
  42. package/dist/modules.test.js +57 -0
  43. package/dist/modules.test.js.map +1 -0
  44. package/dist/modules.types.d.ts +78 -0
  45. package/dist/modules.types.d.ts.map +1 -0
  46. package/dist/modules.types.js +2 -0
  47. package/dist/modules.types.js.map +1 -0
  48. package/dist/modules.util.d.ts +5 -0
  49. package/dist/modules.util.d.ts.map +1 -0
  50. package/dist/modules.util.js +13 -0
  51. package/dist/modules.util.js.map +1 -0
  52. package/dist/parser.d.ts +121 -0
  53. package/dist/parser.d.ts.map +1 -0
  54. package/dist/parser.js +571 -0
  55. package/dist/parser.js.map +1 -0
  56. package/dist/parser.test.d.ts +2 -0
  57. package/dist/parser.test.d.ts.map +1 -0
  58. package/dist/parser.test.js +143 -0
  59. package/dist/parser.test.js.map +1 -0
  60. package/dist/parser.utility.d.ts +29 -0
  61. package/dist/parser.utility.d.ts.map +1 -0
  62. package/dist/parser.utility.js +125 -0
  63. package/dist/parser.utility.js.map +1 -0
  64. package/dist/project.asset.d.ts +115 -0
  65. package/dist/project.asset.d.ts.map +1 -0
  66. package/dist/project.asset.js +802 -0
  67. package/dist/project.asset.js.map +1 -0
  68. package/dist/project.code.d.ts +130 -0
  69. package/dist/project.code.d.ts.map +1 -0
  70. package/dist/project.code.js +570 -0
  71. package/dist/project.code.js.map +1 -0
  72. package/dist/project.d.ts +533 -0
  73. package/dist/project.d.ts.map +1 -0
  74. package/dist/project.diagnostics.d.ts +32 -0
  75. package/dist/project.diagnostics.d.ts.map +1 -0
  76. package/dist/project.diagnostics.js +23 -0
  77. package/dist/project.diagnostics.js.map +1 -0
  78. package/dist/project.js +1216 -0
  79. package/dist/project.js.map +1 -0
  80. package/dist/project.location.d.ts +133 -0
  81. package/dist/project.location.d.ts.map +1 -0
  82. package/dist/project.location.js +219 -0
  83. package/dist/project.location.js.map +1 -0
  84. package/dist/project.native.d.ts +26 -0
  85. package/dist/project.native.d.ts.map +1 -0
  86. package/dist/project.native.js +321 -0
  87. package/dist/project.native.js.map +1 -0
  88. package/dist/project.spec.d.ts +1298 -0
  89. package/dist/project.spec.d.ts.map +1 -0
  90. package/dist/project.spec.js +263 -0
  91. package/dist/project.spec.js.map +1 -0
  92. package/dist/project.test.d.ts +2 -0
  93. package/dist/project.test.d.ts.map +1 -0
  94. package/dist/project.test.js +633 -0
  95. package/dist/project.test.js.map +1 -0
  96. package/dist/shaderDefaults.d.ts +3 -0
  97. package/dist/shaderDefaults.d.ts.map +1 -0
  98. package/dist/shaderDefaults.js +32 -0
  99. package/dist/shaderDefaults.js.map +1 -0
  100. package/dist/signifiers.d.ts +54 -0
  101. package/dist/signifiers.d.ts.map +1 -0
  102. package/dist/signifiers.flags.d.ts +38 -0
  103. package/dist/signifiers.flags.d.ts.map +1 -0
  104. package/dist/signifiers.flags.js +131 -0
  105. package/dist/signifiers.flags.js.map +1 -0
  106. package/dist/signifiers.js +117 -0
  107. package/dist/signifiers.js.map +1 -0
  108. package/dist/spine.d.ts +28 -0
  109. package/dist/spine.d.ts.map +1 -0
  110. package/dist/spine.js +64 -0
  111. package/dist/spine.js.map +1 -0
  112. package/dist/spine.test.d.ts +2 -0
  113. package/dist/spine.test.d.ts.map +1 -0
  114. package/dist/spine.test.js +420 -0
  115. package/dist/spine.test.js.map +1 -0
  116. package/dist/spine.types.d.ts +89 -0
  117. package/dist/spine.types.d.ts.map +1 -0
  118. package/dist/spine.types.js +2 -0
  119. package/dist/spine.types.js.map +1 -0
  120. package/dist/test.lib.d.ts +3 -0
  121. package/dist/test.lib.d.ts.map +1 -0
  122. package/dist/test.lib.js +16 -0
  123. package/dist/test.lib.js.map +1 -0
  124. package/dist/tokens.categories.d.ts +22 -0
  125. package/dist/tokens.categories.d.ts.map +1 -0
  126. package/dist/tokens.categories.js +78 -0
  127. package/dist/tokens.categories.js.map +1 -0
  128. package/dist/tokens.code.d.ts +2 -0
  129. package/dist/tokens.code.d.ts.map +1 -0
  130. package/dist/tokens.code.js +523 -0
  131. package/dist/tokens.code.js.map +1 -0
  132. package/dist/tokens.d.ts +130 -0
  133. package/dist/tokens.d.ts.map +1 -0
  134. package/dist/tokens.js +13 -0
  135. package/dist/tokens.js.map +1 -0
  136. package/dist/tokens.lib.d.ts +15 -0
  137. package/dist/tokens.lib.d.ts.map +1 -0
  138. package/dist/tokens.lib.js +12 -0
  139. package/dist/tokens.lib.js.map +1 -0
  140. package/dist/tokens.shared.d.ts +4 -0
  141. package/dist/tokens.shared.d.ts.map +1 -0
  142. package/dist/tokens.shared.js +35 -0
  143. package/dist/tokens.shared.js.map +1 -0
  144. package/dist/tokens.strings.d.ts +5 -0
  145. package/dist/tokens.strings.d.ts.map +1 -0
  146. package/dist/tokens.strings.js +111 -0
  147. package/dist/tokens.strings.js.map +1 -0
  148. package/dist/types.checks.d.ts +50 -0
  149. package/dist/types.checks.d.ts.map +1 -0
  150. package/dist/types.checks.js +246 -0
  151. package/dist/types.checks.js.map +1 -0
  152. package/dist/types.d.ts +152 -0
  153. package/dist/types.d.ts.map +1 -0
  154. package/dist/types.feather.d.ts +21 -0
  155. package/dist/types.feather.d.ts.map +1 -0
  156. package/dist/types.feather.js +156 -0
  157. package/dist/types.feather.js.map +1 -0
  158. package/dist/types.hover.d.ts +4 -0
  159. package/dist/types.hover.d.ts.map +1 -0
  160. package/dist/types.hover.js +99 -0
  161. package/dist/types.hover.js.map +1 -0
  162. package/dist/types.js +457 -0
  163. package/dist/types.js.map +1 -0
  164. package/dist/types.primitives.d.ts +10 -0
  165. package/dist/types.primitives.d.ts.map +1 -0
  166. package/dist/types.primitives.js +88 -0
  167. package/dist/types.primitives.js.map +1 -0
  168. package/dist/types.sprites.d.ts +8 -0
  169. package/dist/types.sprites.d.ts.map +1 -0
  170. package/dist/types.sprites.js +417 -0
  171. package/dist/types.sprites.js.map +1 -0
  172. package/dist/types.test.d.ts +2 -0
  173. package/dist/types.test.d.ts.map +1 -0
  174. package/dist/types.test.js +62 -0
  175. package/dist/types.test.js.map +1 -0
  176. package/dist/util.d.ts +50 -0
  177. package/dist/util.d.ts.map +1 -0
  178. package/dist/util.js +168 -0
  179. package/dist/util.js.map +1 -0
  180. package/dist/util.test.d.ts +3 -0
  181. package/dist/util.test.d.ts.map +1 -0
  182. package/dist/util.test.js +63 -0
  183. package/dist/util.test.js.map +1 -0
  184. package/dist/visitor.assign.d.ts +24 -0
  185. package/dist/visitor.assign.d.ts.map +1 -0
  186. package/dist/visitor.assign.js +112 -0
  187. package/dist/visitor.assign.js.map +1 -0
  188. package/dist/visitor.d.ts +89 -0
  189. package/dist/visitor.d.ts.map +1 -0
  190. package/dist/visitor.functionExpression.d.ts +7 -0
  191. package/dist/visitor.functionExpression.d.ts.map +1 -0
  192. package/dist/visitor.functionExpression.js +216 -0
  193. package/dist/visitor.functionExpression.js.map +1 -0
  194. package/dist/visitor.globals.d.ts +59 -0
  195. package/dist/visitor.globals.d.ts.map +1 -0
  196. package/dist/visitor.globals.js +271 -0
  197. package/dist/visitor.globals.js.map +1 -0
  198. package/dist/visitor.identifierAccessor.d.ts +6 -0
  199. package/dist/visitor.identifierAccessor.d.ts.map +1 -0
  200. package/dist/visitor.identifierAccessor.js +381 -0
  201. package/dist/visitor.identifierAccessor.js.map +1 -0
  202. package/dist/visitor.js +605 -0
  203. package/dist/visitor.js.map +1 -0
  204. package/dist/visitor.processor.d.ts +66 -0
  205. package/dist/visitor.processor.d.ts.map +1 -0
  206. package/dist/visitor.processor.js +147 -0
  207. package/dist/visitor.processor.js.map +1 -0
  208. package/package.json +63 -0
package/dist/parser.js ADDED
@@ -0,0 +1,571 @@
1
+ import { CstParser } from 'chevrotain';
2
+ import { GmlLexer } from './lexer.js';
3
+ import { c, categories, t, tokens } from './tokens.js';
4
+ export class GmlParser extends CstParser {
5
+ /** Parse GML Code, e.g. from a file. */
6
+ parse(code) {
7
+ const lexed = this.lexer.tokenize(code);
8
+ this.input = lexed.tokens;
9
+ const cst = this.file();
10
+ return {
11
+ lexed,
12
+ cst,
13
+ errors: this.errors,
14
+ };
15
+ }
16
+ lexer = GmlLexer;
17
+ file = this.RULE('file', () => {
18
+ this.SUBRULE(this.statements);
19
+ });
20
+ optionallyConsumeSemicolon() {
21
+ this.OPTION9(() => this.CONSUME(t.Semicolon));
22
+ }
23
+ statements = this.RULE('statements', () => {
24
+ this.MANY(() => this.SUBRULE(this.statement));
25
+ });
26
+ statement = this.RULE('statement', () => {
27
+ this.OR([
28
+ { ALT: () => this.SUBRULE(this.functionStatement) },
29
+ { ALT: () => this.SUBRULE(this.localVarDeclarationsStatement) },
30
+ { ALT: () => this.SUBRULE(this.globalVarDeclarationsStatement) },
31
+ { ALT: () => this.SUBRULE(this.staticVarDeclarationStatement) },
32
+ { ALT: () => this.SUBRULE(this.variableAssignmentStatement) },
33
+ { ALT: () => this.SUBRULE(this.ifStatement) },
34
+ { ALT: () => this.SUBRULE(this.tryStatement) },
35
+ { ALT: () => this.SUBRULE(this.whileStatement) },
36
+ { ALT: () => this.SUBRULE(this.forStatement) },
37
+ { ALT: () => this.SUBRULE(this.doUntilStatement) },
38
+ { ALT: () => this.SUBRULE(this.switchStatement) },
39
+ { ALT: () => this.SUBRULE(this.breakStatement) },
40
+ { ALT: () => this.SUBRULE(this.continueStatement) },
41
+ { ALT: () => this.SUBRULE(this.returnStatement) },
42
+ { ALT: () => this.SUBRULE(this.exitStatement) },
43
+ { ALT: () => this.SUBRULE(this.withStatement) },
44
+ { ALT: () => this.SUBRULE(this.enumStatement) },
45
+ { ALT: () => this.SUBRULE(this.macroStatement) },
46
+ { ALT: () => this.SUBRULE(this.emptyStatement) },
47
+ { ALT: () => this.SUBRULE(this.repeatStatement) },
48
+ { ALT: () => this.SUBRULE(this.expressionStatement) },
49
+ { ALT: () => this.SUBRULE(this.jsdoc) },
50
+ ]);
51
+ });
52
+ jsdoc = this.RULE('jsdoc', () => {
53
+ this.OR2([
54
+ { ALT: () => this.SUBRULE(this.jsdocGml) },
55
+ { ALT: () => this.SUBRULE(this.jsdocJs) },
56
+ ]);
57
+ });
58
+ jsdocGml = this.RULE('jsdocGml', () => {
59
+ this.AT_LEAST_ONE(() => {
60
+ this.CONSUME(t.JsdocGmlLine);
61
+ });
62
+ });
63
+ jsdocJs = this.RULE('jsdocJs', () => {
64
+ this.CONSUME(t.JsdocJs);
65
+ });
66
+ stringLiteral = this.RULE('stringLiteral', () => {
67
+ this.CONSUME(t.StringStart);
68
+ this.MANY(() => {
69
+ this.CONSUME(c.Substring);
70
+ });
71
+ this.CONSUME(t.StringEnd);
72
+ });
73
+ multilineDoubleStringLiteral = this.RULE('multilineDoubleStringLiteral', () => {
74
+ this.CONSUME(t.MultilineDoubleStringStart);
75
+ this.MANY(() => {
76
+ this.CONSUME(c.Substring);
77
+ });
78
+ this.CONSUME(t.MultilineDoubleStringEnd);
79
+ });
80
+ multilineSingleStringLiteral = this.RULE('multilineSingleStringLiteral', () => {
81
+ this.CONSUME(t.MultilineSingleStringStart);
82
+ this.MANY(() => {
83
+ this.CONSUME(c.Substring);
84
+ });
85
+ this.CONSUME(t.MultilineSingleStringEnd);
86
+ });
87
+ templateLiteral = this.RULE('templateLiteral', () => {
88
+ this.CONSUME(t.TemplateStart);
89
+ this.MANY(() => {
90
+ this.OR([
91
+ { ALT: () => this.CONSUME(c.Substring) },
92
+ {
93
+ ALT: () => {
94
+ this.CONSUME(t.TemplateInterpStart);
95
+ this.SUBRULE(this.expression);
96
+ this.CONSUME(t.EndBrace);
97
+ },
98
+ },
99
+ ]);
100
+ });
101
+ this.CONSUME(t.TemplateStringEnd);
102
+ });
103
+ repeatStatement = this.RULE('repeatStatement', () => {
104
+ this.CONSUME(t.Repeat);
105
+ this.SUBRULE(this.expression);
106
+ this.SUBRULE(this.blockableStatement);
107
+ });
108
+ returnStatement = this.RULE('returnStatement', () => {
109
+ this.CONSUME(t.Return);
110
+ this.OPTION1(() => this.SUBRULE(this.assignmentRightHandSide));
111
+ this.OPTION2(() => this.CONSUME(t.Semicolon));
112
+ });
113
+ ifStatement = this.RULE('ifStatement', () => {
114
+ this.CONSUME(t.If);
115
+ this.SUBRULE(this.expression);
116
+ this.OPTION2(() => this.CONSUME(t.Then));
117
+ this.SUBRULE(this.blockableStatement);
118
+ this.MANY(() => this.SUBRULE2(this.elseIfStatement));
119
+ this.OPTION(() => {
120
+ this.SUBRULE(this.elseStatement);
121
+ });
122
+ });
123
+ elseIfStatement = this.RULE('elseIfStatement', () => {
124
+ this.CONSUME(t.Else);
125
+ this.CONSUME(t.If);
126
+ this.SUBRULE(this.expression);
127
+ this.SUBRULE(this.blockableStatement);
128
+ });
129
+ elseStatement = this.RULE('elseStatement', () => {
130
+ this.CONSUME(t.Else);
131
+ this.SUBRULE2(this.blockableStatement);
132
+ });
133
+ blockableStatement = this.RULE('blockableStatement', () => {
134
+ this.OR([
135
+ { ALT: () => this.SUBRULE(this.statement) },
136
+ { ALT: () => this.SUBRULE(this.blockStatement) },
137
+ ]);
138
+ });
139
+ blockableStatements = this.RULE('blockableStatements', () => {
140
+ this.OR([
141
+ { ALT: () => this.SUBRULE(this.statements) },
142
+ { ALT: () => this.SUBRULE(this.blockStatement) },
143
+ ]);
144
+ });
145
+ blockStatement = this.RULE('blockStatement', () => {
146
+ this.CONSUME(t.StartBrace);
147
+ this.MANY(() => this.SUBRULE(this.statement));
148
+ this.CONSUME(t.EndBrace);
149
+ });
150
+ expressionStatement = this.RULE('expressionStatement', () => {
151
+ this.SUBRULE(this.expression);
152
+ this.optionallyConsumeSemicolon();
153
+ });
154
+ expression = this.RULE('expression', () => {
155
+ this.SUBRULE(this.primaryExpression);
156
+ this.OPTION(() => {
157
+ this.OR([
158
+ { ALT: () => this.SUBRULE(this.assignment) },
159
+ {
160
+ ALT: () => this.AT_LEAST_ONE(() => this.SUBRULE2(this.binaryExpression)),
161
+ },
162
+ { ALT: () => this.SUBRULE(this.ternaryExpression) },
163
+ ]);
164
+ });
165
+ });
166
+ binaryExpression = this.RULE('binaryExpression', () => {
167
+ this.CONSUME(c.BinaryOperator);
168
+ this.SUBRULE(this.assignmentRightHandSide);
169
+ });
170
+ ternaryExpression = this.RULE('ternaryExpression', () => {
171
+ this.CONSUME(t.QuestionMark);
172
+ this.SUBRULE(this.assignmentRightHandSide);
173
+ this.CONSUME(t.Colon);
174
+ this.SUBRULE2(this.assignmentRightHandSide);
175
+ });
176
+ primaryExpression = this.RULE('primaryExpression', () => {
177
+ this.OPTION1(() => this.CONSUME(c.UnaryPrefixOperator));
178
+ this.OR1([
179
+ { ALT: () => this.CONSUME(c.BooleanLiteral) },
180
+ { ALT: () => this.CONSUME(c.NumericLiteral) },
181
+ { ALT: () => this.CONSUME(c.PointerLiteral) },
182
+ { ALT: () => this.CONSUME(t.Undefined) },
183
+ { ALT: () => this.CONSUME(t.NaN) },
184
+ { ALT: () => this.SUBRULE(this.stringLiteral) },
185
+ { ALT: () => this.SUBRULE(this.multilineDoubleStringLiteral) },
186
+ { ALT: () => this.SUBRULE(this.multilineSingleStringLiteral) },
187
+ { ALT: () => this.SUBRULE(this.templateLiteral) },
188
+ { ALT: () => this.SUBRULE(this.identifierAccessor) },
189
+ { ALT: () => this.SUBRULE(this.parenthesizedExpression) },
190
+ { ALT: () => this.SUBRULE(this.arrayLiteral) },
191
+ ]);
192
+ this.OPTION2(() => this.CONSUME(c.UnarySuffixOperator));
193
+ });
194
+ identifier = this.RULE('identifier', () => {
195
+ this.OR([
196
+ { ALT: () => this.CONSUME(t.Identifier) },
197
+ { ALT: () => this.CONSUME(t.Self) },
198
+ { ALT: () => this.CONSUME(t.Other) },
199
+ { ALT: () => this.CONSUME(t.Global) },
200
+ { ALT: () => this.CONSUME(t.Noone) },
201
+ { ALT: () => this.CONSUME(t.All) },
202
+ ]);
203
+ });
204
+ identifierAccessor = this.RULE('identifierAccessor', () => {
205
+ this.OPTION(() => {
206
+ this.CONSUME(t.New);
207
+ });
208
+ this.SUBRULE(this.identifier);
209
+ this.MANY(() => {
210
+ this.SUBRULE(this.accessorSuffixes);
211
+ });
212
+ this.OPTION2(() => {
213
+ this.SUBRULE(this.assignment);
214
+ });
215
+ });
216
+ parenthesizedExpression = this.RULE('parenthesizedExpression', () => {
217
+ this.CONSUME(t.StartParen);
218
+ this.SUBRULE(this.expression);
219
+ this.CONSUME(t.EndParen);
220
+ });
221
+ accessorSuffixes = this.RULE('accessorSuffixes', () => {
222
+ this.OR([
223
+ { ALT: () => this.SUBRULE(this.gridAccessorSuffix) },
224
+ { ALT: () => this.SUBRULE(this.structAccessorSuffix) },
225
+ { ALT: () => this.SUBRULE(this.listAccessorSuffix) },
226
+ { ALT: () => this.SUBRULE(this.mapAccessorSuffix) },
227
+ { ALT: () => this.SUBRULE(this.arrayMutationAccessorSuffix) },
228
+ { ALT: () => this.SUBRULE(this.arrayAccessSuffix) },
229
+ { ALT: () => this.SUBRULE(this.dotAccessSuffix) },
230
+ { ALT: () => this.SUBRULE(this.functionArguments) },
231
+ ]);
232
+ });
233
+ dotAccessSuffix = this.RULE('dotAccessSuffix', () => {
234
+ this.CONSUME(t.Dot);
235
+ this.SUBRULE(this.identifier);
236
+ });
237
+ arrayAccessSuffix = this.RULE('arrayAccessSuffix', () => {
238
+ this.CONSUME(t.StartBracket);
239
+ this.SUBRULE(this.expression);
240
+ // Support for legacy 2D array access
241
+ this.OPTION(() => {
242
+ this.CONSUME(t.Comma);
243
+ this.SUBRULE2(this.expression);
244
+ });
245
+ this.CONSUME(t.EndBracket);
246
+ });
247
+ structAccessorSuffix = this.RULE('structAccessSuffix', () => {
248
+ this.CONSUME(t.StructAccessorStart);
249
+ this.SUBRULE(this.expression);
250
+ this.CONSUME(t.EndBracket);
251
+ });
252
+ listAccessorSuffix = this.RULE('listAccessSuffix', () => {
253
+ this.CONSUME(t.DsListAccessorStart);
254
+ this.SUBRULE(this.expression);
255
+ this.CONSUME(t.EndBracket);
256
+ });
257
+ mapAccessorSuffix = this.RULE('mapAccessSuffix', () => {
258
+ this.CONSUME(t.DsMapAccessorStart);
259
+ this.SUBRULE(this.expression);
260
+ this.CONSUME(t.EndBracket);
261
+ });
262
+ gridAccessorSuffix = this.RULE('gridAccessSuffix', () => {
263
+ this.CONSUME(t.DsGridAccessorStart);
264
+ this.SUBRULE(this.expression);
265
+ this.CONSUME(t.Comma);
266
+ this.SUBRULE2(this.expression);
267
+ this.CONSUME(t.EndBracket);
268
+ });
269
+ arrayMutationAccessorSuffix = this.RULE('arrayMutationAccessorSuffix', () => {
270
+ this.CONSUME(t.ArrayMutateAccessorStart);
271
+ this.SUBRULE(this.expression);
272
+ this.CONSUME(t.EndBracket);
273
+ });
274
+ functionArguments = this.RULE('functionArguments', () => {
275
+ this.CONSUME(t.StartParen);
276
+ this.OPTION1(() => {
277
+ this.SUBRULE(this.functionArgument);
278
+ });
279
+ this.MANY(() => {
280
+ this.CONSUME(t.Comma);
281
+ this.OPTION2(() => this.SUBRULE2(this.functionArgument));
282
+ });
283
+ this.CONSUME(t.EndParen);
284
+ });
285
+ functionArgument = this.RULE('functionArgument', () => {
286
+ this.OPTION1(() => {
287
+ this.SUBRULE(this.jsdoc);
288
+ });
289
+ this.SUBRULE(this.assignmentRightHandSide);
290
+ });
291
+ emptyStatement = this.RULE('emptyStatement', () => {
292
+ this.CONSUME(t.Semicolon);
293
+ });
294
+ enumStatement = this.RULE('enumStatement', () => {
295
+ this.CONSUME(t.Enum);
296
+ this.CONSUME1(t.Identifier);
297
+ this.CONSUME(t.StartBrace);
298
+ this.SUBRULE(this.enumMember);
299
+ this.MANY(() => {
300
+ this.CONSUME2(t.Comma);
301
+ this.SUBRULE2(this.enumMember);
302
+ });
303
+ this.OPTION(() => this.CONSUME3(t.Comma));
304
+ this.CONSUME(t.EndBrace);
305
+ });
306
+ enumMember = this.RULE('enumMember', () => {
307
+ this.CONSUME(t.Identifier);
308
+ this.OPTION(() => {
309
+ this.CONSUME(t.Assign);
310
+ this.OPTION2(() => this.CONSUME(t.Minus));
311
+ this.CONSUME(c.NumericLiteral);
312
+ });
313
+ });
314
+ constructorSuffix = this.RULE('constructorSuffix', () => {
315
+ this.OPTION(() => {
316
+ this.CONSUME(t.Colon);
317
+ this.CONSUME(t.Identifier);
318
+ this.SUBRULE(this.functionArguments);
319
+ });
320
+ this.CONSUME(t.Constructor);
321
+ });
322
+ functionExpression = this.RULE('functionExpression', () => {
323
+ this.CONSUME(t.Function);
324
+ this.OPTION1(() => this.CONSUME1(t.Identifier));
325
+ this.SUBRULE1(this.functionParameters);
326
+ this.OPTION2(() => {
327
+ this.SUBRULE2(this.constructorSuffix);
328
+ });
329
+ this.SUBRULE(this.blockStatement);
330
+ });
331
+ functionStatement = this.RULE('functionStatement', () => {
332
+ this.SUBRULE(this.functionExpression);
333
+ this.OPTION(() => this.CONSUME(t.Semicolon));
334
+ });
335
+ functionParameters = this.RULE('functionParameters', () => {
336
+ this.CONSUME(t.StartParen);
337
+ this.MANY_SEP({
338
+ SEP: t.Comma,
339
+ DEF: () => this.SUBRULE(this.functionParameter),
340
+ });
341
+ this.CONSUME(t.EndParen);
342
+ });
343
+ functionParameter = this.RULE('functionParameter', () => {
344
+ this.CONSUME(t.Identifier);
345
+ this.OPTION(() => {
346
+ this.CONSUME(t.Assign);
347
+ this.SUBRULE(this.assignmentRightHandSide);
348
+ });
349
+ });
350
+ macroStatement = this.RULE('macroStatement', () => {
351
+ this.CONSUME(t.Macro);
352
+ this.CONSUME(t.Identifier);
353
+ this.SUBRULE(this.expressionStatement);
354
+ });
355
+ forStatement = this.RULE('forStatement', () => {
356
+ this.CONSUME(t.For);
357
+ this.CONSUME(t.StartParen);
358
+ this.OPTION1(() => this.OR([
359
+ { ALT: () => this.SUBRULE(this.localVarDeclarations) },
360
+ { ALT: () => this.SUBRULE(this.expression) },
361
+ ]));
362
+ this.CONSUME2(t.Semicolon);
363
+ this.OPTION2(() => this.SUBRULE2(this.expression));
364
+ this.CONSUME3(t.Semicolon);
365
+ this.OPTION3(() => this.SUBRULE3(this.expression));
366
+ this.CONSUME(t.EndParen);
367
+ this.SUBRULE(this.blockableStatement);
368
+ });
369
+ globalVarDeclarationsStatement = this.RULE('globalVarDeclarationsStatement', () => {
370
+ this.SUBRULE(this.globalVarDeclarations);
371
+ this.optionallyConsumeSemicolon();
372
+ });
373
+ globalVarDeclarations = this.RULE('globalVarDeclarations', () => {
374
+ this.CONSUME(t.GlobalVar);
375
+ this.AT_LEAST_ONE_SEP({
376
+ SEP: t.Comma,
377
+ DEF: () => {
378
+ this.SUBRULE(this.globalVarDeclaration);
379
+ },
380
+ });
381
+ });
382
+ globalVarDeclaration = this.RULE('globalVarDeclaration', () => {
383
+ this.CONSUME(t.Identifier);
384
+ });
385
+ localVarDeclarationsStatement = this.RULE('localVarDeclarationsStatement', () => {
386
+ this.SUBRULE(this.localVarDeclarations);
387
+ this.optionallyConsumeSemicolon();
388
+ });
389
+ localVarDeclarations = this.RULE('localVarDeclarations', () => {
390
+ this.CONSUME(t.Var);
391
+ this.AT_LEAST_ONE_SEP({
392
+ SEP: t.Comma,
393
+ DEF: () => {
394
+ this.SUBRULE(this.localVarDeclaration);
395
+ },
396
+ });
397
+ });
398
+ localVarDeclaration = this.RULE('localVarDeclaration', () => {
399
+ this.CONSUME(t.Identifier);
400
+ this.OPTION(() => {
401
+ this.CONSUME(c.AssignmentOperator);
402
+ this.SUBRULE(this.assignmentRightHandSide);
403
+ });
404
+ });
405
+ staticVarDeclarationStatement = this.RULE('staticVarDeclarationStatement', () => {
406
+ this.SUBRULE(this.staticVarDeclaration);
407
+ this.optionallyConsumeSemicolon();
408
+ });
409
+ staticVarDeclaration = this.RULE('staticVarDeclarations', () => {
410
+ this.CONSUME(t.Static);
411
+ this.CONSUME(t.Identifier);
412
+ this.CONSUME(c.AssignmentOperator);
413
+ this.SUBRULE(this.assignmentRightHandSide);
414
+ });
415
+ // For simple variable assignments (no accessors on the LHS)
416
+ variableAssignmentStatement = this.RULE('variableAssignmentStatement', () => {
417
+ this.SUBRULE(this.variableAssignment);
418
+ this.optionallyConsumeSemicolon();
419
+ });
420
+ variableAssignment = this.RULE('variableAssignment', () => {
421
+ this.CONSUME(t.Identifier);
422
+ this.CONSUME(c.AssignmentOperator);
423
+ this.SUBRULE(this.assignmentRightHandSide);
424
+ });
425
+ assignment = this.RULE('assignment', () => {
426
+ this.CONSUME(c.AssignmentOperator);
427
+ this.SUBRULE(this.assignmentRightHandSide);
428
+ });
429
+ assignmentRightHandSide = this.RULE('assignmentRightHandSide', () => {
430
+ this.OR([
431
+ { ALT: () => this.SUBRULE(this.expression) },
432
+ { ALT: () => this.SUBRULE(this.structLiteral) },
433
+ { ALT: () => this.SUBRULE(this.functionExpression) },
434
+ ]);
435
+ });
436
+ arrayLiteral = this.RULE('arrayLiteral', () => {
437
+ this.CONSUME(t.StartBracket);
438
+ this.OPTION(() => {
439
+ this.SUBRULE(this.assignmentRightHandSide);
440
+ this.MANY(() => {
441
+ this.CONSUME1(t.Comma);
442
+ this.SUBRULE2(this.assignmentRightHandSide);
443
+ });
444
+ this.OPTION2(() => this.CONSUME2(t.Comma));
445
+ });
446
+ this.CONSUME(t.EndBracket);
447
+ });
448
+ structLiteral = this.RULE('structLiteral', () => {
449
+ this.CONSUME(t.StartBrace);
450
+ this.OPTION1(() => {
451
+ this.SUBRULE1(this.structLiteralEntry);
452
+ this.MANY(() => {
453
+ this.CONSUME1(t.Comma);
454
+ this.SUBRULE2(this.structLiteralEntry);
455
+ });
456
+ this.OPTION2(() => this.CONSUME2(t.Comma));
457
+ });
458
+ this.CONSUME(t.EndBrace);
459
+ });
460
+ structLiteralEntry = this.RULE('structLiteralEntry', () => {
461
+ this.OR([
462
+ {
463
+ ALT: () => {
464
+ this.OPTION(() => {
465
+ this.SUBRULE(this.jsdoc);
466
+ });
467
+ this.CONSUME(t.Identifier);
468
+ },
469
+ },
470
+ { ALT: () => this.SUBRULE(this.stringLiteral) },
471
+ ]);
472
+ this.OPTION1(() => {
473
+ this.CONSUME(t.Colon);
474
+ this.SUBRULE(this.assignmentRightHandSide);
475
+ });
476
+ });
477
+ whileStatement = this.RULE('whileStatement', () => {
478
+ this.CONSUME(t.While);
479
+ this.SUBRULE(this.expression);
480
+ this.SUBRULE(this.blockableStatement);
481
+ });
482
+ doUntilStatement = this.RULE('doUntilStatement', () => {
483
+ this.CONSUME(t.Do);
484
+ this.SUBRULE(this.blockableStatement);
485
+ this.CONSUME(t.Until);
486
+ this.SUBRULE(this.expression);
487
+ });
488
+ switchStatement = this.RULE('switchStatement', () => {
489
+ this.CONSUME(t.Switch);
490
+ this.SUBRULE(this.expression);
491
+ this.CONSUME(t.StartBrace);
492
+ this.MANY(() => this.OR([
493
+ { ALT: () => this.SUBRULE(this.caseStatement) },
494
+ { ALT: () => this.SUBRULE(this.defaultStatement) },
495
+ ]));
496
+ this.CONSUME(t.EndBrace);
497
+ });
498
+ caseStatement = this.RULE('caseStatement', () => {
499
+ this.CONSUME(t.Case);
500
+ this.SUBRULE(this.expression);
501
+ this.CONSUME(t.Colon);
502
+ this.SUBRULE(this.blockableStatements);
503
+ });
504
+ defaultStatement = this.RULE('defaultStatement', () => {
505
+ this.CONSUME(t.Default);
506
+ this.CONSUME(t.Colon);
507
+ this.SUBRULE(this.blockableStatements);
508
+ });
509
+ breakStatement = this.RULE('breakStatement', () => {
510
+ this.CONSUME(t.Break);
511
+ this.optionallyConsumeSemicolon();
512
+ });
513
+ continueStatement = this.RULE('continueStatement', () => {
514
+ this.CONSUME(t.Continue);
515
+ this.optionallyConsumeSemicolon();
516
+ });
517
+ exitStatement = this.RULE('exitStatement', () => {
518
+ this.CONSUME(t.Exit);
519
+ this.optionallyConsumeSemicolon();
520
+ });
521
+ withStatement = this.RULE('withStatement', () => {
522
+ this.CONSUME(t.With);
523
+ this.SUBRULE(this.expression);
524
+ this.SUBRULE(this.blockableStatement);
525
+ });
526
+ tryStatement = this.RULE('tryStatement', () => {
527
+ this.CONSUME(t.Try);
528
+ this.SUBRULE1(this.blockStatement);
529
+ this.OPTION1(() => this.SUBRULE2(this.catchStatement));
530
+ this.OPTION2(() => {
531
+ this.CONSUME(t.Finally);
532
+ this.SUBRULE3(this.blockStatement);
533
+ });
534
+ });
535
+ catchStatement = this.RULE('catchStatement', () => {
536
+ this.CONSUME(t.Catch);
537
+ this.CONSUME(t.StartParen);
538
+ this.CONSUME(t.Identifier);
539
+ this.CONSUME(t.EndParen);
540
+ this.SUBRULE2(this.blockStatement);
541
+ });
542
+ constructor() {
543
+ super([...tokens, ...categories], {
544
+ nodeLocationTracking: 'full',
545
+ recoveryEnabled: true,
546
+ skipValidations: true,
547
+ });
548
+ this.performSelfAnalysis();
549
+ }
550
+ static jsonify(cst) {
551
+ return JSON.stringify(cst, (key, val) => {
552
+ if (key === 'tokenType') {
553
+ return {
554
+ name: val.name,
555
+ categories: val.CATEGORIES.map((c) => c.name),
556
+ isParent: val.isParent,
557
+ };
558
+ }
559
+ return val;
560
+ }, 2);
561
+ }
562
+ }
563
+ export function withCtxKind(ctx, kind) {
564
+ return {
565
+ ctxKindStack: [...ctx.ctxKindStack, kind],
566
+ returns: ctx.returns,
567
+ };
568
+ }
569
+ export const parser = new GmlParser();
570
+ export const GmlVisitorBase = parser.getBaseCstVisitorConstructorWithDefaults();
571
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../src/parser.test.ts"],"names":[],"mappings":""}