circuitscript 0.0.32 → 0.0.35

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 (51) hide show
  1. package/dist/cjs/BaseVisitor.js +187 -39
  2. package/dist/cjs/antlr/CircuitScriptLexer.js +226 -185
  3. package/dist/cjs/antlr/CircuitScriptParser.js +1439 -902
  4. package/dist/cjs/draw_symbols.js +1 -0
  5. package/dist/cjs/execute.js +14 -12
  6. package/dist/cjs/globals.js +14 -2
  7. package/dist/cjs/helpers.js +62 -19
  8. package/dist/cjs/layout.js +88 -36
  9. package/dist/cjs/objects/ClassComponent.js +3 -0
  10. package/dist/cjs/objects/ExecutionScope.js +1 -0
  11. package/dist/cjs/objects/Frame.js +4 -1
  12. package/dist/cjs/objects/ParamDefinition.js +1 -7
  13. package/dist/cjs/objects/types.js +6 -0
  14. package/dist/cjs/regenerate-tests.js +2 -1
  15. package/dist/cjs/render.js +238 -42
  16. package/dist/cjs/visitor.js +162 -27
  17. package/dist/esm/BaseVisitor.mjs +189 -41
  18. package/dist/esm/antlr/CircuitScriptLexer.mjs +226 -185
  19. package/dist/esm/antlr/CircuitScriptParser.mjs +1428 -899
  20. package/dist/esm/antlr/CircuitScriptVisitor.mjs +9 -2
  21. package/dist/esm/draw_symbols.mjs +1 -0
  22. package/dist/esm/execute.mjs +14 -12
  23. package/dist/esm/globals.mjs +13 -1
  24. package/dist/esm/helpers.mjs +61 -20
  25. package/dist/esm/layout.mjs +88 -37
  26. package/dist/esm/objects/ClassComponent.mjs +3 -0
  27. package/dist/esm/objects/ExecutionScope.mjs +1 -0
  28. package/dist/esm/objects/Frame.mjs +5 -1
  29. package/dist/esm/objects/ParamDefinition.mjs +0 -6
  30. package/dist/esm/objects/types.mjs +6 -0
  31. package/dist/esm/regenerate-tests.mjs +2 -1
  32. package/dist/esm/render.mjs +234 -43
  33. package/dist/esm/visitor.mjs +164 -29
  34. package/dist/types/BaseVisitor.d.ts +8 -2
  35. package/dist/types/antlr/CircuitScriptLexer.d.ts +41 -30
  36. package/dist/types/antlr/CircuitScriptParser.d.ts +169 -81
  37. package/dist/types/antlr/CircuitScriptVisitor.d.ts +18 -4
  38. package/dist/types/draw_symbols.d.ts +2 -1
  39. package/dist/types/execute.d.ts +6 -3
  40. package/dist/types/globals.d.ts +11 -0
  41. package/dist/types/helpers.d.ts +12 -0
  42. package/dist/types/layout.d.ts +17 -9
  43. package/dist/types/objects/ClassComponent.d.ts +2 -1
  44. package/dist/types/objects/ExecutionScope.d.ts +2 -0
  45. package/dist/types/objects/Frame.d.ts +6 -2
  46. package/dist/types/objects/ParamDefinition.d.ts +0 -4
  47. package/dist/types/objects/types.d.ts +4 -2
  48. package/dist/types/render.d.ts +6 -14
  49. package/dist/types/visitor.d.ts +10 -2
  50. package/libs/lib.cst +283 -0
  51. package/package.json +1 -1
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = exports.Function_exprContext = exports.Function_def_exprContext = exports.Value_exprContext = exports.Unary_operatorContext = exports.Binary_operatorContext = exports.RoundedBracketsExprContext = exports.BinaryOperatorExprContext = exports.ValueAtomExprContext = exports.UnaryOperatorExprContext = exports.DataExprContext = exports.LogicalOperatorExprContext = exports.MultiplyExprContext = exports.AdditionExprContext = exports.FunctionCallExprContext = exports.Data_exprContext = exports.Double_dot_property_set_exprContext = exports.Property_set_exprContext = exports.ParametersContext = exports.Keyword_assignment_exprContext = exports.Assignment_exprContext = exports.Break_keywordContext = exports.At_block_pin_expression_complexContext = exports.At_block_pin_expression_simpleContext = exports.At_block_pin_exprContext = exports.At_block_expressionsContext = exports.At_blockContext = exports.At_to_multiple_line_expr_to_pinContext = exports.At_to_multiple_line_exprContext = exports.At_to_multiple_exprContext = exports.To_component_exprContext = exports.At_component_exprContext = exports.Pin_select_expr2Context = exports.Component_select_exprContext = exports.Add_component_exprContext = exports.Data_expr_with_assignmentContext = exports.Component_modifier_exprContext = exports.Pin_select_exprContext = exports.Assignment_expr2Context = exports.Property_set_expr2Context = exports.Path_block_innerContext = exports.Path_blocksContext = exports.Expressions_blockContext = exports.ExpressionContext = exports.ScriptContext = exports.CircuitScriptParser = void 0;
27
- exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Blank_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.Graphic_exprContext = exports.Nested_properties_innerContext = exports.Create_module_exprContext = exports.Create_graphic_exprContext = exports.Create_component_exprContext = exports.Property_block_exprContext = exports.Function_return_exprContext = void 0;
26
+ exports.Atom_exprContext = exports.Function_args_exprContext = exports.Function_exprContext = exports.Function_def_exprContext = exports.Value_exprContext = exports.Unary_operatorContext = exports.Binary_operatorContext = exports.RoundedBracketsExprContext = exports.BinaryOperatorExprContext = exports.ValueAtomExprContext = exports.UnaryOperatorExprContext = exports.DataExprContext = exports.LogicalOperatorExprContext = exports.MultiplyExprContext = exports.AdditionExprContext = exports.FunctionCallExprContext = exports.ArrayExprContext = exports.Data_exprContext = exports.Double_dot_property_set_exprContext = exports.Property_set_exprContext = exports.ParametersContext = exports.Keyword_assignment_exprContext = exports.Operator_assignment_exprContext = exports.Assignment_exprContext = exports.Continue_keywordContext = exports.Break_keywordContext = exports.At_block_pin_expression_complexContext = exports.At_block_pin_expression_simpleContext = exports.At_block_pin_exprContext = exports.At_block_expressionsContext = exports.At_blockContext = exports.At_to_multiple_line_expr_to_pinContext = exports.At_to_multiple_line_exprContext = exports.At_to_multiple_exprContext = exports.To_component_exprContext = exports.At_component_exprContext = exports.Pin_select_expr2Context = exports.Component_select_exprContext = exports.Add_component_exprContext = exports.Data_expr_with_assignmentContext = exports.Component_modifier_exprContext = exports.Pin_select_exprContext = exports.Assignment_expr2Context = exports.Property_set_expr2Context = exports.Path_block_innerContext = exports.Path_blocksContext = exports.Expressions_blockContext = exports.ExpressionContext = exports.ScriptContext = exports.CircuitScriptParser = void 0;
27
+ exports.For_exprContext = exports.While_exprContext = exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Array_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.GraphicForExprContext = exports.GraphicCommandExprContext = exports.Graphic_exprContext = exports.Nested_properties_innerContext = exports.Create_module_exprContext = exports.Create_graphic_exprContext = exports.Graphic_expressions_blockContext = exports.Create_component_exprContext = exports.Property_block_exprContext = exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_exprContext = void 0;
28
28
  const antlr = __importStar(require("antlr4ng"));
29
29
  class CircuitScriptParser extends antlr.Parser {
30
30
  get grammarFileName() { return "CircuitScript.g4"; }
@@ -46,12 +46,12 @@ class CircuitScriptParser extends antlr.Parser {
46
46
  try {
47
47
  this.enterOuterAlt(localContext, 1);
48
48
  {
49
- this.state = 120;
49
+ this.state = 130;
50
50
  this.errorHandler.sync(this);
51
51
  _la = this.tokenStream.LA(1);
52
52
  do {
53
53
  {
54
- this.state = 120;
54
+ this.state = 130;
55
55
  this.errorHandler.sync(this);
56
56
  switch (this.tokenStream.LA(1)) {
57
57
  case CircuitScriptParser.T__3:
@@ -66,19 +66,23 @@ class CircuitScriptParser extends antlr.Parser {
66
66
  case CircuitScriptParser.Parallel:
67
67
  case CircuitScriptParser.Define:
68
68
  case CircuitScriptParser.Import:
69
+ case CircuitScriptParser.For:
70
+ case CircuitScriptParser.While:
71
+ case CircuitScriptParser.Continue:
69
72
  case CircuitScriptParser.If:
70
73
  case CircuitScriptParser.Frame:
74
+ case CircuitScriptParser.Sheet:
71
75
  case CircuitScriptParser.Addition:
72
76
  case CircuitScriptParser.Divide:
73
77
  case CircuitScriptParser.ID:
74
78
  {
75
- this.state = 118;
79
+ this.state = 128;
76
80
  this.expression();
77
81
  }
78
82
  break;
79
83
  case CircuitScriptParser.NEWLINE:
80
84
  {
81
- this.state = 119;
85
+ this.state = 129;
82
86
  this.match(CircuitScriptParser.NEWLINE);
83
87
  }
84
88
  break;
@@ -86,11 +90,11 @@ class CircuitScriptParser extends antlr.Parser {
86
90
  throw new antlr.NoViableAltException(this);
87
91
  }
88
92
  }
89
- this.state = 122;
93
+ this.state = 132;
90
94
  this.errorHandler.sync(this);
91
95
  _la = this.tokenStream.LA(1);
92
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 331301648) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 65797) !== 0));
93
- this.state = 124;
96
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
97
+ this.state = 134;
94
98
  this.match(CircuitScriptParser.EOF);
95
99
  }
96
100
  }
@@ -112,135 +116,163 @@ class CircuitScriptParser extends antlr.Parser {
112
116
  let localContext = new ExpressionContext(this.context, this.state);
113
117
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
114
118
  try {
115
- this.state = 144;
119
+ this.state = 158;
116
120
  this.errorHandler.sync(this);
117
121
  switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context)) {
118
122
  case 1:
119
123
  this.enterOuterAlt(localContext, 1);
120
124
  {
121
- this.state = 126;
125
+ this.state = 136;
122
126
  this.add_component_expr();
123
127
  }
124
128
  break;
125
129
  case 2:
126
130
  this.enterOuterAlt(localContext, 2);
127
131
  {
128
- this.state = 127;
132
+ this.state = 137;
129
133
  this.to_component_expr();
130
134
  }
131
135
  break;
132
136
  case 3:
133
137
  this.enterOuterAlt(localContext, 3);
134
138
  {
135
- this.state = 128;
139
+ this.state = 138;
136
140
  this.at_component_expr();
137
141
  }
138
142
  break;
139
143
  case 4:
140
144
  this.enterOuterAlt(localContext, 4);
141
145
  {
142
- this.state = 129;
146
+ this.state = 139;
143
147
  this.assignment_expr();
144
148
  }
145
149
  break;
146
150
  case 5:
147
151
  this.enterOuterAlt(localContext, 5);
148
152
  {
149
- this.state = 130;
150
- this.property_set_expr();
153
+ this.state = 140;
154
+ this.operator_assignment_expr();
151
155
  }
152
156
  break;
153
157
  case 6:
154
158
  this.enterOuterAlt(localContext, 6);
155
159
  {
156
- this.state = 131;
157
- this.property_set_expr2();
160
+ this.state = 141;
161
+ this.property_set_expr();
158
162
  }
159
163
  break;
160
164
  case 7:
161
165
  this.enterOuterAlt(localContext, 7);
162
166
  {
163
- this.state = 132;
164
- this.double_dot_property_set_expr();
167
+ this.state = 142;
168
+ this.property_set_expr2();
165
169
  }
166
170
  break;
167
171
  case 8:
168
172
  this.enterOuterAlt(localContext, 8);
169
173
  {
170
- this.state = 133;
171
- this.break_keyword();
174
+ this.state = 143;
175
+ this.double_dot_property_set_expr();
172
176
  }
173
177
  break;
174
178
  case 9:
175
179
  this.enterOuterAlt(localContext, 9);
176
180
  {
177
- this.state = 134;
178
- this.function_def_expr();
181
+ this.state = 144;
182
+ this.break_keyword();
179
183
  }
180
184
  break;
181
185
  case 10:
182
186
  this.enterOuterAlt(localContext, 10);
183
187
  {
184
- this.state = 135;
185
- this.function_call_expr();
188
+ this.state = 145;
189
+ this.continue_keyword();
186
190
  }
187
191
  break;
188
192
  case 11:
189
193
  this.enterOuterAlt(localContext, 11);
190
194
  {
191
- this.state = 136;
192
- this.wire_expr();
195
+ this.state = 146;
196
+ this.function_def_expr();
193
197
  }
194
198
  break;
195
199
  case 12:
196
200
  this.enterOuterAlt(localContext, 12);
197
201
  {
198
- this.state = 137;
199
- this.import_expr();
202
+ this.state = 147;
203
+ this.function_call_expr();
200
204
  }
201
205
  break;
202
206
  case 13:
203
207
  this.enterOuterAlt(localContext, 13);
204
208
  {
205
- this.state = 138;
206
- this.frame_expr();
209
+ this.state = 148;
210
+ this.wire_expr();
207
211
  }
208
212
  break;
209
213
  case 14:
210
214
  this.enterOuterAlt(localContext, 14);
211
215
  {
212
- this.state = 139;
213
- this.atom_expr();
216
+ this.state = 149;
217
+ this.import_expr();
214
218
  }
215
219
  break;
216
220
  case 15:
217
221
  this.enterOuterAlt(localContext, 15);
218
222
  {
219
- this.state = 140;
220
- this.at_block();
223
+ this.state = 150;
224
+ this.frame_expr();
221
225
  }
222
226
  break;
223
227
  case 16:
224
228
  this.enterOuterAlt(localContext, 16);
225
229
  {
226
- this.state = 141;
227
- this.path_blocks();
230
+ this.state = 151;
231
+ this.atom_expr();
228
232
  }
229
233
  break;
230
234
  case 17:
231
235
  this.enterOuterAlt(localContext, 17);
232
236
  {
233
- this.state = 142;
234
- this.point_expr();
237
+ this.state = 152;
238
+ this.at_block();
235
239
  }
236
240
  break;
237
241
  case 18:
238
242
  this.enterOuterAlt(localContext, 18);
239
243
  {
240
- this.state = 143;
244
+ this.state = 153;
245
+ this.path_blocks();
246
+ }
247
+ break;
248
+ case 19:
249
+ this.enterOuterAlt(localContext, 19);
250
+ {
251
+ this.state = 154;
252
+ this.point_expr();
253
+ }
254
+ break;
255
+ case 20:
256
+ this.enterOuterAlt(localContext, 20);
257
+ {
258
+ this.state = 155;
241
259
  this.if_expr();
242
260
  }
243
261
  break;
262
+ case 21:
263
+ this.enterOuterAlt(localContext, 21);
264
+ {
265
+ this.state = 156;
266
+ this.while_expr();
267
+ }
268
+ break;
269
+ case 22:
270
+ this.enterOuterAlt(localContext, 22);
271
+ {
272
+ this.state = 157;
273
+ this.for_expr();
274
+ }
275
+ break;
244
276
  }
245
277
  }
246
278
  catch (re) {
@@ -264,21 +296,21 @@ class CircuitScriptParser extends antlr.Parser {
264
296
  try {
265
297
  this.enterOuterAlt(localContext, 1);
266
298
  {
267
- this.state = 146;
299
+ this.state = 160;
268
300
  this.match(CircuitScriptParser.NEWLINE);
269
- this.state = 147;
301
+ this.state = 161;
270
302
  this.match(CircuitScriptParser.INDENT);
271
- this.state = 150;
303
+ this.state = 164;
272
304
  this.errorHandler.sync(this);
273
305
  _la = this.tokenStream.LA(1);
274
306
  do {
275
307
  {
276
- this.state = 150;
308
+ this.state = 164;
277
309
  this.errorHandler.sync(this);
278
310
  switch (this.tokenStream.LA(1)) {
279
311
  case CircuitScriptParser.NEWLINE:
280
312
  {
281
- this.state = 148;
313
+ this.state = 162;
282
314
  this.match(CircuitScriptParser.NEWLINE);
283
315
  }
284
316
  break;
@@ -294,13 +326,17 @@ class CircuitScriptParser extends antlr.Parser {
294
326
  case CircuitScriptParser.Parallel:
295
327
  case CircuitScriptParser.Define:
296
328
  case CircuitScriptParser.Import:
329
+ case CircuitScriptParser.For:
330
+ case CircuitScriptParser.While:
331
+ case CircuitScriptParser.Continue:
297
332
  case CircuitScriptParser.If:
298
333
  case CircuitScriptParser.Frame:
334
+ case CircuitScriptParser.Sheet:
299
335
  case CircuitScriptParser.Addition:
300
336
  case CircuitScriptParser.Divide:
301
337
  case CircuitScriptParser.ID:
302
338
  {
303
- this.state = 149;
339
+ this.state = 163;
304
340
  this.expression();
305
341
  }
306
342
  break;
@@ -308,11 +344,11 @@ class CircuitScriptParser extends antlr.Parser {
308
344
  throw new antlr.NoViableAltException(this);
309
345
  }
310
346
  }
311
- this.state = 152;
347
+ this.state = 166;
312
348
  this.errorHandler.sync(this);
313
349
  _la = this.tokenStream.LA(1);
314
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 331301648) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 65797) !== 0));
315
- this.state = 154;
350
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
351
+ this.state = 168;
316
352
  this.match(CircuitScriptParser.DEDENT);
317
353
  }
318
354
  }
@@ -337,7 +373,7 @@ class CircuitScriptParser extends antlr.Parser {
337
373
  let alternative;
338
374
  this.enterOuterAlt(localContext, 1);
339
375
  {
340
- this.state = 157;
376
+ this.state = 171;
341
377
  this.errorHandler.sync(this);
342
378
  alternative = 1;
343
379
  do {
@@ -345,7 +381,7 @@ class CircuitScriptParser extends antlr.Parser {
345
381
  case 1:
346
382
  {
347
383
  {
348
- this.state = 156;
384
+ this.state = 170;
349
385
  this.path_block_inner();
350
386
  }
351
387
  }
@@ -353,7 +389,7 @@ class CircuitScriptParser extends antlr.Parser {
353
389
  default:
354
390
  throw new antlr.NoViableAltException(this);
355
391
  }
356
- this.state = 159;
392
+ this.state = 173;
357
393
  this.errorHandler.sync(this);
358
394
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context);
359
395
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -380,7 +416,7 @@ class CircuitScriptParser extends antlr.Parser {
380
416
  try {
381
417
  this.enterOuterAlt(localContext, 1);
382
418
  {
383
- this.state = 161;
419
+ this.state = 175;
384
420
  _la = this.tokenStream.LA(1);
385
421
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3670528) !== 0))) {
386
422
  this.errorHandler.recoverInline(this);
@@ -389,9 +425,9 @@ class CircuitScriptParser extends antlr.Parser {
389
425
  this.errorHandler.reportMatch(this);
390
426
  this.consume();
391
427
  }
392
- this.state = 162;
428
+ this.state = 176;
393
429
  this.match(CircuitScriptParser.T__0);
394
- this.state = 163;
430
+ this.state = 177;
395
431
  this.expressions_block();
396
432
  }
397
433
  }
@@ -416,32 +452,32 @@ class CircuitScriptParser extends antlr.Parser {
416
452
  try {
417
453
  this.enterOuterAlt(localContext, 1);
418
454
  {
419
- this.state = 165;
455
+ this.state = 179;
420
456
  this.atom_expr();
421
- this.state = 166;
457
+ this.state = 180;
422
458
  this.match(CircuitScriptParser.T__0);
423
- this.state = 167;
459
+ this.state = 181;
424
460
  this.match(CircuitScriptParser.NEWLINE);
425
- this.state = 168;
461
+ this.state = 182;
426
462
  this.match(CircuitScriptParser.INDENT);
427
- this.state = 171;
463
+ this.state = 185;
428
464
  this.errorHandler.sync(this);
429
465
  _la = this.tokenStream.LA(1);
430
466
  do {
431
467
  {
432
- this.state = 171;
468
+ this.state = 185;
433
469
  this.errorHandler.sync(this);
434
470
  switch (this.tokenStream.LA(1)) {
435
471
  case CircuitScriptParser.NEWLINE:
436
472
  {
437
- this.state = 169;
473
+ this.state = 183;
438
474
  this.match(CircuitScriptParser.NEWLINE);
439
475
  }
440
476
  break;
441
477
  case CircuitScriptParser.ID:
442
478
  case CircuitScriptParser.INTEGER_VALUE:
443
479
  {
444
- this.state = 170;
480
+ this.state = 184;
445
481
  this.assignment_expr2();
446
482
  }
447
483
  break;
@@ -449,11 +485,11 @@ class CircuitScriptParser extends antlr.Parser {
449
485
  throw new antlr.NoViableAltException(this);
450
486
  }
451
487
  }
452
- this.state = 173;
488
+ this.state = 187;
453
489
  this.errorHandler.sync(this);
454
490
  _la = this.tokenStream.LA(1);
455
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 259) !== 0));
456
- this.state = 175;
491
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 259) !== 0));
492
+ this.state = 189;
457
493
  this.match(CircuitScriptParser.DEDENT);
458
494
  }
459
495
  }
@@ -478,18 +514,18 @@ class CircuitScriptParser extends antlr.Parser {
478
514
  try {
479
515
  this.enterOuterAlt(localContext, 1);
480
516
  {
481
- this.state = 177;
517
+ this.state = 191;
482
518
  _la = this.tokenStream.LA(1);
483
- if (!(_la === 45 || _la === 46)) {
519
+ if (!(_la === 56 || _la === 57)) {
484
520
  this.errorHandler.recoverInline(this);
485
521
  }
486
522
  else {
487
523
  this.errorHandler.reportMatch(this);
488
524
  this.consume();
489
525
  }
490
- this.state = 178;
526
+ this.state = 192;
491
527
  this.match(CircuitScriptParser.T__0);
492
- this.state = 179;
528
+ this.state = 193;
493
529
  this.value_expr();
494
530
  }
495
531
  }
@@ -514,11 +550,11 @@ class CircuitScriptParser extends antlr.Parser {
514
550
  try {
515
551
  this.enterOuterAlt(localContext, 1);
516
552
  {
517
- this.state = 181;
553
+ this.state = 195;
518
554
  this.match(CircuitScriptParser.Pin);
519
- this.state = 182;
555
+ this.state = 196;
520
556
  _la = this.tokenStream.LA(1);
521
- if (!(_la === 46 || _la === 49)) {
557
+ if (!(_la === 57 || _la === 60)) {
522
558
  this.errorHandler.recoverInline(this);
523
559
  }
524
560
  else {
@@ -547,14 +583,13 @@ class CircuitScriptParser extends antlr.Parser {
547
583
  try {
548
584
  this.enterOuterAlt(localContext, 1);
549
585
  {
550
- this.state = 184;
586
+ this.state = 198;
551
587
  this.match(CircuitScriptParser.ID);
552
- this.state = 185;
588
+ this.state = 199;
553
589
  this.match(CircuitScriptParser.T__0);
554
- this.state = 188;
590
+ this.state = 202;
555
591
  this.errorHandler.sync(this);
556
592
  switch (this.tokenStream.LA(1)) {
557
- case CircuitScriptParser.T__5:
558
593
  case CircuitScriptParser.Minus:
559
594
  case CircuitScriptParser.BOOLEAN_VALUE:
560
595
  case CircuitScriptParser.INTEGER_VALUE:
@@ -563,13 +598,13 @@ class CircuitScriptParser extends antlr.Parser {
563
598
  case CircuitScriptParser.STRING_VALUE:
564
599
  case CircuitScriptParser.PERCENTAGE_VALUE:
565
600
  {
566
- this.state = 186;
601
+ this.state = 200;
567
602
  this.value_expr();
568
603
  }
569
604
  break;
570
605
  case CircuitScriptParser.ID:
571
606
  {
572
- this.state = 187;
607
+ this.state = 201;
573
608
  this.match(CircuitScriptParser.ID);
574
609
  }
575
610
  break;
@@ -600,44 +635,44 @@ class CircuitScriptParser extends antlr.Parser {
600
635
  let alternative;
601
636
  this.enterOuterAlt(localContext, 1);
602
637
  {
603
- this.state = 192;
638
+ this.state = 206;
604
639
  this.errorHandler.sync(this);
605
640
  switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context)) {
606
641
  case 1:
607
642
  {
608
- this.state = 190;
643
+ this.state = 204;
609
644
  this.data_expr(0);
610
645
  }
611
646
  break;
612
647
  case 2:
613
648
  {
614
- this.state = 191;
649
+ this.state = 205;
615
650
  this.assignment_expr();
616
651
  }
617
652
  break;
618
653
  }
619
- this.state = 197;
654
+ this.state = 211;
620
655
  this.errorHandler.sync(this);
621
656
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
622
657
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
623
658
  if (alternative === 1) {
624
659
  {
625
660
  {
626
- this.state = 194;
661
+ this.state = 208;
627
662
  this.component_modifier_expr();
628
663
  }
629
664
  }
630
665
  }
631
- this.state = 199;
666
+ this.state = 213;
632
667
  this.errorHandler.sync(this);
633
668
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
634
669
  }
635
- this.state = 201;
670
+ this.state = 215;
636
671
  this.errorHandler.sync(this);
637
672
  _la = this.tokenStream.LA(1);
638
673
  if (_la === 15) {
639
674
  {
640
- this.state = 200;
675
+ this.state = 214;
641
676
  this.pin_select_expr();
642
677
  }
643
678
  }
@@ -663,9 +698,9 @@ class CircuitScriptParser extends antlr.Parser {
663
698
  try {
664
699
  this.enterOuterAlt(localContext, 1);
665
700
  {
666
- this.state = 203;
701
+ this.state = 217;
667
702
  this.match(CircuitScriptParser.Add);
668
- this.state = 204;
703
+ this.state = 218;
669
704
  this.data_expr_with_assignment();
670
705
  }
671
706
  }
@@ -687,7 +722,7 @@ class CircuitScriptParser extends antlr.Parser {
687
722
  let localContext = new Component_select_exprContext(this.context, this.state);
688
723
  this.enterRule(localContext, 22, CircuitScriptParser.RULE_component_select_expr);
689
724
  try {
690
- this.state = 208;
725
+ this.state = 222;
691
726
  this.errorHandler.sync(this);
692
727
  switch (this.tokenStream.LA(1)) {
693
728
  case CircuitScriptParser.T__5:
@@ -706,14 +741,14 @@ class CircuitScriptParser extends antlr.Parser {
706
741
  case CircuitScriptParser.PERCENTAGE_VALUE:
707
742
  this.enterOuterAlt(localContext, 1);
708
743
  {
709
- this.state = 206;
744
+ this.state = 220;
710
745
  this.data_expr_with_assignment();
711
746
  }
712
747
  break;
713
748
  case CircuitScriptParser.Pin:
714
749
  this.enterOuterAlt(localContext, 2);
715
750
  {
716
- this.state = 207;
751
+ this.state = 221;
717
752
  this.pin_select_expr();
718
753
  }
719
754
  break;
@@ -742,9 +777,9 @@ class CircuitScriptParser extends antlr.Parser {
742
777
  try {
743
778
  this.enterOuterAlt(localContext, 1);
744
779
  {
745
- this.state = 210;
780
+ this.state = 224;
746
781
  _la = this.tokenStream.LA(1);
747
- if (!(_la === 46 || _la === 49)) {
782
+ if (!(_la === 57 || _la === 60)) {
748
783
  this.errorHandler.recoverInline(this);
749
784
  }
750
785
  else {
@@ -773,9 +808,9 @@ class CircuitScriptParser extends antlr.Parser {
773
808
  try {
774
809
  this.enterOuterAlt(localContext, 1);
775
810
  {
776
- this.state = 212;
811
+ this.state = 226;
777
812
  this.match(CircuitScriptParser.At);
778
- this.state = 215;
813
+ this.state = 229;
779
814
  this.errorHandler.sync(this);
780
815
  switch (this.tokenStream.LA(1)) {
781
816
  case CircuitScriptParser.T__5:
@@ -794,13 +829,13 @@ class CircuitScriptParser extends antlr.Parser {
794
829
  case CircuitScriptParser.STRING_VALUE:
795
830
  case CircuitScriptParser.PERCENTAGE_VALUE:
796
831
  {
797
- this.state = 213;
832
+ this.state = 227;
798
833
  this.component_select_expr();
799
834
  }
800
835
  break;
801
836
  case CircuitScriptParser.Point:
802
837
  {
803
- this.state = 214;
838
+ this.state = 228;
804
839
  this.match(CircuitScriptParser.Point);
805
840
  }
806
841
  break;
@@ -830,9 +865,9 @@ class CircuitScriptParser extends antlr.Parser {
830
865
  try {
831
866
  this.enterOuterAlt(localContext, 1);
832
867
  {
833
- this.state = 217;
868
+ this.state = 231;
834
869
  this.match(CircuitScriptParser.To);
835
- this.state = 227;
870
+ this.state = 241;
836
871
  this.errorHandler.sync(this);
837
872
  switch (this.tokenStream.LA(1)) {
838
873
  case CircuitScriptParser.T__5:
@@ -852,21 +887,21 @@ class CircuitScriptParser extends antlr.Parser {
852
887
  case CircuitScriptParser.PERCENTAGE_VALUE:
853
888
  {
854
889
  {
855
- this.state = 218;
890
+ this.state = 232;
856
891
  this.component_select_expr();
857
- this.state = 223;
892
+ this.state = 237;
858
893
  this.errorHandler.sync(this);
859
894
  _la = this.tokenStream.LA(1);
860
895
  while (_la === 2) {
861
896
  {
862
897
  {
863
- this.state = 219;
898
+ this.state = 233;
864
899
  this.match(CircuitScriptParser.T__1);
865
- this.state = 220;
900
+ this.state = 234;
866
901
  this.component_select_expr();
867
902
  }
868
903
  }
869
- this.state = 225;
904
+ this.state = 239;
870
905
  this.errorHandler.sync(this);
871
906
  _la = this.tokenStream.LA(1);
872
907
  }
@@ -875,7 +910,7 @@ class CircuitScriptParser extends antlr.Parser {
875
910
  break;
876
911
  case CircuitScriptParser.Point:
877
912
  {
878
- this.state = 226;
913
+ this.state = 240;
879
914
  this.match(CircuitScriptParser.Point);
880
915
  }
881
916
  break;
@@ -905,54 +940,54 @@ class CircuitScriptParser extends antlr.Parser {
905
940
  try {
906
941
  this.enterOuterAlt(localContext, 1);
907
942
  {
908
- this.state = 229;
943
+ this.state = 243;
909
944
  this.match(CircuitScriptParser.At);
910
- this.state = 230;
945
+ this.state = 244;
911
946
  this.component_select_expr();
912
- this.state = 231;
947
+ this.state = 245;
913
948
  this.match(CircuitScriptParser.To);
914
- this.state = 232;
949
+ this.state = 246;
915
950
  this.component_select_expr();
916
- this.state = 237;
951
+ this.state = 251;
917
952
  this.errorHandler.sync(this);
918
953
  _la = this.tokenStream.LA(1);
919
954
  while (_la === 2) {
920
955
  {
921
956
  {
922
- this.state = 233;
957
+ this.state = 247;
923
958
  this.match(CircuitScriptParser.T__1);
924
- this.state = 234;
959
+ this.state = 248;
925
960
  this.component_select_expr();
926
961
  }
927
962
  }
928
- this.state = 239;
963
+ this.state = 253;
929
964
  this.errorHandler.sync(this);
930
965
  _la = this.tokenStream.LA(1);
931
966
  }
932
- this.state = 240;
967
+ this.state = 254;
933
968
  this.match(CircuitScriptParser.T__0);
934
- this.state = 241;
969
+ this.state = 255;
935
970
  this.match(CircuitScriptParser.NEWLINE);
936
- this.state = 242;
971
+ this.state = 256;
937
972
  this.match(CircuitScriptParser.INDENT);
938
- this.state = 245;
973
+ this.state = 259;
939
974
  this.errorHandler.sync(this);
940
975
  _la = this.tokenStream.LA(1);
941
976
  do {
942
977
  {
943
- this.state = 245;
978
+ this.state = 259;
944
979
  this.errorHandler.sync(this);
945
980
  switch (this.tokenStream.LA(1)) {
946
981
  case CircuitScriptParser.NEWLINE:
947
982
  {
948
- this.state = 243;
983
+ this.state = 257;
949
984
  this.match(CircuitScriptParser.NEWLINE);
950
985
  }
951
986
  break;
952
987
  case CircuitScriptParser.INTEGER_VALUE:
953
988
  case CircuitScriptParser.STRING_VALUE:
954
989
  {
955
- this.state = 244;
990
+ this.state = 258;
956
991
  this.at_to_multiple_line_expr();
957
992
  }
958
993
  break;
@@ -960,11 +995,11 @@ class CircuitScriptParser extends antlr.Parser {
960
995
  throw new antlr.NoViableAltException(this);
961
996
  }
962
997
  }
963
- this.state = 247;
998
+ this.state = 261;
964
999
  this.errorHandler.sync(this);
965
1000
  _la = this.tokenStream.LA(1);
966
- } while (((((_la - 46)) & ~0x1F) === 0 && ((1 << (_la - 46)) & 137) !== 0));
967
- this.state = 249;
1001
+ } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 137) !== 0));
1002
+ this.state = 263;
968
1003
  this.match(CircuitScriptParser.DEDENT);
969
1004
  }
970
1005
  }
@@ -989,25 +1024,25 @@ class CircuitScriptParser extends antlr.Parser {
989
1024
  try {
990
1025
  this.enterOuterAlt(localContext, 1);
991
1026
  {
992
- this.state = 251;
1027
+ this.state = 265;
993
1028
  this.pin_select_expr2();
994
- this.state = 252;
1029
+ this.state = 266;
995
1030
  this.match(CircuitScriptParser.T__0);
996
- this.state = 253;
1031
+ this.state = 267;
997
1032
  this.at_to_multiple_line_expr_to_pin();
998
- this.state = 258;
1033
+ this.state = 272;
999
1034
  this.errorHandler.sync(this);
1000
1035
  _la = this.tokenStream.LA(1);
1001
1036
  while (_la === 2) {
1002
1037
  {
1003
1038
  {
1004
- this.state = 254;
1039
+ this.state = 268;
1005
1040
  this.match(CircuitScriptParser.T__1);
1006
- this.state = 255;
1041
+ this.state = 269;
1007
1042
  this.at_to_multiple_line_expr_to_pin();
1008
1043
  }
1009
1044
  }
1010
- this.state = 260;
1045
+ this.state = 274;
1011
1046
  this.errorHandler.sync(this);
1012
1047
  _la = this.tokenStream.LA(1);
1013
1048
  }
@@ -1034,9 +1069,9 @@ class CircuitScriptParser extends antlr.Parser {
1034
1069
  try {
1035
1070
  this.enterOuterAlt(localContext, 1);
1036
1071
  {
1037
- this.state = 261;
1072
+ this.state = 275;
1038
1073
  _la = this.tokenStream.LA(1);
1039
- if (!(_la === 43 || _la === 46)) {
1074
+ if (!(_la === 54 || _la === 57)) {
1040
1075
  this.errorHandler.recoverInline(this);
1041
1076
  }
1042
1077
  else {
@@ -1066,25 +1101,25 @@ class CircuitScriptParser extends antlr.Parser {
1066
1101
  try {
1067
1102
  this.enterOuterAlt(localContext, 1);
1068
1103
  {
1069
- this.state = 263;
1104
+ this.state = 277;
1070
1105
  this.at_component_expr();
1071
- this.state = 264;
1106
+ this.state = 278;
1072
1107
  this.match(CircuitScriptParser.T__0);
1073
- this.state = 265;
1108
+ this.state = 279;
1074
1109
  this.match(CircuitScriptParser.NEWLINE);
1075
- this.state = 266;
1110
+ this.state = 280;
1076
1111
  this.match(CircuitScriptParser.INDENT);
1077
- this.state = 269;
1112
+ this.state = 283;
1078
1113
  this.errorHandler.sync(this);
1079
1114
  _la = this.tokenStream.LA(1);
1080
1115
  do {
1081
1116
  {
1082
- this.state = 269;
1117
+ this.state = 283;
1083
1118
  this.errorHandler.sync(this);
1084
1119
  switch (this.tokenStream.LA(1)) {
1085
1120
  case CircuitScriptParser.NEWLINE:
1086
1121
  {
1087
- this.state = 267;
1122
+ this.state = 281;
1088
1123
  this.match(CircuitScriptParser.NEWLINE);
1089
1124
  }
1090
1125
  break;
@@ -1100,15 +1135,19 @@ class CircuitScriptParser extends antlr.Parser {
1100
1135
  case CircuitScriptParser.Parallel:
1101
1136
  case CircuitScriptParser.Define:
1102
1137
  case CircuitScriptParser.Import:
1138
+ case CircuitScriptParser.For:
1139
+ case CircuitScriptParser.While:
1140
+ case CircuitScriptParser.Continue:
1103
1141
  case CircuitScriptParser.If:
1104
1142
  case CircuitScriptParser.Frame:
1143
+ case CircuitScriptParser.Sheet:
1105
1144
  case CircuitScriptParser.Addition:
1106
1145
  case CircuitScriptParser.Divide:
1107
1146
  case CircuitScriptParser.ID:
1108
1147
  case CircuitScriptParser.INTEGER_VALUE:
1109
1148
  case CircuitScriptParser.STRING_VALUE:
1110
1149
  {
1111
- this.state = 268;
1150
+ this.state = 282;
1112
1151
  this.at_block_expressions();
1113
1152
  }
1114
1153
  break;
@@ -1116,11 +1155,11 @@ class CircuitScriptParser extends antlr.Parser {
1116
1155
  throw new antlr.NoViableAltException(this);
1117
1156
  }
1118
1157
  }
1119
- this.state = 271;
1158
+ this.state = 285;
1120
1159
  this.errorHandler.sync(this);
1121
1160
  _la = this.tokenStream.LA(1);
1122
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 331301648) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 70405) !== 0));
1123
- this.state = 273;
1161
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4505605) !== 0));
1162
+ this.state = 287;
1124
1163
  this.match(CircuitScriptParser.DEDENT);
1125
1164
  }
1126
1165
  }
@@ -1142,7 +1181,7 @@ class CircuitScriptParser extends antlr.Parser {
1142
1181
  let localContext = new At_block_expressionsContext(this.context, this.state);
1143
1182
  this.enterRule(localContext, 38, CircuitScriptParser.RULE_at_block_expressions);
1144
1183
  try {
1145
- this.state = 277;
1184
+ this.state = 291;
1146
1185
  this.errorHandler.sync(this);
1147
1186
  switch (this.tokenStream.LA(1)) {
1148
1187
  case CircuitScriptParser.T__3:
@@ -1157,14 +1196,18 @@ class CircuitScriptParser extends antlr.Parser {
1157
1196
  case CircuitScriptParser.Parallel:
1158
1197
  case CircuitScriptParser.Define:
1159
1198
  case CircuitScriptParser.Import:
1199
+ case CircuitScriptParser.For:
1200
+ case CircuitScriptParser.While:
1201
+ case CircuitScriptParser.Continue:
1160
1202
  case CircuitScriptParser.If:
1161
1203
  case CircuitScriptParser.Frame:
1204
+ case CircuitScriptParser.Sheet:
1162
1205
  case CircuitScriptParser.Addition:
1163
1206
  case CircuitScriptParser.Divide:
1164
1207
  case CircuitScriptParser.ID:
1165
1208
  this.enterOuterAlt(localContext, 1);
1166
1209
  {
1167
- this.state = 275;
1210
+ this.state = 289;
1168
1211
  this.expression();
1169
1212
  }
1170
1213
  break;
@@ -1172,7 +1215,7 @@ class CircuitScriptParser extends antlr.Parser {
1172
1215
  case CircuitScriptParser.STRING_VALUE:
1173
1216
  this.enterOuterAlt(localContext, 2);
1174
1217
  {
1175
- this.state = 276;
1218
+ this.state = 290;
1176
1219
  this.at_block_pin_expr();
1177
1220
  }
1178
1221
  break;
@@ -1200,11 +1243,11 @@ class CircuitScriptParser extends antlr.Parser {
1200
1243
  try {
1201
1244
  this.enterOuterAlt(localContext, 1);
1202
1245
  {
1203
- this.state = 279;
1246
+ this.state = 293;
1204
1247
  this.pin_select_expr2();
1205
- this.state = 280;
1248
+ this.state = 294;
1206
1249
  this.match(CircuitScriptParser.T__0);
1207
- this.state = 283;
1250
+ this.state = 297;
1208
1251
  this.errorHandler.sync(this);
1209
1252
  switch (this.tokenStream.LA(1)) {
1210
1253
  case CircuitScriptParser.T__3:
@@ -1219,20 +1262,24 @@ class CircuitScriptParser extends antlr.Parser {
1219
1262
  case CircuitScriptParser.Parallel:
1220
1263
  case CircuitScriptParser.Define:
1221
1264
  case CircuitScriptParser.Import:
1265
+ case CircuitScriptParser.For:
1266
+ case CircuitScriptParser.While:
1267
+ case CircuitScriptParser.Continue:
1222
1268
  case CircuitScriptParser.If:
1223
1269
  case CircuitScriptParser.Frame:
1270
+ case CircuitScriptParser.Sheet:
1224
1271
  case CircuitScriptParser.Addition:
1225
1272
  case CircuitScriptParser.Divide:
1226
1273
  case CircuitScriptParser.NOT_CONNECTED:
1227
1274
  case CircuitScriptParser.ID:
1228
1275
  {
1229
- this.state = 281;
1276
+ this.state = 295;
1230
1277
  this.at_block_pin_expression_simple();
1231
1278
  }
1232
1279
  break;
1233
1280
  case CircuitScriptParser.NEWLINE:
1234
1281
  {
1235
- this.state = 282;
1282
+ this.state = 296;
1236
1283
  this.at_block_pin_expression_complex();
1237
1284
  }
1238
1285
  break;
@@ -1261,7 +1308,7 @@ class CircuitScriptParser extends antlr.Parser {
1261
1308
  try {
1262
1309
  this.enterOuterAlt(localContext, 1);
1263
1310
  {
1264
- this.state = 287;
1311
+ this.state = 301;
1265
1312
  this.errorHandler.sync(this);
1266
1313
  switch (this.tokenStream.LA(1)) {
1267
1314
  case CircuitScriptParser.T__3:
@@ -1276,19 +1323,23 @@ class CircuitScriptParser extends antlr.Parser {
1276
1323
  case CircuitScriptParser.Parallel:
1277
1324
  case CircuitScriptParser.Define:
1278
1325
  case CircuitScriptParser.Import:
1326
+ case CircuitScriptParser.For:
1327
+ case CircuitScriptParser.While:
1328
+ case CircuitScriptParser.Continue:
1279
1329
  case CircuitScriptParser.If:
1280
1330
  case CircuitScriptParser.Frame:
1331
+ case CircuitScriptParser.Sheet:
1281
1332
  case CircuitScriptParser.Addition:
1282
1333
  case CircuitScriptParser.Divide:
1283
1334
  case CircuitScriptParser.ID:
1284
1335
  {
1285
- this.state = 285;
1336
+ this.state = 299;
1286
1337
  this.expression();
1287
1338
  }
1288
1339
  break;
1289
1340
  case CircuitScriptParser.NOT_CONNECTED:
1290
1341
  {
1291
- this.state = 286;
1342
+ this.state = 300;
1292
1343
  this.match(CircuitScriptParser.NOT_CONNECTED);
1293
1344
  }
1294
1345
  break;
@@ -1317,7 +1368,7 @@ class CircuitScriptParser extends antlr.Parser {
1317
1368
  try {
1318
1369
  this.enterOuterAlt(localContext, 1);
1319
1370
  {
1320
- this.state = 289;
1371
+ this.state = 303;
1321
1372
  this.expressions_block();
1322
1373
  }
1323
1374
  }
@@ -1341,7 +1392,7 @@ class CircuitScriptParser extends antlr.Parser {
1341
1392
  try {
1342
1393
  this.enterOuterAlt(localContext, 1);
1343
1394
  {
1344
- this.state = 291;
1395
+ this.state = 305;
1345
1396
  this.match(CircuitScriptParser.Break);
1346
1397
  }
1347
1398
  }
@@ -1359,17 +1410,77 @@ class CircuitScriptParser extends antlr.Parser {
1359
1410
  }
1360
1411
  return localContext;
1361
1412
  }
1413
+ continue_keyword() {
1414
+ let localContext = new Continue_keywordContext(this.context, this.state);
1415
+ this.enterRule(localContext, 48, CircuitScriptParser.RULE_continue_keyword);
1416
+ try {
1417
+ this.enterOuterAlt(localContext, 1);
1418
+ {
1419
+ this.state = 307;
1420
+ this.match(CircuitScriptParser.Continue);
1421
+ }
1422
+ }
1423
+ catch (re) {
1424
+ if (re instanceof antlr.RecognitionException) {
1425
+ this.errorHandler.reportError(this, re);
1426
+ this.errorHandler.recover(this, re);
1427
+ }
1428
+ else {
1429
+ throw re;
1430
+ }
1431
+ }
1432
+ finally {
1433
+ this.exitRule();
1434
+ }
1435
+ return localContext;
1436
+ }
1362
1437
  assignment_expr() {
1363
1438
  let localContext = new Assignment_exprContext(this.context, this.state);
1364
- this.enterRule(localContext, 48, CircuitScriptParser.RULE_assignment_expr);
1439
+ this.enterRule(localContext, 50, CircuitScriptParser.RULE_assignment_expr);
1365
1440
  try {
1366
1441
  this.enterOuterAlt(localContext, 1);
1367
1442
  {
1368
- this.state = 293;
1443
+ this.state = 309;
1369
1444
  this.atom_expr();
1370
- this.state = 294;
1445
+ this.state = 310;
1371
1446
  this.match(CircuitScriptParser.T__2);
1372
- this.state = 295;
1447
+ this.state = 311;
1448
+ this.data_expr(0);
1449
+ }
1450
+ }
1451
+ catch (re) {
1452
+ if (re instanceof antlr.RecognitionException) {
1453
+ this.errorHandler.reportError(this, re);
1454
+ this.errorHandler.recover(this, re);
1455
+ }
1456
+ else {
1457
+ throw re;
1458
+ }
1459
+ }
1460
+ finally {
1461
+ this.exitRule();
1462
+ }
1463
+ return localContext;
1464
+ }
1465
+ operator_assignment_expr() {
1466
+ let localContext = new Operator_assignment_exprContext(this.context, this.state);
1467
+ this.enterRule(localContext, 52, CircuitScriptParser.RULE_operator_assignment_expr);
1468
+ let _la;
1469
+ try {
1470
+ this.enterOuterAlt(localContext, 1);
1471
+ {
1472
+ this.state = 313;
1473
+ this.atom_expr();
1474
+ this.state = 314;
1475
+ _la = this.tokenStream.LA(1);
1476
+ if (!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 31) !== 0))) {
1477
+ this.errorHandler.recoverInline(this);
1478
+ }
1479
+ else {
1480
+ this.errorHandler.reportMatch(this);
1481
+ this.consume();
1482
+ }
1483
+ this.state = 315;
1373
1484
  this.data_expr(0);
1374
1485
  }
1375
1486
  }
@@ -1389,15 +1500,15 @@ class CircuitScriptParser extends antlr.Parser {
1389
1500
  }
1390
1501
  keyword_assignment_expr() {
1391
1502
  let localContext = new Keyword_assignment_exprContext(this.context, this.state);
1392
- this.enterRule(localContext, 50, CircuitScriptParser.RULE_keyword_assignment_expr);
1503
+ this.enterRule(localContext, 54, CircuitScriptParser.RULE_keyword_assignment_expr);
1393
1504
  try {
1394
1505
  this.enterOuterAlt(localContext, 1);
1395
1506
  {
1396
- this.state = 297;
1507
+ this.state = 317;
1397
1508
  this.match(CircuitScriptParser.ID);
1398
- this.state = 298;
1509
+ this.state = 318;
1399
1510
  this.match(CircuitScriptParser.T__2);
1400
- this.state = 299;
1511
+ this.state = 319;
1401
1512
  this.data_expr(0);
1402
1513
  }
1403
1514
  }
@@ -1417,50 +1528,50 @@ class CircuitScriptParser extends antlr.Parser {
1417
1528
  }
1418
1529
  parameters() {
1419
1530
  let localContext = new ParametersContext(this.context, this.state);
1420
- this.enterRule(localContext, 52, CircuitScriptParser.RULE_parameters);
1531
+ this.enterRule(localContext, 56, CircuitScriptParser.RULE_parameters);
1421
1532
  let _la;
1422
1533
  try {
1423
1534
  let alternative;
1424
- this.state = 324;
1535
+ this.state = 344;
1425
1536
  this.errorHandler.sync(this);
1426
1537
  switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context)) {
1427
1538
  case 1:
1428
1539
  this.enterOuterAlt(localContext, 1);
1429
1540
  {
1430
1541
  {
1431
- this.state = 301;
1542
+ this.state = 321;
1432
1543
  this.data_expr(0);
1433
- this.state = 306;
1544
+ this.state = 326;
1434
1545
  this.errorHandler.sync(this);
1435
1546
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 25, this.context);
1436
1547
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1437
1548
  if (alternative === 1) {
1438
1549
  {
1439
1550
  {
1440
- this.state = 302;
1551
+ this.state = 322;
1441
1552
  this.match(CircuitScriptParser.T__1);
1442
- this.state = 303;
1553
+ this.state = 323;
1443
1554
  this.data_expr(0);
1444
1555
  }
1445
1556
  }
1446
1557
  }
1447
- this.state = 308;
1558
+ this.state = 328;
1448
1559
  this.errorHandler.sync(this);
1449
1560
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 25, this.context);
1450
1561
  }
1451
- this.state = 313;
1562
+ this.state = 333;
1452
1563
  this.errorHandler.sync(this);
1453
1564
  _la = this.tokenStream.LA(1);
1454
1565
  while (_la === 2) {
1455
1566
  {
1456
1567
  {
1457
- this.state = 309;
1568
+ this.state = 329;
1458
1569
  this.match(CircuitScriptParser.T__1);
1459
- this.state = 310;
1570
+ this.state = 330;
1460
1571
  this.keyword_assignment_expr();
1461
1572
  }
1462
1573
  }
1463
- this.state = 315;
1574
+ this.state = 335;
1464
1575
  this.errorHandler.sync(this);
1465
1576
  _la = this.tokenStream.LA(1);
1466
1577
  }
@@ -1471,21 +1582,21 @@ class CircuitScriptParser extends antlr.Parser {
1471
1582
  this.enterOuterAlt(localContext, 2);
1472
1583
  {
1473
1584
  {
1474
- this.state = 316;
1585
+ this.state = 336;
1475
1586
  this.keyword_assignment_expr();
1476
- this.state = 321;
1587
+ this.state = 341;
1477
1588
  this.errorHandler.sync(this);
1478
1589
  _la = this.tokenStream.LA(1);
1479
1590
  while (_la === 2) {
1480
1591
  {
1481
1592
  {
1482
- this.state = 317;
1593
+ this.state = 337;
1483
1594
  this.match(CircuitScriptParser.T__1);
1484
- this.state = 318;
1595
+ this.state = 338;
1485
1596
  this.keyword_assignment_expr();
1486
1597
  }
1487
1598
  }
1488
- this.state = 323;
1599
+ this.state = 343;
1489
1600
  this.errorHandler.sync(this);
1490
1601
  _la = this.tokenStream.LA(1);
1491
1602
  }
@@ -1510,15 +1621,15 @@ class CircuitScriptParser extends antlr.Parser {
1510
1621
  }
1511
1622
  property_set_expr() {
1512
1623
  let localContext = new Property_set_exprContext(this.context, this.state);
1513
- this.enterRule(localContext, 54, CircuitScriptParser.RULE_property_set_expr);
1624
+ this.enterRule(localContext, 58, CircuitScriptParser.RULE_property_set_expr);
1514
1625
  try {
1515
1626
  this.enterOuterAlt(localContext, 1);
1516
1627
  {
1517
- this.state = 326;
1628
+ this.state = 346;
1518
1629
  this.atom_expr();
1519
- this.state = 327;
1630
+ this.state = 347;
1520
1631
  this.match(CircuitScriptParser.T__2);
1521
- this.state = 328;
1632
+ this.state = 348;
1522
1633
  this.data_expr(0);
1523
1634
  }
1524
1635
  }
@@ -1538,17 +1649,17 @@ class CircuitScriptParser extends antlr.Parser {
1538
1649
  }
1539
1650
  double_dot_property_set_expr() {
1540
1651
  let localContext = new Double_dot_property_set_exprContext(this.context, this.state);
1541
- this.enterRule(localContext, 56, CircuitScriptParser.RULE_double_dot_property_set_expr);
1652
+ this.enterRule(localContext, 60, CircuitScriptParser.RULE_double_dot_property_set_expr);
1542
1653
  try {
1543
1654
  this.enterOuterAlt(localContext, 1);
1544
1655
  {
1545
- this.state = 330;
1656
+ this.state = 350;
1546
1657
  this.match(CircuitScriptParser.T__3);
1547
- this.state = 331;
1658
+ this.state = 351;
1548
1659
  this.match(CircuitScriptParser.ID);
1549
- this.state = 332;
1660
+ this.state = 352;
1550
1661
  this.match(CircuitScriptParser.T__2);
1551
- this.state = 333;
1662
+ this.state = 353;
1552
1663
  this.data_expr(0);
1553
1664
  }
1554
1665
  }
@@ -1574,14 +1685,14 @@ class CircuitScriptParser extends antlr.Parser {
1574
1685
  let parentState = this.state;
1575
1686
  let localContext = new Data_exprContext(this.context, parentState);
1576
1687
  let previousContext = localContext;
1577
- let _startState = 58;
1578
- this.enterRecursionRule(localContext, 58, CircuitScriptParser.RULE_data_expr, _p);
1688
+ let _startState = 62;
1689
+ this.enterRecursionRule(localContext, 62, CircuitScriptParser.RULE_data_expr, _p);
1579
1690
  let _la;
1580
1691
  try {
1581
1692
  let alternative;
1582
1693
  this.enterOuterAlt(localContext, 1);
1583
1694
  {
1584
- this.state = 351;
1695
+ this.state = 372;
1585
1696
  this.errorHandler.sync(this);
1586
1697
  switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context)) {
1587
1698
  case 1:
@@ -1589,11 +1700,11 @@ class CircuitScriptParser extends antlr.Parser {
1589
1700
  localContext = new RoundedBracketsExprContext(localContext);
1590
1701
  this.context = localContext;
1591
1702
  previousContext = localContext;
1592
- this.state = 336;
1703
+ this.state = 356;
1593
1704
  this.match(CircuitScriptParser.OPEN_PAREN);
1594
- this.state = 337;
1705
+ this.state = 357;
1595
1706
  this.data_expr(0);
1596
- this.state = 338;
1707
+ this.state = 358;
1597
1708
  this.match(CircuitScriptParser.CLOSE_PAREN);
1598
1709
  }
1599
1710
  break;
@@ -1602,10 +1713,9 @@ class CircuitScriptParser extends antlr.Parser {
1602
1713
  localContext = new ValueAtomExprContext(localContext);
1603
1714
  this.context = localContext;
1604
1715
  previousContext = localContext;
1605
- this.state = 342;
1716
+ this.state = 362;
1606
1717
  this.errorHandler.sync(this);
1607
1718
  switch (this.tokenStream.LA(1)) {
1608
- case CircuitScriptParser.T__5:
1609
1719
  case CircuitScriptParser.Minus:
1610
1720
  case CircuitScriptParser.BOOLEAN_VALUE:
1611
1721
  case CircuitScriptParser.INTEGER_VALUE:
@@ -1614,13 +1724,13 @@ class CircuitScriptParser extends antlr.Parser {
1614
1724
  case CircuitScriptParser.STRING_VALUE:
1615
1725
  case CircuitScriptParser.PERCENTAGE_VALUE:
1616
1726
  {
1617
- this.state = 340;
1727
+ this.state = 360;
1618
1728
  this.value_expr();
1619
1729
  }
1620
1730
  break;
1621
1731
  case CircuitScriptParser.ID:
1622
1732
  {
1623
- this.state = 341;
1733
+ this.state = 361;
1624
1734
  this.atom_expr();
1625
1735
  }
1626
1736
  break;
@@ -1634,10 +1744,10 @@ class CircuitScriptParser extends antlr.Parser {
1634
1744
  localContext = new UnaryOperatorExprContext(localContext);
1635
1745
  this.context = localContext;
1636
1746
  previousContext = localContext;
1637
- this.state = 344;
1747
+ this.state = 364;
1638
1748
  this.unary_operator();
1639
- this.state = 345;
1640
- this.data_expr(9);
1749
+ this.state = 365;
1750
+ this.data_expr(10);
1641
1751
  }
1642
1752
  break;
1643
1753
  case 4:
@@ -1645,7 +1755,7 @@ class CircuitScriptParser extends antlr.Parser {
1645
1755
  localContext = new DataExprContext(localContext);
1646
1756
  this.context = localContext;
1647
1757
  previousContext = localContext;
1648
- this.state = 347;
1758
+ this.state = 367;
1649
1759
  this.create_component_expr();
1650
1760
  }
1651
1761
  break;
@@ -1654,7 +1764,7 @@ class CircuitScriptParser extends antlr.Parser {
1654
1764
  localContext = new DataExprContext(localContext);
1655
1765
  this.context = localContext;
1656
1766
  previousContext = localContext;
1657
- this.state = 348;
1767
+ this.state = 368;
1658
1768
  this.create_graphic_expr();
1659
1769
  }
1660
1770
  break;
@@ -1663,7 +1773,7 @@ class CircuitScriptParser extends antlr.Parser {
1663
1773
  localContext = new DataExprContext(localContext);
1664
1774
  this.context = localContext;
1665
1775
  previousContext = localContext;
1666
- this.state = 349;
1776
+ this.state = 369;
1667
1777
  this.create_module_expr();
1668
1778
  }
1669
1779
  break;
@@ -1672,13 +1782,22 @@ class CircuitScriptParser extends antlr.Parser {
1672
1782
  localContext = new FunctionCallExprContext(localContext);
1673
1783
  this.context = localContext;
1674
1784
  previousContext = localContext;
1675
- this.state = 350;
1785
+ this.state = 370;
1676
1786
  this.function_call_expr();
1677
1787
  }
1678
1788
  break;
1789
+ case 8:
1790
+ {
1791
+ localContext = new ArrayExprContext(localContext);
1792
+ this.context = localContext;
1793
+ previousContext = localContext;
1794
+ this.state = 371;
1795
+ this.array_expr();
1796
+ }
1797
+ break;
1679
1798
  }
1680
1799
  this.context.stop = this.tokenStream.LT(-1);
1681
- this.state = 368;
1800
+ this.state = 389;
1682
1801
  this.errorHandler.sync(this);
1683
1802
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 32, this.context);
1684
1803
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1688,90 +1807,90 @@ class CircuitScriptParser extends antlr.Parser {
1688
1807
  }
1689
1808
  previousContext = localContext;
1690
1809
  {
1691
- this.state = 366;
1810
+ this.state = 387;
1692
1811
  this.errorHandler.sync(this);
1693
1812
  switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context)) {
1694
1813
  case 1:
1695
1814
  {
1696
1815
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1697
1816
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1698
- this.state = 353;
1699
- if (!(this.precpred(this.context, 8))) {
1700
- throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1817
+ this.state = 374;
1818
+ if (!(this.precpred(this.context, 9))) {
1819
+ throw this.createFailedPredicateException("this.precpred(this.context, 9)");
1701
1820
  }
1702
- this.state = 354;
1821
+ this.state = 375;
1703
1822
  _la = this.tokenStream.LA(1);
1704
- if (!(_la === 39 || _la === 40)) {
1823
+ if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7) !== 0))) {
1705
1824
  this.errorHandler.recoverInline(this);
1706
1825
  }
1707
1826
  else {
1708
1827
  this.errorHandler.reportMatch(this);
1709
1828
  this.consume();
1710
1829
  }
1711
- this.state = 355;
1712
- this.data_expr(9);
1830
+ this.state = 376;
1831
+ this.data_expr(10);
1713
1832
  }
1714
1833
  break;
1715
1834
  case 2:
1716
1835
  {
1717
1836
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1718
1837
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1719
- this.state = 356;
1720
- if (!(this.precpred(this.context, 7))) {
1721
- throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1838
+ this.state = 377;
1839
+ if (!(this.precpred(this.context, 8))) {
1840
+ throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1722
1841
  }
1723
- this.state = 357;
1842
+ this.state = 378;
1724
1843
  _la = this.tokenStream.LA(1);
1725
- if (!(_la === 37 || _la === 38)) {
1844
+ if (!(_la === 42 || _la === 43)) {
1726
1845
  this.errorHandler.recoverInline(this);
1727
1846
  }
1728
1847
  else {
1729
1848
  this.errorHandler.reportMatch(this);
1730
1849
  this.consume();
1731
1850
  }
1732
- this.state = 358;
1733
- this.data_expr(8);
1851
+ this.state = 379;
1852
+ this.data_expr(9);
1734
1853
  }
1735
1854
  break;
1736
1855
  case 3:
1737
1856
  {
1738
1857
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1739
1858
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1740
- this.state = 359;
1741
- if (!(this.precpred(this.context, 6))) {
1742
- throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1859
+ this.state = 380;
1860
+ if (!(this.precpred(this.context, 7))) {
1861
+ throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1743
1862
  }
1744
- this.state = 360;
1863
+ this.state = 381;
1745
1864
  this.binary_operator();
1746
- this.state = 361;
1747
- this.data_expr(7);
1865
+ this.state = 382;
1866
+ this.data_expr(8);
1748
1867
  }
1749
1868
  break;
1750
1869
  case 4:
1751
1870
  {
1752
1871
  localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1753
1872
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1754
- this.state = 363;
1755
- if (!(this.precpred(this.context, 5))) {
1756
- throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1873
+ this.state = 384;
1874
+ if (!(this.precpred(this.context, 6))) {
1875
+ throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1757
1876
  }
1758
- this.state = 364;
1877
+ this.state = 385;
1759
1878
  _la = this.tokenStream.LA(1);
1760
- if (!(_la === 35 || _la === 36)) {
1879
+ if (!(_la === 40 || _la === 41)) {
1761
1880
  this.errorHandler.recoverInline(this);
1762
1881
  }
1763
1882
  else {
1764
1883
  this.errorHandler.reportMatch(this);
1765
1884
  this.consume();
1766
1885
  }
1767
- this.state = 365;
1768
- this.data_expr(6);
1886
+ this.state = 386;
1887
+ this.data_expr(7);
1769
1888
  }
1770
1889
  break;
1771
1890
  }
1772
1891
  }
1773
1892
  }
1774
- this.state = 370;
1893
+ this.state = 391;
1775
1894
  this.errorHandler.sync(this);
1776
1895
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 32, this.context);
1777
1896
  }
@@ -1793,14 +1912,14 @@ class CircuitScriptParser extends antlr.Parser {
1793
1912
  }
1794
1913
  binary_operator() {
1795
1914
  let localContext = new Binary_operatorContext(this.context, this.state);
1796
- this.enterRule(localContext, 60, CircuitScriptParser.RULE_binary_operator);
1915
+ this.enterRule(localContext, 64, CircuitScriptParser.RULE_binary_operator);
1797
1916
  let _la;
1798
1917
  try {
1799
1918
  this.enterOuterAlt(localContext, 1);
1800
1919
  {
1801
- this.state = 371;
1920
+ this.state = 392;
1802
1921
  _la = this.tokenStream.LA(1);
1803
- if (!(((((_la - 29)) & ~0x1F) === 0 && ((1 << (_la - 29)) & 63) !== 0))) {
1922
+ if (!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 63) !== 0))) {
1804
1923
  this.errorHandler.recoverInline(this);
1805
1924
  }
1806
1925
  else {
@@ -1825,14 +1944,14 @@ class CircuitScriptParser extends antlr.Parser {
1825
1944
  }
1826
1945
  unary_operator() {
1827
1946
  let localContext = new Unary_operatorContext(this.context, this.state);
1828
- this.enterRule(localContext, 62, CircuitScriptParser.RULE_unary_operator);
1947
+ this.enterRule(localContext, 66, CircuitScriptParser.RULE_unary_operator);
1829
1948
  let _la;
1830
1949
  try {
1831
1950
  this.enterOuterAlt(localContext, 1);
1832
1951
  {
1833
- this.state = 373;
1952
+ this.state = 394;
1834
1953
  _la = this.tokenStream.LA(1);
1835
- if (!(_la === 27 || _la === 38)) {
1954
+ if (!(_la === 31 || _la === 43)) {
1836
1955
  this.errorHandler.recoverInline(this);
1837
1956
  }
1838
1957
  else {
@@ -1857,52 +1976,31 @@ class CircuitScriptParser extends antlr.Parser {
1857
1976
  }
1858
1977
  value_expr() {
1859
1978
  let localContext = new Value_exprContext(this.context, this.state);
1860
- this.enterRule(localContext, 64, CircuitScriptParser.RULE_value_expr);
1979
+ this.enterRule(localContext, 68, CircuitScriptParser.RULE_value_expr);
1861
1980
  let _la;
1862
1981
  try {
1863
- this.state = 380;
1864
- this.errorHandler.sync(this);
1865
- switch (this.tokenStream.LA(1)) {
1866
- case CircuitScriptParser.Minus:
1867
- case CircuitScriptParser.BOOLEAN_VALUE:
1868
- case CircuitScriptParser.INTEGER_VALUE:
1869
- case CircuitScriptParser.DECIMAL_VALUE:
1870
- case CircuitScriptParser.NUMERIC_VALUE:
1871
- case CircuitScriptParser.STRING_VALUE:
1872
- case CircuitScriptParser.PERCENTAGE_VALUE:
1873
- this.enterOuterAlt(localContext, 1);
1874
- {
1982
+ this.enterOuterAlt(localContext, 1);
1983
+ {
1984
+ {
1985
+ this.state = 397;
1986
+ this.errorHandler.sync(this);
1987
+ _la = this.tokenStream.LA(1);
1988
+ if (_la === 43) {
1875
1989
  {
1876
- this.state = 376;
1877
- this.errorHandler.sync(this);
1878
- _la = this.tokenStream.LA(1);
1879
- if (_la === 38) {
1880
- {
1881
- this.state = 375;
1882
- this.match(CircuitScriptParser.Minus);
1883
- }
1884
- }
1885
- this.state = 378;
1886
- _la = this.tokenStream.LA(1);
1887
- if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 125) !== 0))) {
1888
- this.errorHandler.recoverInline(this);
1889
- }
1890
- else {
1891
- this.errorHandler.reportMatch(this);
1892
- this.consume();
1893
- }
1990
+ this.state = 396;
1991
+ this.match(CircuitScriptParser.Minus);
1894
1992
  }
1895
1993
  }
1896
- break;
1897
- case CircuitScriptParser.T__5:
1898
- this.enterOuterAlt(localContext, 2);
1899
- {
1900
- this.state = 379;
1901
- this.blank_expr();
1994
+ this.state = 399;
1995
+ _la = this.tokenStream.LA(1);
1996
+ if (!(((((_la - 55)) & ~0x1F) === 0 && ((1 << (_la - 55)) & 125) !== 0))) {
1997
+ this.errorHandler.recoverInline(this);
1902
1998
  }
1903
- break;
1904
- default:
1905
- throw new antlr.NoViableAltException(this);
1999
+ else {
2000
+ this.errorHandler.reportMatch(this);
2001
+ this.consume();
2002
+ }
2003
+ }
1906
2004
  }
1907
2005
  }
1908
2006
  catch (re) {
@@ -1921,45 +2019,45 @@ class CircuitScriptParser extends antlr.Parser {
1921
2019
  }
1922
2020
  function_def_expr() {
1923
2021
  let localContext = new Function_def_exprContext(this.context, this.state);
1924
- this.enterRule(localContext, 66, CircuitScriptParser.RULE_function_def_expr);
2022
+ this.enterRule(localContext, 70, CircuitScriptParser.RULE_function_def_expr);
1925
2023
  let _la;
1926
2024
  try {
1927
2025
  this.enterOuterAlt(localContext, 1);
1928
2026
  {
1929
- this.state = 382;
2027
+ this.state = 401;
1930
2028
  this.match(CircuitScriptParser.Define);
1931
- this.state = 383;
2029
+ this.state = 402;
1932
2030
  this.match(CircuitScriptParser.ID);
1933
- this.state = 384;
2031
+ this.state = 403;
1934
2032
  this.match(CircuitScriptParser.OPEN_PAREN);
1935
- this.state = 386;
2033
+ this.state = 405;
1936
2034
  this.errorHandler.sync(this);
1937
2035
  _la = this.tokenStream.LA(1);
1938
- if (_la === 45) {
2036
+ if (_la === 56) {
1939
2037
  {
1940
- this.state = 385;
2038
+ this.state = 404;
1941
2039
  this.function_args_expr();
1942
2040
  }
1943
2041
  }
1944
- this.state = 388;
2042
+ this.state = 407;
1945
2043
  this.match(CircuitScriptParser.CLOSE_PAREN);
1946
- this.state = 389;
2044
+ this.state = 408;
1947
2045
  this.match(CircuitScriptParser.T__0);
1948
- this.state = 390;
2046
+ this.state = 409;
1949
2047
  this.match(CircuitScriptParser.NEWLINE);
1950
- this.state = 391;
2048
+ this.state = 410;
1951
2049
  this.match(CircuitScriptParser.INDENT);
1952
- this.state = 394;
2050
+ this.state = 413;
1953
2051
  this.errorHandler.sync(this);
1954
2052
  _la = this.tokenStream.LA(1);
1955
2053
  do {
1956
2054
  {
1957
- this.state = 394;
2055
+ this.state = 413;
1958
2056
  this.errorHandler.sync(this);
1959
2057
  switch (this.tokenStream.LA(1)) {
1960
2058
  case CircuitScriptParser.NEWLINE:
1961
2059
  {
1962
- this.state = 392;
2060
+ this.state = 411;
1963
2061
  this.match(CircuitScriptParser.NEWLINE);
1964
2062
  }
1965
2063
  break;
@@ -1976,13 +2074,17 @@ class CircuitScriptParser extends antlr.Parser {
1976
2074
  case CircuitScriptParser.Return:
1977
2075
  case CircuitScriptParser.Define:
1978
2076
  case CircuitScriptParser.Import:
2077
+ case CircuitScriptParser.For:
2078
+ case CircuitScriptParser.While:
2079
+ case CircuitScriptParser.Continue:
1979
2080
  case CircuitScriptParser.If:
1980
2081
  case CircuitScriptParser.Frame:
2082
+ case CircuitScriptParser.Sheet:
1981
2083
  case CircuitScriptParser.Addition:
1982
2084
  case CircuitScriptParser.Divide:
1983
2085
  case CircuitScriptParser.ID:
1984
2086
  {
1985
- this.state = 393;
2087
+ this.state = 412;
1986
2088
  this.function_expr();
1987
2089
  }
1988
2090
  break;
@@ -1990,11 +2092,11 @@ class CircuitScriptParser extends antlr.Parser {
1990
2092
  throw new antlr.NoViableAltException(this);
1991
2093
  }
1992
2094
  }
1993
- this.state = 396;
2095
+ this.state = 415;
1994
2096
  this.errorHandler.sync(this);
1995
2097
  _la = this.tokenStream.LA(1);
1996
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 335495952) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 65797) !== 0));
1997
- this.state = 398;
2098
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 868217905) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
2099
+ this.state = 417;
1998
2100
  this.match(CircuitScriptParser.DEDENT);
1999
2101
  }
2000
2102
  }
@@ -2014,9 +2116,9 @@ class CircuitScriptParser extends antlr.Parser {
2014
2116
  }
2015
2117
  function_expr() {
2016
2118
  let localContext = new Function_exprContext(this.context, this.state);
2017
- this.enterRule(localContext, 68, CircuitScriptParser.RULE_function_expr);
2119
+ this.enterRule(localContext, 72, CircuitScriptParser.RULE_function_expr);
2018
2120
  try {
2019
- this.state = 402;
2121
+ this.state = 421;
2020
2122
  this.errorHandler.sync(this);
2021
2123
  switch (this.tokenStream.LA(1)) {
2022
2124
  case CircuitScriptParser.T__3:
@@ -2031,21 +2133,25 @@ class CircuitScriptParser extends antlr.Parser {
2031
2133
  case CircuitScriptParser.Parallel:
2032
2134
  case CircuitScriptParser.Define:
2033
2135
  case CircuitScriptParser.Import:
2136
+ case CircuitScriptParser.For:
2137
+ case CircuitScriptParser.While:
2138
+ case CircuitScriptParser.Continue:
2034
2139
  case CircuitScriptParser.If:
2035
2140
  case CircuitScriptParser.Frame:
2141
+ case CircuitScriptParser.Sheet:
2036
2142
  case CircuitScriptParser.Addition:
2037
2143
  case CircuitScriptParser.Divide:
2038
2144
  case CircuitScriptParser.ID:
2039
2145
  this.enterOuterAlt(localContext, 1);
2040
2146
  {
2041
- this.state = 400;
2147
+ this.state = 419;
2042
2148
  this.expression();
2043
2149
  }
2044
2150
  break;
2045
2151
  case CircuitScriptParser.Return:
2046
2152
  this.enterOuterAlt(localContext, 2);
2047
2153
  {
2048
- this.state = 401;
2154
+ this.state = 420;
2049
2155
  this.function_return_expr();
2050
2156
  }
2051
2157
  break;
@@ -2069,53 +2175,53 @@ class CircuitScriptParser extends antlr.Parser {
2069
2175
  }
2070
2176
  function_args_expr() {
2071
2177
  let localContext = new Function_args_exprContext(this.context, this.state);
2072
- this.enterRule(localContext, 70, CircuitScriptParser.RULE_function_args_expr);
2178
+ this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_args_expr);
2073
2179
  let _la;
2074
2180
  try {
2075
2181
  let alternative;
2076
- this.state = 433;
2182
+ this.state = 452;
2077
2183
  this.errorHandler.sync(this);
2078
- switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context)) {
2184
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context)) {
2079
2185
  case 1:
2080
2186
  this.enterOuterAlt(localContext, 1);
2081
2187
  {
2082
- this.state = 404;
2188
+ this.state = 423;
2083
2189
  this.match(CircuitScriptParser.ID);
2084
- this.state = 409;
2190
+ this.state = 428;
2085
2191
  this.errorHandler.sync(this);
2086
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 39, this.context);
2192
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 38, this.context);
2087
2193
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2088
2194
  if (alternative === 1) {
2089
2195
  {
2090
2196
  {
2091
- this.state = 405;
2197
+ this.state = 424;
2092
2198
  this.match(CircuitScriptParser.T__1);
2093
- this.state = 406;
2199
+ this.state = 425;
2094
2200
  this.match(CircuitScriptParser.ID);
2095
2201
  }
2096
2202
  }
2097
2203
  }
2098
- this.state = 411;
2204
+ this.state = 430;
2099
2205
  this.errorHandler.sync(this);
2100
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 39, this.context);
2206
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 38, this.context);
2101
2207
  }
2102
- this.state = 418;
2208
+ this.state = 437;
2103
2209
  this.errorHandler.sync(this);
2104
2210
  _la = this.tokenStream.LA(1);
2105
2211
  while (_la === 2) {
2106
2212
  {
2107
2213
  {
2108
- this.state = 412;
2214
+ this.state = 431;
2109
2215
  this.match(CircuitScriptParser.T__1);
2110
- this.state = 413;
2216
+ this.state = 432;
2111
2217
  this.match(CircuitScriptParser.ID);
2112
- this.state = 414;
2218
+ this.state = 433;
2113
2219
  this.match(CircuitScriptParser.T__2);
2114
- this.state = 415;
2220
+ this.state = 434;
2115
2221
  this.value_expr();
2116
2222
  }
2117
2223
  }
2118
- this.state = 420;
2224
+ this.state = 439;
2119
2225
  this.errorHandler.sync(this);
2120
2226
  _la = this.tokenStream.LA(1);
2121
2227
  }
@@ -2124,29 +2230,29 @@ class CircuitScriptParser extends antlr.Parser {
2124
2230
  case 2:
2125
2231
  this.enterOuterAlt(localContext, 2);
2126
2232
  {
2127
- this.state = 421;
2233
+ this.state = 440;
2128
2234
  this.match(CircuitScriptParser.ID);
2129
- this.state = 422;
2235
+ this.state = 441;
2130
2236
  this.match(CircuitScriptParser.T__2);
2131
- this.state = 423;
2237
+ this.state = 442;
2132
2238
  this.value_expr();
2133
- this.state = 430;
2239
+ this.state = 449;
2134
2240
  this.errorHandler.sync(this);
2135
2241
  _la = this.tokenStream.LA(1);
2136
2242
  while (_la === 2) {
2137
2243
  {
2138
2244
  {
2139
- this.state = 424;
2245
+ this.state = 443;
2140
2246
  this.match(CircuitScriptParser.T__1);
2141
- this.state = 425;
2247
+ this.state = 444;
2142
2248
  this.match(CircuitScriptParser.ID);
2143
- this.state = 426;
2249
+ this.state = 445;
2144
2250
  this.match(CircuitScriptParser.T__2);
2145
- this.state = 427;
2251
+ this.state = 446;
2146
2252
  this.value_expr();
2147
2253
  }
2148
2254
  }
2149
- this.state = 432;
2255
+ this.state = 451;
2150
2256
  this.errorHandler.sync(this);
2151
2257
  _la = this.tokenStream.LA(1);
2152
2258
  }
@@ -2170,30 +2276,30 @@ class CircuitScriptParser extends antlr.Parser {
2170
2276
  }
2171
2277
  atom_expr() {
2172
2278
  let localContext = new Atom_exprContext(this.context, this.state);
2173
- this.enterRule(localContext, 72, CircuitScriptParser.RULE_atom_expr);
2279
+ this.enterRule(localContext, 76, CircuitScriptParser.RULE_atom_expr);
2174
2280
  try {
2175
2281
  let alternative;
2176
2282
  this.enterOuterAlt(localContext, 1);
2177
2283
  {
2178
- this.state = 435;
2284
+ this.state = 454;
2179
2285
  this.match(CircuitScriptParser.ID);
2180
- this.state = 440;
2286
+ this.state = 459;
2181
2287
  this.errorHandler.sync(this);
2182
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 43, this.context);
2288
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2183
2289
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2184
2290
  if (alternative === 1) {
2185
2291
  {
2186
2292
  {
2187
- this.state = 436;
2293
+ this.state = 455;
2188
2294
  this.match(CircuitScriptParser.T__4);
2189
- this.state = 437;
2295
+ this.state = 456;
2190
2296
  this.match(CircuitScriptParser.ID);
2191
2297
  }
2192
2298
  }
2193
2299
  }
2194
- this.state = 442;
2300
+ this.state = 461;
2195
2301
  this.errorHandler.sync(this);
2196
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 43, this.context);
2302
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2197
2303
  }
2198
2304
  }
2199
2305
  }
@@ -2213,36 +2319,36 @@ class CircuitScriptParser extends antlr.Parser {
2213
2319
  }
2214
2320
  trailer_expr() {
2215
2321
  let localContext = new Trailer_exprContext(this.context, this.state);
2216
- this.enterRule(localContext, 74, CircuitScriptParser.RULE_trailer_expr);
2322
+ this.enterRule(localContext, 78, CircuitScriptParser.RULE_trailer_expr);
2217
2323
  let _la;
2218
2324
  try {
2219
- this.state = 450;
2325
+ this.state = 469;
2220
2326
  this.errorHandler.sync(this);
2221
2327
  switch (this.tokenStream.LA(1)) {
2222
2328
  case CircuitScriptParser.OPEN_PAREN:
2223
2329
  this.enterOuterAlt(localContext, 1);
2224
2330
  {
2225
- this.state = 443;
2331
+ this.state = 462;
2226
2332
  this.match(CircuitScriptParser.OPEN_PAREN);
2227
- this.state = 445;
2333
+ this.state = 464;
2228
2334
  this.errorHandler.sync(this);
2229
2335
  _la = this.tokenStream.LA(1);
2230
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 134218816) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 16279) !== 0)) {
2336
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484736) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 1041415) !== 0)) {
2231
2337
  {
2232
- this.state = 444;
2338
+ this.state = 463;
2233
2339
  this.parameters();
2234
2340
  }
2235
2341
  }
2236
- this.state = 447;
2342
+ this.state = 466;
2237
2343
  this.match(CircuitScriptParser.CLOSE_PAREN);
2238
2344
  }
2239
2345
  break;
2240
2346
  case CircuitScriptParser.T__4:
2241
2347
  this.enterOuterAlt(localContext, 2);
2242
2348
  {
2243
- this.state = 448;
2349
+ this.state = 467;
2244
2350
  this.match(CircuitScriptParser.T__4);
2245
- this.state = 449;
2351
+ this.state = 468;
2246
2352
  this.match(CircuitScriptParser.ID);
2247
2353
  }
2248
2354
  break;
@@ -2266,24 +2372,24 @@ class CircuitScriptParser extends antlr.Parser {
2266
2372
  }
2267
2373
  function_call_expr() {
2268
2374
  let localContext = new Function_call_exprContext(this.context, this.state);
2269
- this.enterRule(localContext, 76, CircuitScriptParser.RULE_function_call_expr);
2375
+ this.enterRule(localContext, 80, CircuitScriptParser.RULE_function_call_expr);
2270
2376
  let _la;
2271
2377
  try {
2272
2378
  let alternative;
2273
2379
  this.enterOuterAlt(localContext, 1);
2274
2380
  {
2275
- this.state = 453;
2381
+ this.state = 472;
2276
2382
  this.errorHandler.sync(this);
2277
2383
  _la = this.tokenStream.LA(1);
2278
- if (_la === 37 || _la === 39) {
2384
+ if (_la === 42 || _la === 44) {
2279
2385
  {
2280
- this.state = 452;
2386
+ this.state = 471;
2281
2387
  this.net_namespace_expr();
2282
2388
  }
2283
2389
  }
2284
- this.state = 455;
2390
+ this.state = 474;
2285
2391
  this.match(CircuitScriptParser.ID);
2286
- this.state = 457;
2392
+ this.state = 476;
2287
2393
  this.errorHandler.sync(this);
2288
2394
  alternative = 1;
2289
2395
  do {
@@ -2291,7 +2397,7 @@ class CircuitScriptParser extends antlr.Parser {
2291
2397
  case 1:
2292
2398
  {
2293
2399
  {
2294
- this.state = 456;
2400
+ this.state = 475;
2295
2401
  this.trailer_expr();
2296
2402
  }
2297
2403
  }
@@ -2299,9 +2405,9 @@ class CircuitScriptParser extends antlr.Parser {
2299
2405
  default:
2300
2406
  throw new antlr.NoViableAltException(this);
2301
2407
  }
2302
- this.state = 459;
2408
+ this.state = 478;
2303
2409
  this.errorHandler.sync(this);
2304
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 47, this.context);
2410
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2305
2411
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
2306
2412
  }
2307
2413
  }
@@ -2321,28 +2427,28 @@ class CircuitScriptParser extends antlr.Parser {
2321
2427
  }
2322
2428
  net_namespace_expr() {
2323
2429
  let localContext = new Net_namespace_exprContext(this.context, this.state);
2324
- this.enterRule(localContext, 78, CircuitScriptParser.RULE_net_namespace_expr);
2430
+ this.enterRule(localContext, 82, CircuitScriptParser.RULE_net_namespace_expr);
2325
2431
  let _la;
2326
2432
  try {
2327
2433
  this.enterOuterAlt(localContext, 1);
2328
2434
  {
2329
- this.state = 462;
2435
+ this.state = 481;
2330
2436
  this.errorHandler.sync(this);
2331
2437
  _la = this.tokenStream.LA(1);
2332
- if (_la === 37) {
2438
+ if (_la === 42) {
2333
2439
  {
2334
- this.state = 461;
2440
+ this.state = 480;
2335
2441
  this.match(CircuitScriptParser.Addition);
2336
2442
  }
2337
2443
  }
2338
- this.state = 464;
2444
+ this.state = 483;
2339
2445
  this.match(CircuitScriptParser.Divide);
2340
- this.state = 466;
2446
+ this.state = 485;
2341
2447
  this.errorHandler.sync(this);
2342
- switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context)) {
2448
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context)) {
2343
2449
  case 1:
2344
2450
  {
2345
- this.state = 465;
2451
+ this.state = 484;
2346
2452
  this.data_expr(0);
2347
2453
  }
2348
2454
  break;
@@ -2365,13 +2471,13 @@ class CircuitScriptParser extends antlr.Parser {
2365
2471
  }
2366
2472
  function_return_expr() {
2367
2473
  let localContext = new Function_return_exprContext(this.context, this.state);
2368
- this.enterRule(localContext, 80, CircuitScriptParser.RULE_function_return_expr);
2474
+ this.enterRule(localContext, 84, CircuitScriptParser.RULE_function_return_expr);
2369
2475
  try {
2370
2476
  this.enterOuterAlt(localContext, 1);
2371
2477
  {
2372
- this.state = 468;
2478
+ this.state = 487;
2373
2479
  this.match(CircuitScriptParser.Return);
2374
- this.state = 469;
2480
+ this.state = 488;
2375
2481
  this.data_expr(0);
2376
2482
  }
2377
2483
  }
@@ -2391,15 +2497,15 @@ class CircuitScriptParser extends antlr.Parser {
2391
2497
  }
2392
2498
  property_block_expr() {
2393
2499
  let localContext = new Property_block_exprContext(this.context, this.state);
2394
- this.enterRule(localContext, 82, CircuitScriptParser.RULE_property_block_expr);
2500
+ this.enterRule(localContext, 86, CircuitScriptParser.RULE_property_block_expr);
2395
2501
  try {
2396
2502
  this.enterOuterAlt(localContext, 1);
2397
2503
  {
2398
- this.state = 471;
2504
+ this.state = 490;
2399
2505
  this.property_key_expr();
2400
- this.state = 472;
2506
+ this.state = 491;
2401
2507
  this.match(CircuitScriptParser.T__0);
2402
- this.state = 473;
2508
+ this.state = 492;
2403
2509
  this.expressions_block();
2404
2510
  }
2405
2511
  }
@@ -2419,32 +2525,32 @@ class CircuitScriptParser extends antlr.Parser {
2419
2525
  }
2420
2526
  create_component_expr() {
2421
2527
  let localContext = new Create_component_exprContext(this.context, this.state);
2422
- this.enterRule(localContext, 84, CircuitScriptParser.RULE_create_component_expr);
2528
+ this.enterRule(localContext, 88, CircuitScriptParser.RULE_create_component_expr);
2423
2529
  let _la;
2424
2530
  try {
2425
2531
  this.enterOuterAlt(localContext, 1);
2426
2532
  {
2427
- this.state = 475;
2533
+ this.state = 494;
2428
2534
  this.match(CircuitScriptParser.Create);
2429
- this.state = 476;
2535
+ this.state = 495;
2430
2536
  this.match(CircuitScriptParser.Component);
2431
- this.state = 477;
2537
+ this.state = 496;
2432
2538
  this.match(CircuitScriptParser.T__0);
2433
- this.state = 478;
2539
+ this.state = 497;
2434
2540
  this.match(CircuitScriptParser.NEWLINE);
2435
- this.state = 479;
2541
+ this.state = 498;
2436
2542
  this.match(CircuitScriptParser.INDENT);
2437
- this.state = 482;
2543
+ this.state = 501;
2438
2544
  this.errorHandler.sync(this);
2439
2545
  _la = this.tokenStream.LA(1);
2440
2546
  do {
2441
2547
  {
2442
- this.state = 482;
2548
+ this.state = 501;
2443
2549
  this.errorHandler.sync(this);
2444
2550
  switch (this.tokenStream.LA(1)) {
2445
2551
  case CircuitScriptParser.NEWLINE:
2446
2552
  {
2447
- this.state = 480;
2553
+ this.state = 499;
2448
2554
  this.match(CircuitScriptParser.NEWLINE);
2449
2555
  }
2450
2556
  break;
@@ -2452,7 +2558,7 @@ class CircuitScriptParser extends antlr.Parser {
2452
2558
  case CircuitScriptParser.INTEGER_VALUE:
2453
2559
  case CircuitScriptParser.STRING_VALUE:
2454
2560
  {
2455
- this.state = 481;
2561
+ this.state = 500;
2456
2562
  this.property_expr();
2457
2563
  }
2458
2564
  break;
@@ -2460,11 +2566,11 @@ class CircuitScriptParser extends antlr.Parser {
2460
2566
  throw new antlr.NoViableAltException(this);
2461
2567
  }
2462
2568
  }
2463
- this.state = 484;
2569
+ this.state = 503;
2464
2570
  this.errorHandler.sync(this);
2465
2571
  _la = this.tokenStream.LA(1);
2466
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 275) !== 0));
2467
- this.state = 486;
2572
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2573
+ this.state = 505;
2468
2574
  this.match(CircuitScriptParser.DEDENT);
2469
2575
  }
2470
2576
  }
@@ -2482,41 +2588,36 @@ class CircuitScriptParser extends antlr.Parser {
2482
2588
  }
2483
2589
  return localContext;
2484
2590
  }
2485
- create_graphic_expr() {
2486
- let localContext = new Create_graphic_exprContext(this.context, this.state);
2487
- this.enterRule(localContext, 86, CircuitScriptParser.RULE_create_graphic_expr);
2591
+ graphic_expressions_block() {
2592
+ let localContext = new Graphic_expressions_blockContext(this.context, this.state);
2593
+ this.enterRule(localContext, 90, CircuitScriptParser.RULE_graphic_expressions_block);
2488
2594
  let _la;
2489
2595
  try {
2490
2596
  this.enterOuterAlt(localContext, 1);
2491
2597
  {
2492
- this.state = 488;
2493
- this.match(CircuitScriptParser.Create);
2494
- this.state = 489;
2495
- this.match(CircuitScriptParser.Graphic);
2496
- this.state = 490;
2497
- this.match(CircuitScriptParser.T__0);
2498
- this.state = 491;
2598
+ this.state = 507;
2499
2599
  this.match(CircuitScriptParser.NEWLINE);
2500
- this.state = 492;
2600
+ this.state = 508;
2501
2601
  this.match(CircuitScriptParser.INDENT);
2502
- this.state = 495;
2602
+ this.state = 511;
2503
2603
  this.errorHandler.sync(this);
2504
2604
  _la = this.tokenStream.LA(1);
2505
2605
  do {
2506
2606
  {
2507
- this.state = 495;
2607
+ this.state = 511;
2508
2608
  this.errorHandler.sync(this);
2509
2609
  switch (this.tokenStream.LA(1)) {
2510
2610
  case CircuitScriptParser.NEWLINE:
2511
2611
  {
2512
- this.state = 493;
2612
+ this.state = 509;
2513
2613
  this.match(CircuitScriptParser.NEWLINE);
2514
2614
  }
2515
2615
  break;
2516
2616
  case CircuitScriptParser.Pin:
2617
+ case CircuitScriptParser.For:
2517
2618
  case CircuitScriptParser.ID:
2518
2619
  {
2519
- this.state = 494;
2620
+ this.state = 510;
2520
2621
  this.graphic_expr();
2521
2622
  }
2522
2623
  break;
@@ -2524,11 +2625,11 @@ class CircuitScriptParser extends antlr.Parser {
2524
2625
  throw new antlr.NoViableAltException(this);
2525
2626
  }
2526
2627
  }
2527
- this.state = 497;
2628
+ this.state = 513;
2528
2629
  this.errorHandler.sync(this);
2529
2630
  _la = this.tokenStream.LA(1);
2530
- } while (_la === 15 || _la === 45 || _la === 53);
2531
- this.state = 499;
2631
+ } while (_la === 15 || _la === 25 || _la === 56 || _la === 64);
2632
+ this.state = 515;
2532
2633
  this.match(CircuitScriptParser.DEDENT);
2533
2634
  }
2534
2635
  }
@@ -2546,56 +2647,86 @@ class CircuitScriptParser extends antlr.Parser {
2546
2647
  }
2547
2648
  return localContext;
2548
2649
  }
2650
+ create_graphic_expr() {
2651
+ let localContext = new Create_graphic_exprContext(this.context, this.state);
2652
+ this.enterRule(localContext, 92, CircuitScriptParser.RULE_create_graphic_expr);
2653
+ try {
2654
+ this.enterOuterAlt(localContext, 1);
2655
+ {
2656
+ this.state = 517;
2657
+ this.match(CircuitScriptParser.Create);
2658
+ this.state = 518;
2659
+ this.match(CircuitScriptParser.Graphic);
2660
+ this.state = 519;
2661
+ this.match(CircuitScriptParser.T__0);
2662
+ this.state = 520;
2663
+ this.graphic_expressions_block();
2664
+ }
2665
+ }
2666
+ catch (re) {
2667
+ if (re instanceof antlr.RecognitionException) {
2668
+ this.errorHandler.reportError(this, re);
2669
+ this.errorHandler.recover(this, re);
2670
+ }
2671
+ else {
2672
+ throw re;
2673
+ }
2674
+ }
2675
+ finally {
2676
+ this.exitRule();
2677
+ }
2678
+ return localContext;
2679
+ }
2549
2680
  create_module_expr() {
2550
2681
  let localContext = new Create_module_exprContext(this.context, this.state);
2551
- this.enterRule(localContext, 88, CircuitScriptParser.RULE_create_module_expr);
2682
+ this.enterRule(localContext, 94, CircuitScriptParser.RULE_create_module_expr);
2552
2683
  let _la;
2553
2684
  try {
2554
2685
  this.enterOuterAlt(localContext, 1);
2555
2686
  {
2556
- this.state = 501;
2687
+ this.state = 522;
2557
2688
  this.match(CircuitScriptParser.Create);
2558
- this.state = 502;
2689
+ this.state = 523;
2559
2690
  this.match(CircuitScriptParser.Module);
2560
- this.state = 503;
2691
+ this.state = 524;
2561
2692
  this.match(CircuitScriptParser.T__0);
2562
- this.state = 504;
2693
+ this.state = 525;
2563
2694
  this.match(CircuitScriptParser.NEWLINE);
2564
- this.state = 505;
2695
+ this.state = 526;
2565
2696
  this.match(CircuitScriptParser.INDENT);
2566
- this.state = 509;
2697
+ this.state = 530;
2567
2698
  this.errorHandler.sync(this);
2568
2699
  _la = this.tokenStream.LA(1);
2569
2700
  do {
2570
2701
  {
2571
- this.state = 509;
2702
+ this.state = 530;
2572
2703
  this.errorHandler.sync(this);
2573
- switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context)) {
2704
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context)) {
2574
2705
  case 1:
2575
2706
  {
2576
- this.state = 506;
2707
+ this.state = 527;
2577
2708
  this.match(CircuitScriptParser.NEWLINE);
2578
2709
  }
2579
2710
  break;
2580
2711
  case 2:
2581
2712
  {
2582
- this.state = 507;
2713
+ this.state = 528;
2583
2714
  this.property_expr();
2584
2715
  }
2585
2716
  break;
2586
2717
  case 3:
2587
2718
  {
2588
- this.state = 508;
2719
+ this.state = 529;
2589
2720
  this.property_block_expr();
2590
2721
  }
2591
2722
  break;
2592
2723
  }
2593
2724
  }
2594
- this.state = 511;
2725
+ this.state = 532;
2595
2726
  this.errorHandler.sync(this);
2596
2727
  _la = this.tokenStream.LA(1);
2597
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 275) !== 0));
2598
- this.state = 513;
2728
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2729
+ this.state = 534;
2599
2730
  this.match(CircuitScriptParser.DEDENT);
2600
2731
  }
2601
2732
  }
@@ -2615,27 +2746,27 @@ class CircuitScriptParser extends antlr.Parser {
2615
2746
  }
2616
2747
  nested_properties_inner() {
2617
2748
  let localContext = new Nested_properties_innerContext(this.context, this.state);
2618
- this.enterRule(localContext, 90, CircuitScriptParser.RULE_nested_properties_inner);
2749
+ this.enterRule(localContext, 96, CircuitScriptParser.RULE_nested_properties_inner);
2619
2750
  let _la;
2620
2751
  try {
2621
2752
  this.enterOuterAlt(localContext, 1);
2622
2753
  {
2623
2754
  {
2624
- this.state = 515;
2755
+ this.state = 536;
2625
2756
  this.match(CircuitScriptParser.NEWLINE);
2626
- this.state = 516;
2757
+ this.state = 537;
2627
2758
  this.match(CircuitScriptParser.INDENT);
2628
- this.state = 519;
2759
+ this.state = 540;
2629
2760
  this.errorHandler.sync(this);
2630
2761
  _la = this.tokenStream.LA(1);
2631
2762
  do {
2632
2763
  {
2633
- this.state = 519;
2764
+ this.state = 540;
2634
2765
  this.errorHandler.sync(this);
2635
2766
  switch (this.tokenStream.LA(1)) {
2636
2767
  case CircuitScriptParser.NEWLINE:
2637
2768
  {
2638
- this.state = 517;
2769
+ this.state = 538;
2639
2770
  this.match(CircuitScriptParser.NEWLINE);
2640
2771
  }
2641
2772
  break;
@@ -2643,7 +2774,7 @@ class CircuitScriptParser extends antlr.Parser {
2643
2774
  case CircuitScriptParser.INTEGER_VALUE:
2644
2775
  case CircuitScriptParser.STRING_VALUE:
2645
2776
  {
2646
- this.state = 518;
2777
+ this.state = 539;
2647
2778
  this.property_expr();
2648
2779
  }
2649
2780
  break;
@@ -2651,11 +2782,11 @@ class CircuitScriptParser extends antlr.Parser {
2651
2782
  throw new antlr.NoViableAltException(this);
2652
2783
  }
2653
2784
  }
2654
- this.state = 521;
2785
+ this.state = 542;
2655
2786
  this.errorHandler.sync(this);
2656
2787
  _la = this.tokenStream.LA(1);
2657
- } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 275) !== 0));
2658
- this.state = 523;
2788
+ } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2789
+ this.state = 544;
2659
2790
  this.match(CircuitScriptParser.DEDENT);
2660
2791
  }
2661
2792
  }
@@ -2676,56 +2807,100 @@ class CircuitScriptParser extends antlr.Parser {
2676
2807
  }
2677
2808
  graphic_expr() {
2678
2809
  let localContext = new Graphic_exprContext(this.context, this.state);
2679
- this.enterRule(localContext, 92, CircuitScriptParser.RULE_graphic_expr);
2810
+ this.enterRule(localContext, 98, CircuitScriptParser.RULE_graphic_expr);
2680
2811
  let _la;
2681
2812
  try {
2682
- this.enterOuterAlt(localContext, 1);
2683
- {
2684
- this.state = 525;
2685
- localContext._command = this.tokenStream.LT(1);
2686
- _la = this.tokenStream.LA(1);
2687
- if (!(_la === 15 || _la === 45)) {
2688
- localContext._command = this.errorHandler.recoverInline(this);
2689
- }
2690
- else {
2691
- this.errorHandler.reportMatch(this);
2692
- this.consume();
2693
- }
2694
- this.state = 527;
2695
- this.errorHandler.sync(this);
2696
- _la = this.tokenStream.LA(1);
2697
- if (_la === 1) {
2813
+ this.state = 572;
2814
+ this.errorHandler.sync(this);
2815
+ switch (this.tokenStream.LA(1)) {
2816
+ case CircuitScriptParser.Pin:
2817
+ case CircuitScriptParser.ID:
2818
+ localContext = new GraphicCommandExprContext(localContext);
2819
+ this.enterOuterAlt(localContext, 1);
2698
2820
  {
2699
- this.state = 526;
2700
- this.match(CircuitScriptParser.T__0);
2701
- }
2702
- }
2703
- this.state = 535;
2704
- this.errorHandler.sync(this);
2705
- switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2706
- case 1:
2707
- {
2708
- this.state = 529;
2709
- this.parameters();
2821
+ this.state = 546;
2822
+ localContext._command = this.tokenStream.LT(1);
2823
+ _la = this.tokenStream.LA(1);
2824
+ if (!(_la === 15 || _la === 56)) {
2825
+ localContext._command = this.errorHandler.recoverInline(this);
2710
2826
  }
2711
- break;
2712
- case 2:
2713
- {
2714
- this.state = 530;
2715
- this.match(CircuitScriptParser.OPEN_PAREN);
2716
- this.state = 531;
2717
- this.parameters();
2718
- this.state = 532;
2719
- this.match(CircuitScriptParser.CLOSE_PAREN);
2827
+ else {
2828
+ this.errorHandler.reportMatch(this);
2829
+ this.consume();
2720
2830
  }
2721
- break;
2722
- case 3:
2723
- {
2724
- this.state = 534;
2725
- this.nested_properties_inner();
2831
+ this.state = 548;
2832
+ this.errorHandler.sync(this);
2833
+ _la = this.tokenStream.LA(1);
2834
+ if (_la === 1) {
2835
+ {
2836
+ this.state = 547;
2837
+ this.match(CircuitScriptParser.T__0);
2838
+ }
2726
2839
  }
2727
- break;
2728
- }
2840
+ this.state = 556;
2841
+ this.errorHandler.sync(this);
2842
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context)) {
2843
+ case 1:
2844
+ {
2845
+ this.state = 550;
2846
+ this.parameters();
2847
+ }
2848
+ break;
2849
+ case 2:
2850
+ {
2851
+ this.state = 551;
2852
+ this.match(CircuitScriptParser.OPEN_PAREN);
2853
+ this.state = 552;
2854
+ this.parameters();
2855
+ this.state = 553;
2856
+ this.match(CircuitScriptParser.CLOSE_PAREN);
2857
+ }
2858
+ break;
2859
+ case 3:
2860
+ {
2861
+ this.state = 555;
2862
+ this.nested_properties_inner();
2863
+ }
2864
+ break;
2865
+ }
2866
+ }
2867
+ break;
2868
+ case CircuitScriptParser.For:
2869
+ localContext = new GraphicForExprContext(localContext);
2870
+ this.enterOuterAlt(localContext, 2);
2871
+ {
2872
+ this.state = 558;
2873
+ this.match(CircuitScriptParser.For);
2874
+ this.state = 559;
2875
+ this.match(CircuitScriptParser.ID);
2876
+ this.state = 564;
2877
+ this.errorHandler.sync(this);
2878
+ _la = this.tokenStream.LA(1);
2879
+ while (_la === 2) {
2880
+ {
2881
+ {
2882
+ this.state = 560;
2883
+ this.match(CircuitScriptParser.T__1);
2884
+ this.state = 561;
2885
+ this.match(CircuitScriptParser.ID);
2886
+ }
2887
+ }
2888
+ this.state = 566;
2889
+ this.errorHandler.sync(this);
2890
+ _la = this.tokenStream.LA(1);
2891
+ }
2892
+ this.state = 567;
2893
+ this.match(CircuitScriptParser.In);
2894
+ this.state = 568;
2895
+ this.data_expr(0);
2896
+ this.state = 569;
2897
+ this.match(CircuitScriptParser.T__0);
2898
+ this.state = 570;
2899
+ this.graphic_expressions_block();
2900
+ }
2901
+ break;
2902
+ default:
2903
+ throw new antlr.NoViableAltException(this);
2729
2904
  }
2730
2905
  }
2731
2906
  catch (re) {
@@ -2744,15 +2919,15 @@ class CircuitScriptParser extends antlr.Parser {
2744
2919
  }
2745
2920
  property_expr() {
2746
2921
  let localContext = new Property_exprContext(this.context, this.state);
2747
- this.enterRule(localContext, 94, CircuitScriptParser.RULE_property_expr);
2922
+ this.enterRule(localContext, 100, CircuitScriptParser.RULE_property_expr);
2748
2923
  try {
2749
2924
  this.enterOuterAlt(localContext, 1);
2750
2925
  {
2751
- this.state = 537;
2926
+ this.state = 574;
2752
2927
  this.property_key_expr();
2753
- this.state = 538;
2928
+ this.state = 575;
2754
2929
  this.match(CircuitScriptParser.T__0);
2755
- this.state = 539;
2930
+ this.state = 576;
2756
2931
  this.property_value_expr();
2757
2932
  }
2758
2933
  }
@@ -2772,14 +2947,14 @@ class CircuitScriptParser extends antlr.Parser {
2772
2947
  }
2773
2948
  property_key_expr() {
2774
2949
  let localContext = new Property_key_exprContext(this.context, this.state);
2775
- this.enterRule(localContext, 96, CircuitScriptParser.RULE_property_key_expr);
2950
+ this.enterRule(localContext, 102, CircuitScriptParser.RULE_property_key_expr);
2776
2951
  let _la;
2777
2952
  try {
2778
2953
  this.enterOuterAlt(localContext, 1);
2779
2954
  {
2780
- this.state = 541;
2955
+ this.state = 578;
2781
2956
  _la = this.tokenStream.LA(1);
2782
- if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 19) !== 0))) {
2957
+ if (!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 19) !== 0))) {
2783
2958
  this.errorHandler.recoverInline(this);
2784
2959
  }
2785
2960
  else {
@@ -2804,17 +2979,17 @@ class CircuitScriptParser extends antlr.Parser {
2804
2979
  }
2805
2980
  property_value_expr() {
2806
2981
  let localContext = new Property_value_exprContext(this.context, this.state);
2807
- this.enterRule(localContext, 98, CircuitScriptParser.RULE_property_value_expr);
2982
+ this.enterRule(localContext, 104, CircuitScriptParser.RULE_property_value_expr);
2808
2983
  let _la;
2809
2984
  try {
2810
- this.state = 552;
2985
+ this.state = 589;
2811
2986
  this.errorHandler.sync(this);
2812
2987
  switch (this.tokenStream.LA(1)) {
2813
2988
  case CircuitScriptParser.NEWLINE:
2814
2989
  localContext = new Nested_propertiesContext(localContext);
2815
2990
  this.enterOuterAlt(localContext, 1);
2816
2991
  {
2817
- this.state = 543;
2992
+ this.state = 580;
2818
2993
  this.nested_properties_inner();
2819
2994
  }
2820
2995
  break;
@@ -2835,21 +3010,21 @@ class CircuitScriptParser extends antlr.Parser {
2835
3010
  localContext = new Single_line_propertyContext(localContext);
2836
3011
  this.enterOuterAlt(localContext, 2);
2837
3012
  {
2838
- this.state = 544;
3013
+ this.state = 581;
2839
3014
  this.data_expr(0);
2840
- this.state = 549;
3015
+ this.state = 586;
2841
3016
  this.errorHandler.sync(this);
2842
3017
  _la = this.tokenStream.LA(1);
2843
3018
  while (_la === 2) {
2844
3019
  {
2845
3020
  {
2846
- this.state = 545;
3021
+ this.state = 582;
2847
3022
  this.match(CircuitScriptParser.T__1);
2848
- this.state = 546;
3023
+ this.state = 583;
2849
3024
  this.data_expr(0);
2850
3025
  }
2851
3026
  }
2852
- this.state = 551;
3027
+ this.state = 588;
2853
3028
  this.errorHandler.sync(this);
2854
3029
  _la = this.tokenStream.LA(1);
2855
3030
  }
@@ -2873,59 +3048,31 @@ class CircuitScriptParser extends antlr.Parser {
2873
3048
  }
2874
3049
  return localContext;
2875
3050
  }
2876
- blank_expr() {
2877
- let localContext = new Blank_exprContext(this.context, this.state);
2878
- this.enterRule(localContext, 100, CircuitScriptParser.RULE_blank_expr);
2879
- try {
2880
- this.enterOuterAlt(localContext, 1);
2881
- {
2882
- this.state = 554;
2883
- this.match(CircuitScriptParser.T__5);
2884
- this.state = 555;
2885
- this.match(CircuitScriptParser.INTEGER_VALUE);
2886
- this.state = 556;
2887
- this.match(CircuitScriptParser.T__6);
2888
- }
2889
- }
2890
- catch (re) {
2891
- if (re instanceof antlr.RecognitionException) {
2892
- this.errorHandler.reportError(this, re);
2893
- this.errorHandler.recover(this, re);
2894
- }
2895
- else {
2896
- throw re;
2897
- }
2898
- }
2899
- finally {
2900
- this.exitRule();
2901
- }
2902
- return localContext;
2903
- }
2904
3051
  wire_atom_expr() {
2905
3052
  let localContext = new Wire_atom_exprContext(this.context, this.state);
2906
- this.enterRule(localContext, 102, CircuitScriptParser.RULE_wire_atom_expr);
3053
+ this.enterRule(localContext, 106, CircuitScriptParser.RULE_wire_atom_expr);
2907
3054
  try {
2908
- this.state = 564;
3055
+ this.state = 597;
2909
3056
  this.errorHandler.sync(this);
2910
- switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
3057
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
2911
3058
  case 1:
2912
3059
  localContext = new Wire_expr_direction_valueContext(localContext);
2913
3060
  this.enterOuterAlt(localContext, 1);
2914
3061
  {
2915
- this.state = 558;
3062
+ this.state = 591;
2916
3063
  this.match(CircuitScriptParser.ID);
2917
- this.state = 561;
3064
+ this.state = 594;
2918
3065
  this.errorHandler.sync(this);
2919
- switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context)) {
3066
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
2920
3067
  case 1:
2921
3068
  {
2922
- this.state = 559;
3069
+ this.state = 592;
2923
3070
  this.match(CircuitScriptParser.INTEGER_VALUE);
2924
3071
  }
2925
3072
  break;
2926
3073
  case 2:
2927
3074
  {
2928
- this.state = 560;
3075
+ this.state = 593;
2929
3076
  this.data_expr(0);
2930
3077
  }
2931
3078
  break;
@@ -2936,7 +3083,7 @@ class CircuitScriptParser extends antlr.Parser {
2936
3083
  localContext = new Wire_expr_direction_onlyContext(localContext);
2937
3084
  this.enterOuterAlt(localContext, 2);
2938
3085
  {
2939
- this.state = 563;
3086
+ this.state = 596;
2940
3087
  this.match(CircuitScriptParser.ID);
2941
3088
  }
2942
3089
  break;
@@ -2958,29 +3105,86 @@ class CircuitScriptParser extends antlr.Parser {
2958
3105
  }
2959
3106
  wire_expr() {
2960
3107
  let localContext = new Wire_exprContext(this.context, this.state);
2961
- this.enterRule(localContext, 104, CircuitScriptParser.RULE_wire_expr);
3108
+ this.enterRule(localContext, 108, CircuitScriptParser.RULE_wire_expr);
2962
3109
  try {
2963
3110
  let alternative;
2964
3111
  this.enterOuterAlt(localContext, 1);
2965
3112
  {
2966
- this.state = 566;
3113
+ this.state = 599;
2967
3114
  this.match(CircuitScriptParser.Wire);
2968
- this.state = 570;
3115
+ this.state = 603;
2969
3116
  this.errorHandler.sync(this);
2970
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
3117
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
2971
3118
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2972
3119
  if (alternative === 1) {
2973
3120
  {
2974
3121
  {
2975
- this.state = 567;
3122
+ this.state = 600;
2976
3123
  this.wire_atom_expr();
2977
3124
  }
2978
3125
  }
2979
3126
  }
2980
- this.state = 572;
3127
+ this.state = 605;
3128
+ this.errorHandler.sync(this);
3129
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3130
+ }
3131
+ }
3132
+ }
3133
+ catch (re) {
3134
+ if (re instanceof antlr.RecognitionException) {
3135
+ this.errorHandler.reportError(this, re);
3136
+ this.errorHandler.recover(this, re);
3137
+ }
3138
+ else {
3139
+ throw re;
3140
+ }
3141
+ }
3142
+ finally {
3143
+ this.exitRule();
3144
+ }
3145
+ return localContext;
3146
+ }
3147
+ array_expr() {
3148
+ let localContext = new Array_exprContext(this.context, this.state);
3149
+ this.enterRule(localContext, 110, CircuitScriptParser.RULE_array_expr);
3150
+ let _la;
3151
+ try {
3152
+ this.enterOuterAlt(localContext, 1);
3153
+ {
3154
+ this.state = 606;
3155
+ this.match(CircuitScriptParser.T__5);
3156
+ this.state = 617;
3157
+ this.errorHandler.sync(this);
3158
+ _la = this.tokenStream.LA(1);
3159
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484736) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 1041415) !== 0)) {
3160
+ {
3161
+ {
3162
+ this.state = 607;
3163
+ this.data_expr(0);
3164
+ this.state = 612;
3165
+ this.errorHandler.sync(this);
3166
+ _la = this.tokenStream.LA(1);
3167
+ while (_la === 2) {
3168
+ {
3169
+ {
3170
+ this.state = 608;
3171
+ this.match(CircuitScriptParser.T__1);
3172
+ this.state = 609;
3173
+ this.data_expr(0);
3174
+ }
3175
+ }
3176
+ this.state = 614;
3177
+ this.errorHandler.sync(this);
3178
+ _la = this.tokenStream.LA(1);
3179
+ }
3180
+ }
3181
+ }
3182
+ this.state = 619;
2981
3183
  this.errorHandler.sync(this);
2982
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
3184
+ _la = this.tokenStream.LA(1);
2983
3185
  }
3186
+ this.state = 620;
3187
+ this.match(CircuitScriptParser.T__6);
2984
3188
  }
2985
3189
  }
2986
3190
  catch (re) {
@@ -2999,13 +3203,13 @@ class CircuitScriptParser extends antlr.Parser {
2999
3203
  }
3000
3204
  point_expr() {
3001
3205
  let localContext = new Point_exprContext(this.context, this.state);
3002
- this.enterRule(localContext, 106, CircuitScriptParser.RULE_point_expr);
3206
+ this.enterRule(localContext, 112, CircuitScriptParser.RULE_point_expr);
3003
3207
  try {
3004
3208
  this.enterOuterAlt(localContext, 1);
3005
3209
  {
3006
- this.state = 573;
3210
+ this.state = 622;
3007
3211
  this.match(CircuitScriptParser.Point);
3008
- this.state = 574;
3212
+ this.state = 623;
3009
3213
  this.match(CircuitScriptParser.ID);
3010
3214
  }
3011
3215
  }
@@ -3025,13 +3229,13 @@ class CircuitScriptParser extends antlr.Parser {
3025
3229
  }
3026
3230
  import_expr() {
3027
3231
  let localContext = new Import_exprContext(this.context, this.state);
3028
- this.enterRule(localContext, 108, CircuitScriptParser.RULE_import_expr);
3232
+ this.enterRule(localContext, 114, CircuitScriptParser.RULE_import_expr);
3029
3233
  try {
3030
3234
  this.enterOuterAlt(localContext, 1);
3031
3235
  {
3032
- this.state = 576;
3236
+ this.state = 625;
3033
3237
  this.match(CircuitScriptParser.Import);
3034
- this.state = 577;
3238
+ this.state = 626;
3035
3239
  this.match(CircuitScriptParser.ID);
3036
3240
  }
3037
3241
  }
@@ -3051,15 +3255,23 @@ class CircuitScriptParser extends antlr.Parser {
3051
3255
  }
3052
3256
  frame_expr() {
3053
3257
  let localContext = new Frame_exprContext(this.context, this.state);
3054
- this.enterRule(localContext, 110, CircuitScriptParser.RULE_frame_expr);
3258
+ this.enterRule(localContext, 116, CircuitScriptParser.RULE_frame_expr);
3259
+ let _la;
3055
3260
  try {
3056
3261
  this.enterOuterAlt(localContext, 1);
3057
3262
  {
3058
- this.state = 579;
3059
- this.match(CircuitScriptParser.Frame);
3060
- this.state = 580;
3263
+ this.state = 628;
3264
+ _la = this.tokenStream.LA(1);
3265
+ if (!(_la === 32 || _la === 33)) {
3266
+ this.errorHandler.recoverInline(this);
3267
+ }
3268
+ else {
3269
+ this.errorHandler.reportMatch(this);
3270
+ this.consume();
3271
+ }
3272
+ this.state = 629;
3061
3273
  this.match(CircuitScriptParser.T__0);
3062
- this.state = 581;
3274
+ this.state = 630;
3063
3275
  this.expressions_block();
3064
3276
  }
3065
3277
  }
@@ -3079,42 +3291,42 @@ class CircuitScriptParser extends antlr.Parser {
3079
3291
  }
3080
3292
  if_expr() {
3081
3293
  let localContext = new If_exprContext(this.context, this.state);
3082
- this.enterRule(localContext, 112, CircuitScriptParser.RULE_if_expr);
3294
+ this.enterRule(localContext, 118, CircuitScriptParser.RULE_if_expr);
3083
3295
  let _la;
3084
3296
  try {
3085
3297
  let alternative;
3086
3298
  this.enterOuterAlt(localContext, 1);
3087
3299
  {
3088
- this.state = 583;
3300
+ this.state = 632;
3089
3301
  this.match(CircuitScriptParser.If);
3090
- this.state = 584;
3302
+ this.state = 633;
3091
3303
  this.data_expr(0);
3092
- this.state = 585;
3304
+ this.state = 634;
3093
3305
  this.match(CircuitScriptParser.T__0);
3094
- this.state = 586;
3306
+ this.state = 635;
3095
3307
  this.expressions_block();
3096
- this.state = 590;
3308
+ this.state = 639;
3097
3309
  this.errorHandler.sync(this);
3098
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3310
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 68, this.context);
3099
3311
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3100
3312
  if (alternative === 1) {
3101
3313
  {
3102
3314
  {
3103
- this.state = 587;
3315
+ this.state = 636;
3104
3316
  this.if_inner_expr();
3105
3317
  }
3106
3318
  }
3107
3319
  }
3108
- this.state = 592;
3320
+ this.state = 641;
3109
3321
  this.errorHandler.sync(this);
3110
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 65, this.context);
3322
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 68, this.context);
3111
3323
  }
3112
- this.state = 594;
3324
+ this.state = 643;
3113
3325
  this.errorHandler.sync(this);
3114
3326
  _la = this.tokenStream.LA(1);
3115
- if (_la === 26) {
3327
+ if (_la === 30) {
3116
3328
  {
3117
- this.state = 593;
3329
+ this.state = 642;
3118
3330
  this.else_expr();
3119
3331
  }
3120
3332
  }
@@ -3136,19 +3348,19 @@ class CircuitScriptParser extends antlr.Parser {
3136
3348
  }
3137
3349
  if_inner_expr() {
3138
3350
  let localContext = new If_inner_exprContext(this.context, this.state);
3139
- this.enterRule(localContext, 114, CircuitScriptParser.RULE_if_inner_expr);
3351
+ this.enterRule(localContext, 120, CircuitScriptParser.RULE_if_inner_expr);
3140
3352
  try {
3141
3353
  this.enterOuterAlt(localContext, 1);
3142
3354
  {
3143
- this.state = 596;
3355
+ this.state = 645;
3144
3356
  this.match(CircuitScriptParser.Else);
3145
- this.state = 597;
3357
+ this.state = 646;
3146
3358
  this.match(CircuitScriptParser.If);
3147
- this.state = 598;
3359
+ this.state = 647;
3148
3360
  this.data_expr(0);
3149
- this.state = 599;
3361
+ this.state = 648;
3150
3362
  this.match(CircuitScriptParser.T__0);
3151
- this.state = 600;
3363
+ this.state = 649;
3152
3364
  this.expressions_block();
3153
3365
  }
3154
3366
  }
@@ -3168,15 +3380,79 @@ class CircuitScriptParser extends antlr.Parser {
3168
3380
  }
3169
3381
  else_expr() {
3170
3382
  let localContext = new Else_exprContext(this.context, this.state);
3171
- this.enterRule(localContext, 116, CircuitScriptParser.RULE_else_expr);
3383
+ this.enterRule(localContext, 122, CircuitScriptParser.RULE_else_expr);
3172
3384
  try {
3173
3385
  this.enterOuterAlt(localContext, 1);
3174
3386
  {
3175
- this.state = 602;
3387
+ this.state = 651;
3176
3388
  this.match(CircuitScriptParser.Else);
3177
- this.state = 603;
3389
+ this.state = 652;
3390
+ this.match(CircuitScriptParser.T__0);
3391
+ this.state = 653;
3392
+ this.expressions_block();
3393
+ }
3394
+ }
3395
+ catch (re) {
3396
+ if (re instanceof antlr.RecognitionException) {
3397
+ this.errorHandler.reportError(this, re);
3398
+ this.errorHandler.recover(this, re);
3399
+ }
3400
+ else {
3401
+ throw re;
3402
+ }
3403
+ }
3404
+ finally {
3405
+ this.exitRule();
3406
+ }
3407
+ return localContext;
3408
+ }
3409
+ while_expr() {
3410
+ let localContext = new While_exprContext(this.context, this.state);
3411
+ this.enterRule(localContext, 124, CircuitScriptParser.RULE_while_expr);
3412
+ try {
3413
+ this.enterOuterAlt(localContext, 1);
3414
+ {
3415
+ this.state = 655;
3416
+ this.match(CircuitScriptParser.While);
3417
+ this.state = 656;
3418
+ this.data_expr(0);
3419
+ this.state = 657;
3420
+ this.match(CircuitScriptParser.T__0);
3421
+ this.state = 658;
3422
+ this.expressions_block();
3423
+ }
3424
+ }
3425
+ catch (re) {
3426
+ if (re instanceof antlr.RecognitionException) {
3427
+ this.errorHandler.reportError(this, re);
3428
+ this.errorHandler.recover(this, re);
3429
+ }
3430
+ else {
3431
+ throw re;
3432
+ }
3433
+ }
3434
+ finally {
3435
+ this.exitRule();
3436
+ }
3437
+ return localContext;
3438
+ }
3439
+ for_expr() {
3440
+ let localContext = new For_exprContext(this.context, this.state);
3441
+ this.enterRule(localContext, 126, CircuitScriptParser.RULE_for_expr);
3442
+ try {
3443
+ this.enterOuterAlt(localContext, 1);
3444
+ {
3445
+ this.state = 660;
3446
+ this.match(CircuitScriptParser.For);
3447
+ this.state = 661;
3448
+ this.match(CircuitScriptParser.ID);
3449
+ this.state = 662;
3450
+ this.match(CircuitScriptParser.In);
3451
+ this.state = 663;
3452
+ this.data_expr(0);
3453
+ this.state = 664;
3178
3454
  this.match(CircuitScriptParser.T__0);
3179
- this.state = 604;
3455
+ this.state = 665;
3180
3456
  this.expressions_block();
3181
3457
  }
3182
3458
  }
@@ -3196,7 +3472,7 @@ class CircuitScriptParser extends antlr.Parser {
3196
3472
  }
3197
3473
  sempred(localContext, ruleIndex, predIndex) {
3198
3474
  switch (ruleIndex) {
3199
- case 29:
3475
+ case 31:
3200
3476
  return this.data_expr_sempred(localContext, predIndex);
3201
3477
  }
3202
3478
  return true;
@@ -3204,13 +3480,13 @@ class CircuitScriptParser extends antlr.Parser {
3204
3480
  data_expr_sempred(localContext, predIndex) {
3205
3481
  switch (predIndex) {
3206
3482
  case 0:
3207
- return this.precpred(this.context, 8);
3483
+ return this.precpred(this.context, 9);
3208
3484
  case 1:
3209
- return this.precpred(this.context, 7);
3485
+ return this.precpred(this.context, 8);
3210
3486
  case 2:
3211
- return this.precpred(this.context, 6);
3487
+ return this.precpred(this.context, 7);
3212
3488
  case 3:
3213
- return this.precpred(this.context, 5);
3489
+ return this.precpred(this.context, 6);
3214
3490
  }
3215
3491
  return true;
3216
3492
  }
@@ -3249,38 +3525,49 @@ CircuitScriptParser.Parallel = 21;
3249
3525
  CircuitScriptParser.Return = 22;
3250
3526
  CircuitScriptParser.Define = 23;
3251
3527
  CircuitScriptParser.Import = 24;
3252
- CircuitScriptParser.If = 25;
3253
- CircuitScriptParser.Else = 26;
3254
- CircuitScriptParser.Not = 27;
3255
- CircuitScriptParser.Frame = 28;
3256
- CircuitScriptParser.Equals = 29;
3257
- CircuitScriptParser.NotEquals = 30;
3258
- CircuitScriptParser.GreaterThan = 31;
3259
- CircuitScriptParser.GreatOrEqualThan = 32;
3260
- CircuitScriptParser.LessThan = 33;
3261
- CircuitScriptParser.LessOrEqualThan = 34;
3262
- CircuitScriptParser.LogicalAnd = 35;
3263
- CircuitScriptParser.LogicalOr = 36;
3264
- CircuitScriptParser.Addition = 37;
3265
- CircuitScriptParser.Minus = 38;
3266
- CircuitScriptParser.Divide = 39;
3267
- CircuitScriptParser.Multiply = 40;
3268
- CircuitScriptParser.OPEN_PAREN = 41;
3269
- CircuitScriptParser.CLOSE_PAREN = 42;
3270
- CircuitScriptParser.NOT_CONNECTED = 43;
3271
- CircuitScriptParser.BOOLEAN_VALUE = 44;
3272
- CircuitScriptParser.ID = 45;
3273
- CircuitScriptParser.INTEGER_VALUE = 46;
3274
- CircuitScriptParser.DECIMAL_VALUE = 47;
3275
- CircuitScriptParser.NUMERIC_VALUE = 48;
3276
- CircuitScriptParser.STRING_VALUE = 49;
3277
- CircuitScriptParser.PERCENTAGE_VALUE = 50;
3278
- CircuitScriptParser.ALPHA_NUMERIC = 51;
3279
- CircuitScriptParser.WS = 52;
3280
- CircuitScriptParser.NEWLINE = 53;
3281
- CircuitScriptParser.COMMENT = 54;
3282
- CircuitScriptParser.INDENT = 55;
3283
- CircuitScriptParser.DEDENT = 56;
3528
+ CircuitScriptParser.For = 25;
3529
+ CircuitScriptParser.In = 26;
3530
+ CircuitScriptParser.While = 27;
3531
+ CircuitScriptParser.Continue = 28;
3532
+ CircuitScriptParser.If = 29;
3533
+ CircuitScriptParser.Else = 30;
3534
+ CircuitScriptParser.Not = 31;
3535
+ CircuitScriptParser.Frame = 32;
3536
+ CircuitScriptParser.Sheet = 33;
3537
+ CircuitScriptParser.Equals = 34;
3538
+ CircuitScriptParser.NotEquals = 35;
3539
+ CircuitScriptParser.GreaterThan = 36;
3540
+ CircuitScriptParser.GreatOrEqualThan = 37;
3541
+ CircuitScriptParser.LessThan = 38;
3542
+ CircuitScriptParser.LessOrEqualThan = 39;
3543
+ CircuitScriptParser.LogicalAnd = 40;
3544
+ CircuitScriptParser.LogicalOr = 41;
3545
+ CircuitScriptParser.Addition = 42;
3546
+ CircuitScriptParser.Minus = 43;
3547
+ CircuitScriptParser.Divide = 44;
3548
+ CircuitScriptParser.Multiply = 45;
3549
+ CircuitScriptParser.Modulus = 46;
3550
+ CircuitScriptParser.AdditionAssign = 47;
3551
+ CircuitScriptParser.MinusAssign = 48;
3552
+ CircuitScriptParser.DivideAssign = 49;
3553
+ CircuitScriptParser.MultiplyAssign = 50;
3554
+ CircuitScriptParser.ModulusAssign = 51;
3555
+ CircuitScriptParser.OPEN_PAREN = 52;
3556
+ CircuitScriptParser.CLOSE_PAREN = 53;
3557
+ CircuitScriptParser.NOT_CONNECTED = 54;
3558
+ CircuitScriptParser.BOOLEAN_VALUE = 55;
3559
+ CircuitScriptParser.ID = 56;
3560
+ CircuitScriptParser.INTEGER_VALUE = 57;
3561
+ CircuitScriptParser.DECIMAL_VALUE = 58;
3562
+ CircuitScriptParser.NUMERIC_VALUE = 59;
3563
+ CircuitScriptParser.STRING_VALUE = 60;
3564
+ CircuitScriptParser.PERCENTAGE_VALUE = 61;
3565
+ CircuitScriptParser.ALPHA_NUMERIC = 62;
3566
+ CircuitScriptParser.WS = 63;
3567
+ CircuitScriptParser.NEWLINE = 64;
3568
+ CircuitScriptParser.COMMENT = 65;
3569
+ CircuitScriptParser.INDENT = 66;
3570
+ CircuitScriptParser.DEDENT = 67;
3284
3571
  CircuitScriptParser.RULE_script = 0;
3285
3572
  CircuitScriptParser.RULE_expression = 1;
3286
3573
  CircuitScriptParser.RULE_expressions_block = 2;
@@ -3305,56 +3592,65 @@ CircuitScriptParser.RULE_at_block_pin_expr = 20;
3305
3592
  CircuitScriptParser.RULE_at_block_pin_expression_simple = 21;
3306
3593
  CircuitScriptParser.RULE_at_block_pin_expression_complex = 22;
3307
3594
  CircuitScriptParser.RULE_break_keyword = 23;
3308
- CircuitScriptParser.RULE_assignment_expr = 24;
3309
- CircuitScriptParser.RULE_keyword_assignment_expr = 25;
3310
- CircuitScriptParser.RULE_parameters = 26;
3311
- CircuitScriptParser.RULE_property_set_expr = 27;
3312
- CircuitScriptParser.RULE_double_dot_property_set_expr = 28;
3313
- CircuitScriptParser.RULE_data_expr = 29;
3314
- CircuitScriptParser.RULE_binary_operator = 30;
3315
- CircuitScriptParser.RULE_unary_operator = 31;
3316
- CircuitScriptParser.RULE_value_expr = 32;
3317
- CircuitScriptParser.RULE_function_def_expr = 33;
3318
- CircuitScriptParser.RULE_function_expr = 34;
3319
- CircuitScriptParser.RULE_function_args_expr = 35;
3320
- CircuitScriptParser.RULE_atom_expr = 36;
3321
- CircuitScriptParser.RULE_trailer_expr = 37;
3322
- CircuitScriptParser.RULE_function_call_expr = 38;
3323
- CircuitScriptParser.RULE_net_namespace_expr = 39;
3324
- CircuitScriptParser.RULE_function_return_expr = 40;
3325
- CircuitScriptParser.RULE_property_block_expr = 41;
3326
- CircuitScriptParser.RULE_create_component_expr = 42;
3327
- CircuitScriptParser.RULE_create_graphic_expr = 43;
3328
- CircuitScriptParser.RULE_create_module_expr = 44;
3329
- CircuitScriptParser.RULE_nested_properties_inner = 45;
3330
- CircuitScriptParser.RULE_graphic_expr = 46;
3331
- CircuitScriptParser.RULE_property_expr = 47;
3332
- CircuitScriptParser.RULE_property_key_expr = 48;
3333
- CircuitScriptParser.RULE_property_value_expr = 49;
3334
- CircuitScriptParser.RULE_blank_expr = 50;
3335
- CircuitScriptParser.RULE_wire_atom_expr = 51;
3336
- CircuitScriptParser.RULE_wire_expr = 52;
3337
- CircuitScriptParser.RULE_point_expr = 53;
3338
- CircuitScriptParser.RULE_import_expr = 54;
3339
- CircuitScriptParser.RULE_frame_expr = 55;
3340
- CircuitScriptParser.RULE_if_expr = 56;
3341
- CircuitScriptParser.RULE_if_inner_expr = 57;
3342
- CircuitScriptParser.RULE_else_expr = 58;
3595
+ CircuitScriptParser.RULE_continue_keyword = 24;
3596
+ CircuitScriptParser.RULE_assignment_expr = 25;
3597
+ CircuitScriptParser.RULE_operator_assignment_expr = 26;
3598
+ CircuitScriptParser.RULE_keyword_assignment_expr = 27;
3599
+ CircuitScriptParser.RULE_parameters = 28;
3600
+ CircuitScriptParser.RULE_property_set_expr = 29;
3601
+ CircuitScriptParser.RULE_double_dot_property_set_expr = 30;
3602
+ CircuitScriptParser.RULE_data_expr = 31;
3603
+ CircuitScriptParser.RULE_binary_operator = 32;
3604
+ CircuitScriptParser.RULE_unary_operator = 33;
3605
+ CircuitScriptParser.RULE_value_expr = 34;
3606
+ CircuitScriptParser.RULE_function_def_expr = 35;
3607
+ CircuitScriptParser.RULE_function_expr = 36;
3608
+ CircuitScriptParser.RULE_function_args_expr = 37;
3609
+ CircuitScriptParser.RULE_atom_expr = 38;
3610
+ CircuitScriptParser.RULE_trailer_expr = 39;
3611
+ CircuitScriptParser.RULE_function_call_expr = 40;
3612
+ CircuitScriptParser.RULE_net_namespace_expr = 41;
3613
+ CircuitScriptParser.RULE_function_return_expr = 42;
3614
+ CircuitScriptParser.RULE_property_block_expr = 43;
3615
+ CircuitScriptParser.RULE_create_component_expr = 44;
3616
+ CircuitScriptParser.RULE_graphic_expressions_block = 45;
3617
+ CircuitScriptParser.RULE_create_graphic_expr = 46;
3618
+ CircuitScriptParser.RULE_create_module_expr = 47;
3619
+ CircuitScriptParser.RULE_nested_properties_inner = 48;
3620
+ CircuitScriptParser.RULE_graphic_expr = 49;
3621
+ CircuitScriptParser.RULE_property_expr = 50;
3622
+ CircuitScriptParser.RULE_property_key_expr = 51;
3623
+ CircuitScriptParser.RULE_property_value_expr = 52;
3624
+ CircuitScriptParser.RULE_wire_atom_expr = 53;
3625
+ CircuitScriptParser.RULE_wire_expr = 54;
3626
+ CircuitScriptParser.RULE_array_expr = 55;
3627
+ CircuitScriptParser.RULE_point_expr = 56;
3628
+ CircuitScriptParser.RULE_import_expr = 57;
3629
+ CircuitScriptParser.RULE_frame_expr = 58;
3630
+ CircuitScriptParser.RULE_if_expr = 59;
3631
+ CircuitScriptParser.RULE_if_inner_expr = 60;
3632
+ CircuitScriptParser.RULE_else_expr = 61;
3633
+ CircuitScriptParser.RULE_while_expr = 62;
3634
+ CircuitScriptParser.RULE_for_expr = 63;
3343
3635
  CircuitScriptParser.literalNames = [
3344
3636
  null, "':'", "','", "'='", "'..'", "'.'", "'['", "']'", "'break'",
3345
3637
  "'branch'", "'create'", "'component'", "'graphic'", "'module'",
3346
3638
  "'wire'", "'pin'", "'add'", "'at'", "'to'", "'point'", "'join'",
3347
- "'parallel'", "'return'", "'def'", "'import'", "'if'", "'else'",
3348
- "'!'", "'frame'", "'=='", "'!='", "'>'", "'>='", "'<'", "'<='",
3349
- "'&&'", "'||'", "'+'", "'-'", "'/'", "'*'", "'('", "')'"
3639
+ "'parallel'", "'return'", "'def'", "'import'", "'for'", "'in'",
3640
+ "'while'", "'continue'", "'if'", "'else'", "'!'", "'frame'", "'sheet'",
3641
+ "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", "'&&'", "'||'", "'+'",
3642
+ "'-'", "'/'", "'*'", "'%'", "'+='", "'-='", "'/='", "'*='", "'%='",
3643
+ "'('", "')'"
3350
3644
  ];
3351
3645
  CircuitScriptParser.symbolicNames = [
3352
3646
  null, null, null, null, null, null, null, null, "Break", "Branch",
3353
3647
  "Create", "Component", "Graphic", "Module", "Wire", "Pin", "Add",
3354
3648
  "At", "To", "Point", "Join", "Parallel", "Return", "Define", "Import",
3355
- "If", "Else", "Not", "Frame", "Equals", "NotEquals", "GreaterThan",
3356
- "GreatOrEqualThan", "LessThan", "LessOrEqualThan", "LogicalAnd",
3357
- "LogicalOr", "Addition", "Minus", "Divide", "Multiply", "OPEN_PAREN",
3649
+ "For", "In", "While", "Continue", "If", "Else", "Not", "Frame",
3650
+ "Sheet", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
3651
+ "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
3652
+ "Minus", "Divide", "Multiply", "Modulus", "AdditionAssign", "MinusAssign",
3653
+ "DivideAssign", "MultiplyAssign", "ModulusAssign", "OPEN_PAREN",
3358
3654
  "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE", "ID", "INTEGER_VALUE",
3359
3655
  "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE", "PERCENTAGE_VALUE",
3360
3656
  "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT", "INDENT", "DEDENT"
@@ -3366,19 +3662,21 @@ CircuitScriptParser.ruleNames = [
3366
3662
  "pin_select_expr2", "at_component_expr", "to_component_expr", "at_to_multiple_expr",
3367
3663
  "at_to_multiple_line_expr", "at_to_multiple_line_expr_to_pin", "at_block",
3368
3664
  "at_block_expressions", "at_block_pin_expr", "at_block_pin_expression_simple",
3369
- "at_block_pin_expression_complex", "break_keyword", "assignment_expr",
3370
- "keyword_assignment_expr", "parameters", "property_set_expr", "double_dot_property_set_expr",
3665
+ "at_block_pin_expression_complex", "break_keyword", "continue_keyword",
3666
+ "assignment_expr", "operator_assignment_expr", "keyword_assignment_expr",
3667
+ "parameters", "property_set_expr", "double_dot_property_set_expr",
3371
3668
  "data_expr", "binary_operator", "unary_operator", "value_expr",
3372
3669
  "function_def_expr", "function_expr", "function_args_expr", "atom_expr",
3373
3670
  "trailer_expr", "function_call_expr", "net_namespace_expr", "function_return_expr",
3374
- "property_block_expr", "create_component_expr", "create_graphic_expr",
3375
- "create_module_expr", "nested_properties_inner", "graphic_expr",
3376
- "property_expr", "property_key_expr", "property_value_expr", "blank_expr",
3377
- "wire_atom_expr", "wire_expr", "point_expr", "import_expr", "frame_expr",
3378
- "if_expr", "if_inner_expr", "else_expr",
3671
+ "property_block_expr", "create_component_expr", "graphic_expressions_block",
3672
+ "create_graphic_expr", "create_module_expr", "nested_properties_inner",
3673
+ "graphic_expr", "property_expr", "property_key_expr", "property_value_expr",
3674
+ "wire_atom_expr", "wire_expr", "array_expr", "point_expr", "import_expr",
3675
+ "frame_expr", "if_expr", "if_inner_expr", "else_expr", "while_expr",
3676
+ "for_expr",
3379
3677
  ];
3380
3678
  CircuitScriptParser._serializedATN = [
3381
- 4, 1, 56, 607, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7,
3679
+ 4, 1, 67, 668, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7,
3382
3680
  6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13,
3383
3681
  2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20,
3384
3682
  7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26,
@@ -3386,220 +3684,242 @@ CircuitScriptParser._serializedATN = [
3386
3684
  7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39,
3387
3685
  2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46,
3388
3686
  7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52,
3389
- 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 1, 0,
3390
- 1, 0, 4, 0, 121, 8, 0, 11, 0, 12, 0, 122, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3391
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 145, 8, 1, 1, 2, 1,
3392
- 2, 1, 2, 1, 2, 4, 2, 151, 8, 2, 11, 2, 12, 2, 152, 1, 2, 1, 2, 1, 3, 4, 3, 158, 8, 3, 11, 3,
3393
- 12, 3, 159, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 172, 8, 5, 11,
3394
- 5, 12, 5, 173, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3,
3395
- 8, 189, 8, 8, 1, 9, 1, 9, 3, 9, 193, 8, 9, 1, 9, 5, 9, 196, 8, 9, 10, 9, 12, 9, 199, 9, 9,
3396
- 1, 9, 3, 9, 202, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 209, 8, 11, 1, 12, 1, 12,
3397
- 1, 13, 1, 13, 1, 13, 3, 13, 216, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 222, 8, 14, 10,
3398
- 14, 12, 14, 225, 9, 14, 1, 14, 3, 14, 228, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1,
3399
- 15, 5, 15, 236, 8, 15, 10, 15, 12, 15, 239, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4,
3400
- 15, 246, 8, 15, 11, 15, 12, 15, 247, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5,
3401
- 16, 257, 8, 16, 10, 16, 12, 16, 260, 9, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1,
3402
- 18, 1, 18, 4, 18, 270, 8, 18, 11, 18, 12, 18, 271, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 278,
3403
- 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 284, 8, 20, 1, 21, 1, 21, 3, 21, 288, 8, 21, 1,
3404
- 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1,
3405
- 26, 1, 26, 5, 26, 305, 8, 26, 10, 26, 12, 26, 308, 9, 26, 1, 26, 1, 26, 5, 26, 312, 8,
3406
- 26, 10, 26, 12, 26, 315, 9, 26, 1, 26, 1, 26, 1, 26, 5, 26, 320, 8, 26, 10, 26, 12, 26,
3407
- 323, 9, 26, 3, 26, 325, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1,
3408
- 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 343, 8, 29, 1, 29, 1, 29, 1,
3409
- 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 352, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1,
3410
- 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 367, 8, 29, 10, 29, 12, 29,
3411
- 370, 9, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 3, 32, 377, 8, 32, 1, 32, 1, 32, 3, 32, 381,
3412
- 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 387, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
3413
- 1, 33, 4, 33, 395, 8, 33, 11, 33, 12, 33, 396, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 403,
3414
- 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 408, 8, 35, 10, 35, 12, 35, 411, 9, 35, 1, 35, 1, 35,
3415
- 1, 35, 1, 35, 5, 35, 417, 8, 35, 10, 35, 12, 35, 420, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35,
3416
- 1, 35, 1, 35, 1, 35, 5, 35, 429, 8, 35, 10, 35, 12, 35, 432, 9, 35, 3, 35, 434, 8, 35,
3417
- 1, 36, 1, 36, 1, 36, 5, 36, 439, 8, 36, 10, 36, 12, 36, 442, 9, 36, 1, 37, 1, 37, 3, 37,
3418
- 446, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 451, 8, 37, 1, 38, 3, 38, 454, 8, 38, 1, 38, 1,
3419
- 38, 4, 38, 458, 8, 38, 11, 38, 12, 38, 459, 1, 39, 3, 39, 463, 8, 39, 1, 39, 1, 39, 3,
3420
- 39, 467, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1,
3421
- 42, 1, 42, 1, 42, 1, 42, 4, 42, 483, 8, 42, 11, 42, 12, 42, 484, 1, 42, 1, 42, 1, 43, 1,
3422
- 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 4, 43, 496, 8, 43, 11, 43, 12, 43, 497, 1, 43, 1,
3423
- 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 4, 44, 510, 8, 44, 11, 44, 12,
3424
- 44, 511, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 520, 8, 45, 11, 45, 12, 45, 521,
3425
- 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 528, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46,
3426
- 3, 46, 536, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49,
3427
- 5, 49, 548, 8, 49, 10, 49, 12, 49, 551, 9, 49, 3, 49, 553, 8, 49, 1, 50, 1, 50, 1, 50,
3428
- 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 562, 8, 51, 1, 51, 3, 51, 565, 8, 51, 1, 52, 1, 52, 5,
3429
- 52, 569, 8, 52, 10, 52, 12, 52, 572, 9, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1,
3430
- 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 589, 8, 56, 10, 56, 12,
3431
- 56, 592, 9, 56, 1, 56, 3, 56, 595, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58,
3432
- 1, 58, 1, 58, 1, 58, 1, 58, 0, 1, 58, 59, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
3433
- 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68,
3434
- 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108,
3435
- 110, 112, 114, 116, 0, 12, 2, 0, 9, 9, 19, 21, 1, 0, 45, 46, 2, 0, 46, 46, 49, 49, 2, 0,
3436
- 43, 43, 46, 46, 1, 0, 39, 40, 1, 0, 37, 38, 1, 0, 35, 36, 1, 0, 29, 34, 2, 0, 27, 27, 38,
3437
- 38, 2, 0, 44, 44, 46, 50, 2, 0, 15, 15, 45, 45, 2, 0, 45, 46, 49, 49, 639, 0, 120, 1, 0,
3438
- 0, 0, 2, 144, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 6, 157, 1, 0, 0, 0, 8, 161, 1, 0, 0, 0, 10, 165,
3439
- 1, 0, 0, 0, 12, 177, 1, 0, 0, 0, 14, 181, 1, 0, 0, 0, 16, 184, 1, 0, 0, 0, 18, 192, 1, 0,
3440
- 0, 0, 20, 203, 1, 0, 0, 0, 22, 208, 1, 0, 0, 0, 24, 210, 1, 0, 0, 0, 26, 212, 1, 0, 0, 0,
3441
- 28, 217, 1, 0, 0, 0, 30, 229, 1, 0, 0, 0, 32, 251, 1, 0, 0, 0, 34, 261, 1, 0, 0, 0, 36, 263,
3442
- 1, 0, 0, 0, 38, 277, 1, 0, 0, 0, 40, 279, 1, 0, 0, 0, 42, 287, 1, 0, 0, 0, 44, 289, 1, 0,
3443
- 0, 0, 46, 291, 1, 0, 0, 0, 48, 293, 1, 0, 0, 0, 50, 297, 1, 0, 0, 0, 52, 324, 1, 0, 0, 0,
3444
- 54, 326, 1, 0, 0, 0, 56, 330, 1, 0, 0, 0, 58, 351, 1, 0, 0, 0, 60, 371, 1, 0, 0, 0, 62, 373,
3445
- 1, 0, 0, 0, 64, 380, 1, 0, 0, 0, 66, 382, 1, 0, 0, 0, 68, 402, 1, 0, 0, 0, 70, 433, 1, 0,
3446
- 0, 0, 72, 435, 1, 0, 0, 0, 74, 450, 1, 0, 0, 0, 76, 453, 1, 0, 0, 0, 78, 462, 1, 0, 0, 0,
3447
- 80, 468, 1, 0, 0, 0, 82, 471, 1, 0, 0, 0, 84, 475, 1, 0, 0, 0, 86, 488, 1, 0, 0, 0, 88, 501,
3448
- 1, 0, 0, 0, 90, 515, 1, 0, 0, 0, 92, 525, 1, 0, 0, 0, 94, 537, 1, 0, 0, 0, 96, 541, 1, 0,
3449
- 0, 0, 98, 552, 1, 0, 0, 0, 100, 554, 1, 0, 0, 0, 102, 564, 1, 0, 0, 0, 104, 566, 1, 0, 0,
3450
- 0, 106, 573, 1, 0, 0, 0, 108, 576, 1, 0, 0, 0, 110, 579, 1, 0, 0, 0, 112, 583, 1, 0, 0,
3451
- 0, 114, 596, 1, 0, 0, 0, 116, 602, 1, 0, 0, 0, 118, 121, 3, 2, 1, 0, 119, 121, 5, 53, 0,
3452
- 0, 120, 118, 1, 0, 0, 0, 120, 119, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 122, 120, 1, 0, 0,
3453
- 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 125, 5, 0, 0, 1, 125, 1, 1, 0, 0, 0,
3454
- 126, 145, 3, 20, 10, 0, 127, 145, 3, 28, 14, 0, 128, 145, 3, 26, 13, 0, 129, 145, 3,
3455
- 48, 24, 0, 130, 145, 3, 54, 27, 0, 131, 145, 3, 10, 5, 0, 132, 145, 3, 56, 28, 0, 133,
3456
- 145, 3, 46, 23, 0, 134, 145, 3, 66, 33, 0, 135, 145, 3, 76, 38, 0, 136, 145, 3, 104,
3457
- 52, 0, 137, 145, 3, 108, 54, 0, 138, 145, 3, 110, 55, 0, 139, 145, 3, 72, 36, 0, 140,
3458
- 145, 3, 36, 18, 0, 141, 145, 3, 6, 3, 0, 142, 145, 3, 106, 53, 0, 143, 145, 3, 112, 56,
3459
- 0, 144, 126, 1, 0, 0, 0, 144, 127, 1, 0, 0, 0, 144, 128, 1, 0, 0, 0, 144, 129, 1, 0, 0,
3460
- 0, 144, 130, 1, 0, 0, 0, 144, 131, 1, 0, 0, 0, 144, 132, 1, 0, 0, 0, 144, 133, 1, 0, 0,
3461
- 0, 144, 134, 1, 0, 0, 0, 144, 135, 1, 0, 0, 0, 144, 136, 1, 0, 0, 0, 144, 137, 1, 0, 0,
3462
- 0, 144, 138, 1, 0, 0, 0, 144, 139, 1, 0, 0, 0, 144, 140, 1, 0, 0, 0, 144, 141, 1, 0, 0,
3463
- 0, 144, 142, 1, 0, 0, 0, 144, 143, 1, 0, 0, 0, 145, 3, 1, 0, 0, 0, 146, 147, 5, 53, 0, 0,
3464
- 147, 150, 5, 55, 0, 0, 148, 151, 5, 53, 0, 0, 149, 151, 3, 2, 1, 0, 150, 148, 1, 0, 0,
3465
- 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0,
3466
- 0, 153, 154, 1, 0, 0, 0, 154, 155, 5, 56, 0, 0, 155, 5, 1, 0, 0, 0, 156, 158, 3, 8, 4, 0,
3467
- 157, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0,
3468
- 160, 7, 1, 0, 0, 0, 161, 162, 7, 0, 0, 0, 162, 163, 5, 1, 0, 0, 163, 164, 3, 4, 2, 0, 164,
3469
- 9, 1, 0, 0, 0, 165, 166, 3, 72, 36, 0, 166, 167, 5, 1, 0, 0, 167, 168, 5, 53, 0, 0, 168,
3470
- 171, 5, 55, 0, 0, 169, 172, 5, 53, 0, 0, 170, 172, 3, 12, 6, 0, 171, 169, 1, 0, 0, 0, 171,
3471
- 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174,
3472
- 175, 1, 0, 0, 0, 175, 176, 5, 56, 0, 0, 176, 11, 1, 0, 0, 0, 177, 178, 7, 1, 0, 0, 178,
3473
- 179, 5, 1, 0, 0, 179, 180, 3, 64, 32, 0, 180, 13, 1, 0, 0, 0, 181, 182, 5, 15, 0, 0, 182,
3474
- 183, 7, 2, 0, 0, 183, 15, 1, 0, 0, 0, 184, 185, 5, 45, 0, 0, 185, 188, 5, 1, 0, 0, 186,
3475
- 189, 3, 64, 32, 0, 187, 189, 5, 45, 0, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189,
3476
- 17, 1, 0, 0, 0, 190, 193, 3, 58, 29, 0, 191, 193, 3, 48, 24, 0, 192, 190, 1, 0, 0, 0, 192,
3477
- 191, 1, 0, 0, 0, 193, 197, 1, 0, 0, 0, 194, 196, 3, 16, 8, 0, 195, 194, 1, 0, 0, 0, 196,
3478
- 199, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199,
3479
- 197, 1, 0, 0, 0, 200, 202, 3, 14, 7, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202,
3480
- 19, 1, 0, 0, 0, 203, 204, 5, 16, 0, 0, 204, 205, 3, 18, 9, 0, 205, 21, 1, 0, 0, 0, 206,
3481
- 209, 3, 18, 9, 0, 207, 209, 3, 14, 7, 0, 208, 206, 1, 0, 0, 0, 208, 207, 1, 0, 0, 0, 209,
3482
- 23, 1, 0, 0, 0, 210, 211, 7, 2, 0, 0, 211, 25, 1, 0, 0, 0, 212, 215, 5, 17, 0, 0, 213, 216,
3483
- 3, 22, 11, 0, 214, 216, 5, 19, 0, 0, 215, 213, 1, 0, 0, 0, 215, 214, 1, 0, 0, 0, 216, 27,
3484
- 1, 0, 0, 0, 217, 227, 5, 18, 0, 0, 218, 223, 3, 22, 11, 0, 219, 220, 5, 2, 0, 0, 220, 222,
3485
- 3, 22, 11, 0, 221, 219, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224,
3486
- 1, 0, 0, 0, 224, 228, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 19, 0, 0, 227, 218,
3487
- 1, 0, 0, 0, 227, 226, 1, 0, 0, 0, 228, 29, 1, 0, 0, 0, 229, 230, 5, 17, 0, 0, 230, 231,
3488
- 3, 22, 11, 0, 231, 232, 5, 18, 0, 0, 232, 237, 3, 22, 11, 0, 233, 234, 5, 2, 0, 0, 234,
3489
- 236, 3, 22, 11, 0, 235, 233, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237,
3490
- 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 241, 5, 1, 0, 0, 241,
3491
- 242, 5, 53, 0, 0, 242, 245, 5, 55, 0, 0, 243, 246, 5, 53, 0, 0, 244, 246, 3, 32, 16, 0,
3492
- 245, 243, 1, 0, 0, 0, 245, 244, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0,
3493
- 247, 248, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 250, 5, 56, 0, 0, 250, 31, 1, 0, 0, 0,
3494
- 251, 252, 3, 24, 12, 0, 252, 253, 5, 1, 0, 0, 253, 258, 3, 34, 17, 0, 254, 255, 5, 2,
3495
- 0, 0, 255, 257, 3, 34, 17, 0, 256, 254, 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256, 1,
3496
- 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 33, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262, 7, 3,
3497
- 0, 0, 262, 35, 1, 0, 0, 0, 263, 264, 3, 26, 13, 0, 264, 265, 5, 1, 0, 0, 265, 266, 5, 53,
3498
- 0, 0, 266, 269, 5, 55, 0, 0, 267, 270, 5, 53, 0, 0, 268, 270, 3, 38, 19, 0, 269, 267,
3499
- 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 271, 272,
3500
- 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 274, 5, 56, 0, 0, 274, 37, 1, 0, 0, 0, 275, 278,
3501
- 3, 2, 1, 0, 276, 278, 3, 40, 20, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 39,
3502
- 1, 0, 0, 0, 279, 280, 3, 24, 12, 0, 280, 283, 5, 1, 0, 0, 281, 284, 3, 42, 21, 0, 282,
3503
- 284, 3, 44, 22, 0, 283, 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 41, 1, 0, 0, 0, 285,
3504
- 288, 3, 2, 1, 0, 286, 288, 5, 43, 0, 0, 287, 285, 1, 0, 0, 0, 287, 286, 1, 0, 0, 0, 288,
3505
- 43, 1, 0, 0, 0, 289, 290, 3, 4, 2, 0, 290, 45, 1, 0, 0, 0, 291, 292, 5, 8, 0, 0, 292, 47,
3506
- 1, 0, 0, 0, 293, 294, 3, 72, 36, 0, 294, 295, 5, 3, 0, 0, 295, 296, 3, 58, 29, 0, 296,
3507
- 49, 1, 0, 0, 0, 297, 298, 5, 45, 0, 0, 298, 299, 5, 3, 0, 0, 299, 300, 3, 58, 29, 0, 300,
3508
- 51, 1, 0, 0, 0, 301, 306, 3, 58, 29, 0, 302, 303, 5, 2, 0, 0, 303, 305, 3, 58, 29, 0, 304,
3509
- 302, 1, 0, 0, 0, 305, 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307,
3510
- 313, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 309, 310, 5, 2, 0, 0, 310, 312, 3, 50, 25, 0, 311,
3511
- 309, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314,
3512
- 325, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 321, 3, 50, 25, 0, 317, 318, 5, 2, 0, 0, 318,
3513
- 320, 3, 50, 25, 0, 319, 317, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321,
3514
- 322, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 301, 1, 0, 0, 0, 324,
3515
- 316, 1, 0, 0, 0, 325, 53, 1, 0, 0, 0, 326, 327, 3, 72, 36, 0, 327, 328, 5, 3, 0, 0, 328,
3516
- 329, 3, 58, 29, 0, 329, 55, 1, 0, 0, 0, 330, 331, 5, 4, 0, 0, 331, 332, 5, 45, 0, 0, 332,
3517
- 333, 5, 3, 0, 0, 333, 334, 3, 58, 29, 0, 334, 57, 1, 0, 0, 0, 335, 336, 6, 29, -1, 0, 336,
3518
- 337, 5, 41, 0, 0, 337, 338, 3, 58, 29, 0, 338, 339, 5, 42, 0, 0, 339, 352, 1, 0, 0, 0,
3519
- 340, 343, 3, 64, 32, 0, 341, 343, 3, 72, 36, 0, 342, 340, 1, 0, 0, 0, 342, 341, 1, 0,
3520
- 0, 0, 343, 352, 1, 0, 0, 0, 344, 345, 3, 62, 31, 0, 345, 346, 3, 58, 29, 9, 346, 352,
3521
- 1, 0, 0, 0, 347, 352, 3, 84, 42, 0, 348, 352, 3, 86, 43, 0, 349, 352, 3, 88, 44, 0, 350,
3522
- 352, 3, 76, 38, 0, 351, 335, 1, 0, 0, 0, 351, 342, 1, 0, 0, 0, 351, 344, 1, 0, 0, 0, 351,
3523
- 347, 1, 0, 0, 0, 351, 348, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 350, 1, 0, 0, 0, 352,
3524
- 368, 1, 0, 0, 0, 353, 354, 10, 8, 0, 0, 354, 355, 7, 4, 0, 0, 355, 367, 3, 58, 29, 9, 356,
3525
- 357, 10, 7, 0, 0, 357, 358, 7, 5, 0, 0, 358, 367, 3, 58, 29, 8, 359, 360, 10, 6, 0, 0,
3526
- 360, 361, 3, 60, 30, 0, 361, 362, 3, 58, 29, 7, 362, 367, 1, 0, 0, 0, 363, 364, 10, 5,
3527
- 0, 0, 364, 365, 7, 6, 0, 0, 365, 367, 3, 58, 29, 6, 366, 353, 1, 0, 0, 0, 366, 356, 1,
3528
- 0, 0, 0, 366, 359, 1, 0, 0, 0, 366, 363, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368, 366, 1,
3529
- 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 59, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 372, 7, 7,
3530
- 0, 0, 372, 61, 1, 0, 0, 0, 373, 374, 7, 8, 0, 0, 374, 63, 1, 0, 0, 0, 375, 377, 5, 38, 0,
3531
- 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 381, 7, 9, 0,
3532
- 0, 379, 381, 3, 100, 50, 0, 380, 376, 1, 0, 0, 0, 380, 379, 1, 0, 0, 0, 381, 65, 1, 0,
3533
- 0, 0, 382, 383, 5, 23, 0, 0, 383, 384, 5, 45, 0, 0, 384, 386, 5, 41, 0, 0, 385, 387, 3,
3534
- 70, 35, 0, 386, 385, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389,
3535
- 5, 42, 0, 0, 389, 390, 5, 1, 0, 0, 390, 391, 5, 53, 0, 0, 391, 394, 5, 55, 0, 0, 392, 395,
3536
- 5, 53, 0, 0, 393, 395, 3, 68, 34, 0, 394, 392, 1, 0, 0, 0, 394, 393, 1, 0, 0, 0, 395, 396,
3537
- 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 399,
3538
- 5, 56, 0, 0, 399, 67, 1, 0, 0, 0, 400, 403, 3, 2, 1, 0, 401, 403, 3, 80, 40, 0, 402, 400,
3539
- 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403, 69, 1, 0, 0, 0, 404, 409, 5, 45, 0, 0, 405, 406,
3540
- 5, 2, 0, 0, 406, 408, 5, 45, 0, 0, 407, 405, 1, 0, 0, 0, 408, 411, 1, 0, 0, 0, 409, 407,
3541
- 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 418, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 412, 413,
3542
- 5, 2, 0, 0, 413, 414, 5, 45, 0, 0, 414, 415, 5, 3, 0, 0, 415, 417, 3, 64, 32, 0, 416, 412,
3543
- 1, 0, 0, 0, 417, 420, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 434,
3544
- 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 421, 422, 5, 45, 0, 0, 422, 423, 5, 3, 0, 0, 423, 430,
3545
- 3, 64, 32, 0, 424, 425, 5, 2, 0, 0, 425, 426, 5, 45, 0, 0, 426, 427, 5, 3, 0, 0, 427, 429,
3546
- 3, 64, 32, 0, 428, 424, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431,
3547
- 1, 0, 0, 0, 431, 434, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 404, 1, 0, 0, 0, 433, 421,
3548
- 1, 0, 0, 0, 434, 71, 1, 0, 0, 0, 435, 440, 5, 45, 0, 0, 436, 437, 5, 5, 0, 0, 437, 439,
3549
- 5, 45, 0, 0, 438, 436, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441,
3550
- 1, 0, 0, 0, 441, 73, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443, 445, 5, 41, 0, 0, 444, 446,
3551
- 3, 52, 26, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 451,
3552
- 5, 42, 0, 0, 448, 449, 5, 5, 0, 0, 449, 451, 5, 45, 0, 0, 450, 443, 1, 0, 0, 0, 450, 448,
3553
- 1, 0, 0, 0, 451, 75, 1, 0, 0, 0, 452, 454, 3, 78, 39, 0, 453, 452, 1, 0, 0, 0, 453, 454,
3554
- 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 457, 5, 45, 0, 0, 456, 458, 3, 74, 37, 0, 457, 456,
3555
- 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 77, 1,
3556
- 0, 0, 0, 461, 463, 5, 37, 0, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 464, 1,
3557
- 0, 0, 0, 464, 466, 5, 39, 0, 0, 465, 467, 3, 58, 29, 0, 466, 465, 1, 0, 0, 0, 466, 467,
3558
- 1, 0, 0, 0, 467, 79, 1, 0, 0, 0, 468, 469, 5, 22, 0, 0, 469, 470, 3, 58, 29, 0, 470, 81,
3559
- 1, 0, 0, 0, 471, 472, 3, 96, 48, 0, 472, 473, 5, 1, 0, 0, 473, 474, 3, 4, 2, 0, 474, 83,
3560
- 1, 0, 0, 0, 475, 476, 5, 10, 0, 0, 476, 477, 5, 11, 0, 0, 477, 478, 5, 1, 0, 0, 478, 479,
3561
- 5, 53, 0, 0, 479, 482, 5, 55, 0, 0, 480, 483, 5, 53, 0, 0, 481, 483, 3, 94, 47, 0, 482,
3562
- 480, 1, 0, 0, 0, 482, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484,
3563
- 485, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 487, 5, 56, 0, 0, 487, 85, 1, 0, 0, 0, 488,
3564
- 489, 5, 10, 0, 0, 489, 490, 5, 12, 0, 0, 490, 491, 5, 1, 0, 0, 491, 492, 5, 53, 0, 0, 492,
3565
- 495, 5, 55, 0, 0, 493, 496, 5, 53, 0, 0, 494, 496, 3, 92, 46, 0, 495, 493, 1, 0, 0, 0,
3566
- 495, 494, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0,
3567
- 498, 499, 1, 0, 0, 0, 499, 500, 5, 56, 0, 0, 500, 87, 1, 0, 0, 0, 501, 502, 5, 10, 0, 0,
3568
- 502, 503, 5, 13, 0, 0, 503, 504, 5, 1, 0, 0, 504, 505, 5, 53, 0, 0, 505, 509, 5, 55, 0,
3569
- 0, 506, 510, 5, 53, 0, 0, 507, 510, 3, 94, 47, 0, 508, 510, 3, 82, 41, 0, 509, 506, 1,
3570
- 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 509, 1,
3571
- 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 514, 5, 56, 0, 0, 514, 89, 1,
3572
- 0, 0, 0, 515, 516, 5, 53, 0, 0, 516, 519, 5, 55, 0, 0, 517, 520, 5, 53, 0, 0, 518, 520,
3573
- 3, 94, 47, 0, 519, 517, 1, 0, 0, 0, 519, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 519,
3574
- 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 5, 56, 0, 0, 524, 91,
3575
- 1, 0, 0, 0, 525, 527, 7, 10, 0, 0, 526, 528, 5, 1, 0, 0, 527, 526, 1, 0, 0, 0, 527, 528,
3576
- 1, 0, 0, 0, 528, 535, 1, 0, 0, 0, 529, 536, 3, 52, 26, 0, 530, 531, 5, 41, 0, 0, 531, 532,
3577
- 3, 52, 26, 0, 532, 533, 5, 42, 0, 0, 533, 536, 1, 0, 0, 0, 534, 536, 3, 90, 45, 0, 535,
3578
- 529, 1, 0, 0, 0, 535, 530, 1, 0, 0, 0, 535, 534, 1, 0, 0, 0, 536, 93, 1, 0, 0, 0, 537, 538,
3579
- 3, 96, 48, 0, 538, 539, 5, 1, 0, 0, 539, 540, 3, 98, 49, 0, 540, 95, 1, 0, 0, 0, 541, 542,
3580
- 7, 11, 0, 0, 542, 97, 1, 0, 0, 0, 543, 553, 3, 90, 45, 0, 544, 549, 3, 58, 29, 0, 545,
3581
- 546, 5, 2, 0, 0, 546, 548, 3, 58, 29, 0, 547, 545, 1, 0, 0, 0, 548, 551, 1, 0, 0, 0, 549,
3582
- 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 553, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 552,
3583
- 543, 1, 0, 0, 0, 552, 544, 1, 0, 0, 0, 553, 99, 1, 0, 0, 0, 554, 555, 5, 6, 0, 0, 555, 556,
3584
- 5, 46, 0, 0, 556, 557, 5, 7, 0, 0, 557, 101, 1, 0, 0, 0, 558, 561, 5, 45, 0, 0, 559, 562,
3585
- 5, 46, 0, 0, 560, 562, 3, 58, 29, 0, 561, 559, 1, 0, 0, 0, 561, 560, 1, 0, 0, 0, 562, 565,
3586
- 1, 0, 0, 0, 563, 565, 5, 45, 0, 0, 564, 558, 1, 0, 0, 0, 564, 563, 1, 0, 0, 0, 565, 103,
3587
- 1, 0, 0, 0, 566, 570, 5, 14, 0, 0, 567, 569, 3, 102, 51, 0, 568, 567, 1, 0, 0, 0, 569,
3588
- 572, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 105, 1, 0, 0, 0, 572,
3589
- 570, 1, 0, 0, 0, 573, 574, 5, 19, 0, 0, 574, 575, 5, 45, 0, 0, 575, 107, 1, 0, 0, 0, 576,
3590
- 577, 5, 24, 0, 0, 577, 578, 5, 45, 0, 0, 578, 109, 1, 0, 0, 0, 579, 580, 5, 28, 0, 0, 580,
3591
- 581, 5, 1, 0, 0, 581, 582, 3, 4, 2, 0, 582, 111, 1, 0, 0, 0, 583, 584, 5, 25, 0, 0, 584,
3592
- 585, 3, 58, 29, 0, 585, 586, 5, 1, 0, 0, 586, 590, 3, 4, 2, 0, 587, 589, 3, 114, 57, 0,
3593
- 588, 587, 1, 0, 0, 0, 589, 592, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0,
3594
- 591, 594, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 593, 595, 3, 116, 58, 0, 594, 593, 1, 0, 0,
3595
- 0, 594, 595, 1, 0, 0, 0, 595, 113, 1, 0, 0, 0, 596, 597, 5, 26, 0, 0, 597, 598, 5, 25,
3596
- 0, 0, 598, 599, 3, 58, 29, 0, 599, 600, 5, 1, 0, 0, 600, 601, 3, 4, 2, 0, 601, 115, 1,
3597
- 0, 0, 0, 602, 603, 5, 26, 0, 0, 603, 604, 5, 1, 0, 0, 604, 605, 3, 4, 2, 0, 605, 117, 1,
3598
- 0, 0, 0, 67, 120, 122, 144, 150, 152, 159, 171, 173, 188, 192, 197, 201, 208, 215,
3599
- 223, 227, 237, 245, 247, 258, 269, 271, 277, 283, 287, 306, 313, 321, 324, 342,
3600
- 351, 366, 368, 376, 380, 386, 394, 396, 402, 409, 418, 430, 433, 440, 445, 450,
3601
- 453, 459, 462, 466, 482, 484, 495, 497, 509, 511, 519, 521, 527, 535, 549, 552,
3602
- 561, 564, 570, 590, 594
3687
+ 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59,
3688
+ 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 1, 0, 4, 0, 131, 8, 0,
3689
+ 11, 0, 12, 0, 132, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3690
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 159, 8, 1, 1, 2, 1,
3691
+ 2, 1, 2, 1, 2, 4, 2, 165, 8, 2, 11, 2, 12, 2, 166, 1, 2, 1, 2, 1, 3, 4, 3, 172, 8, 3, 11, 3,
3692
+ 12, 3, 173, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 186, 8, 5, 11,
3693
+ 5, 12, 5, 187, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3,
3694
+ 8, 203, 8, 8, 1, 9, 1, 9, 3, 9, 207, 8, 9, 1, 9, 5, 9, 210, 8, 9, 10, 9, 12, 9, 213, 9, 9,
3695
+ 1, 9, 3, 9, 216, 8, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 223, 8, 11, 1, 12, 1, 12,
3696
+ 1, 13, 1, 13, 1, 13, 3, 13, 230, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 236, 8, 14, 10,
3697
+ 14, 12, 14, 239, 9, 14, 1, 14, 3, 14, 242, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1,
3698
+ 15, 5, 15, 250, 8, 15, 10, 15, 12, 15, 253, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4,
3699
+ 15, 260, 8, 15, 11, 15, 12, 15, 261, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5,
3700
+ 16, 271, 8, 16, 10, 16, 12, 16, 274, 9, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1,
3701
+ 18, 1, 18, 4, 18, 284, 8, 18, 11, 18, 12, 18, 285, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 292,
3702
+ 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 298, 8, 20, 1, 21, 1, 21, 3, 21, 302, 8, 21, 1,
3703
+ 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1,
3704
+ 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 325, 8, 28, 10, 28, 12, 28,
3705
+ 328, 9, 28, 1, 28, 1, 28, 5, 28, 332, 8, 28, 10, 28, 12, 28, 335, 9, 28, 1, 28, 1, 28,
3706
+ 1, 28, 5, 28, 340, 8, 28, 10, 28, 12, 28, 343, 9, 28, 3, 28, 345, 8, 28, 1, 29, 1, 29,
3707
+ 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31,
3708
+ 1, 31, 3, 31, 363, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31,
3709
+ 373, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31,
3710
+ 1, 31, 1, 31, 5, 31, 388, 8, 31, 10, 31, 12, 31, 391, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33,
3711
+ 1, 34, 3, 34, 398, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 406, 8, 35, 1,
3712
+ 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 4, 35, 414, 8, 35, 11, 35, 12, 35, 415, 1, 35, 1,
3713
+ 35, 1, 36, 1, 36, 3, 36, 422, 8, 36, 1, 37, 1, 37, 1, 37, 5, 37, 427, 8, 37, 10, 37, 12,
3714
+ 37, 430, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 436, 8, 37, 10, 37, 12, 37, 439, 9,
3715
+ 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 448, 8, 37, 10, 37, 12, 37,
3716
+ 451, 9, 37, 3, 37, 453, 8, 37, 1, 38, 1, 38, 1, 38, 5, 38, 458, 8, 38, 10, 38, 12, 38,
3717
+ 461, 9, 38, 1, 39, 1, 39, 3, 39, 465, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 470, 8, 39, 1,
3718
+ 40, 3, 40, 473, 8, 40, 1, 40, 1, 40, 4, 40, 477, 8, 40, 11, 40, 12, 40, 478, 1, 41, 3,
3719
+ 41, 482, 8, 41, 1, 41, 1, 41, 3, 41, 486, 8, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43,
3720
+ 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 4, 44, 502, 8, 44, 11, 44, 12, 44,
3721
+ 503, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 512, 8, 45, 11, 45, 12, 45, 513,
3722
+ 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47,
3723
+ 1, 47, 1, 47, 4, 47, 531, 8, 47, 11, 47, 12, 47, 532, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48,
3724
+ 1, 48, 4, 48, 541, 8, 48, 11, 48, 12, 48, 542, 1, 48, 1, 48, 1, 49, 1, 49, 3, 49, 549,
3725
+ 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 557, 8, 49, 1, 49, 1, 49, 1, 49,
3726
+ 1, 49, 5, 49, 563, 8, 49, 10, 49, 12, 49, 566, 9, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49,
3727
+ 3, 49, 573, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52,
3728
+ 5, 52, 585, 8, 52, 10, 52, 12, 52, 588, 9, 52, 3, 52, 590, 8, 52, 1, 53, 1, 53, 1, 53,
3729
+ 3, 53, 595, 8, 53, 1, 53, 3, 53, 598, 8, 53, 1, 54, 1, 54, 5, 54, 602, 8, 54, 10, 54, 12,
3730
+ 54, 605, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 611, 8, 55, 10, 55, 12, 55, 614, 9,
3731
+ 55, 5, 55, 616, 8, 55, 10, 55, 12, 55, 619, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1,
3732
+ 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 638,
3733
+ 8, 59, 10, 59, 12, 59, 641, 9, 59, 1, 59, 3, 59, 644, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60,
3734
+ 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63,
3735
+ 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 0, 1, 62, 64, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
3736
+ 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62,
3737
+ 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104,
3738
+ 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 0, 14, 2, 0, 9, 9, 19, 21, 1,
3739
+ 0, 56, 57, 2, 0, 57, 57, 60, 60, 2, 0, 54, 54, 57, 57, 1, 0, 47, 51, 1, 0, 44, 46, 1, 0,
3740
+ 42, 43, 1, 0, 40, 41, 1, 0, 34, 39, 2, 0, 31, 31, 43, 43, 2, 0, 55, 55, 57, 61, 2, 0, 15,
3741
+ 15, 56, 56, 2, 0, 56, 57, 60, 60, 1, 0, 32, 33, 703, 0, 130, 1, 0, 0, 0, 2, 158, 1, 0, 0,
3742
+ 0, 4, 160, 1, 0, 0, 0, 6, 171, 1, 0, 0, 0, 8, 175, 1, 0, 0, 0, 10, 179, 1, 0, 0, 0, 12, 191,
3743
+ 1, 0, 0, 0, 14, 195, 1, 0, 0, 0, 16, 198, 1, 0, 0, 0, 18, 206, 1, 0, 0, 0, 20, 217, 1, 0,
3744
+ 0, 0, 22, 222, 1, 0, 0, 0, 24, 224, 1, 0, 0, 0, 26, 226, 1, 0, 0, 0, 28, 231, 1, 0, 0, 0,
3745
+ 30, 243, 1, 0, 0, 0, 32, 265, 1, 0, 0, 0, 34, 275, 1, 0, 0, 0, 36, 277, 1, 0, 0, 0, 38, 291,
3746
+ 1, 0, 0, 0, 40, 293, 1, 0, 0, 0, 42, 301, 1, 0, 0, 0, 44, 303, 1, 0, 0, 0, 46, 305, 1, 0,
3747
+ 0, 0, 48, 307, 1, 0, 0, 0, 50, 309, 1, 0, 0, 0, 52, 313, 1, 0, 0, 0, 54, 317, 1, 0, 0, 0,
3748
+ 56, 344, 1, 0, 0, 0, 58, 346, 1, 0, 0, 0, 60, 350, 1, 0, 0, 0, 62, 372, 1, 0, 0, 0, 64, 392,
3749
+ 1, 0, 0, 0, 66, 394, 1, 0, 0, 0, 68, 397, 1, 0, 0, 0, 70, 401, 1, 0, 0, 0, 72, 421, 1, 0,
3750
+ 0, 0, 74, 452, 1, 0, 0, 0, 76, 454, 1, 0, 0, 0, 78, 469, 1, 0, 0, 0, 80, 472, 1, 0, 0, 0,
3751
+ 82, 481, 1, 0, 0, 0, 84, 487, 1, 0, 0, 0, 86, 490, 1, 0, 0, 0, 88, 494, 1, 0, 0, 0, 90, 507,
3752
+ 1, 0, 0, 0, 92, 517, 1, 0, 0, 0, 94, 522, 1, 0, 0, 0, 96, 536, 1, 0, 0, 0, 98, 572, 1, 0,
3753
+ 0, 0, 100, 574, 1, 0, 0, 0, 102, 578, 1, 0, 0, 0, 104, 589, 1, 0, 0, 0, 106, 597, 1, 0,
3754
+ 0, 0, 108, 599, 1, 0, 0, 0, 110, 606, 1, 0, 0, 0, 112, 622, 1, 0, 0, 0, 114, 625, 1, 0,
3755
+ 0, 0, 116, 628, 1, 0, 0, 0, 118, 632, 1, 0, 0, 0, 120, 645, 1, 0, 0, 0, 122, 651, 1, 0,
3756
+ 0, 0, 124, 655, 1, 0, 0, 0, 126, 660, 1, 0, 0, 0, 128, 131, 3, 2, 1, 0, 129, 131, 5, 64,
3757
+ 0, 0, 130, 128, 1, 0, 0, 0, 130, 129, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 130, 1, 0,
3758
+ 0, 0, 132, 133, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 135, 5, 0, 0, 1, 135, 1, 1, 0, 0,
3759
+ 0, 136, 159, 3, 20, 10, 0, 137, 159, 3, 28, 14, 0, 138, 159, 3, 26, 13, 0, 139, 159,
3760
+ 3, 50, 25, 0, 140, 159, 3, 52, 26, 0, 141, 159, 3, 58, 29, 0, 142, 159, 3, 10, 5, 0, 143,
3761
+ 159, 3, 60, 30, 0, 144, 159, 3, 46, 23, 0, 145, 159, 3, 48, 24, 0, 146, 159, 3, 70, 35,
3762
+ 0, 147, 159, 3, 80, 40, 0, 148, 159, 3, 108, 54, 0, 149, 159, 3, 114, 57, 0, 150, 159,
3763
+ 3, 116, 58, 0, 151, 159, 3, 76, 38, 0, 152, 159, 3, 36, 18, 0, 153, 159, 3, 6, 3, 0, 154,
3764
+ 159, 3, 112, 56, 0, 155, 159, 3, 118, 59, 0, 156, 159, 3, 124, 62, 0, 157, 159, 3, 126,
3765
+ 63, 0, 158, 136, 1, 0, 0, 0, 158, 137, 1, 0, 0, 0, 158, 138, 1, 0, 0, 0, 158, 139, 1, 0,
3766
+ 0, 0, 158, 140, 1, 0, 0, 0, 158, 141, 1, 0, 0, 0, 158, 142, 1, 0, 0, 0, 158, 143, 1, 0,
3767
+ 0, 0, 158, 144, 1, 0, 0, 0, 158, 145, 1, 0, 0, 0, 158, 146, 1, 0, 0, 0, 158, 147, 1, 0,
3768
+ 0, 0, 158, 148, 1, 0, 0, 0, 158, 149, 1, 0, 0, 0, 158, 150, 1, 0, 0, 0, 158, 151, 1, 0,
3769
+ 0, 0, 158, 152, 1, 0, 0, 0, 158, 153, 1, 0, 0, 0, 158, 154, 1, 0, 0, 0, 158, 155, 1, 0,
3770
+ 0, 0, 158, 156, 1, 0, 0, 0, 158, 157, 1, 0, 0, 0, 159, 3, 1, 0, 0, 0, 160, 161, 5, 64, 0,
3771
+ 0, 161, 164, 5, 66, 0, 0, 162, 165, 5, 64, 0, 0, 163, 165, 3, 2, 1, 0, 164, 162, 1, 0,
3772
+ 0, 0, 164, 163, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 164, 1, 0, 0, 0, 166, 167, 1, 0,
3773
+ 0, 0, 167, 168, 1, 0, 0, 0, 168, 169, 5, 67, 0, 0, 169, 5, 1, 0, 0, 0, 170, 172, 3, 8, 4,
3774
+ 0, 171, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 171, 1, 0, 0, 0, 173, 174, 1, 0, 0,
3775
+ 0, 174, 7, 1, 0, 0, 0, 175, 176, 7, 0, 0, 0, 176, 177, 5, 1, 0, 0, 177, 178, 3, 4, 2, 0,
3776
+ 178, 9, 1, 0, 0, 0, 179, 180, 3, 76, 38, 0, 180, 181, 5, 1, 0, 0, 181, 182, 5, 64, 0, 0,
3777
+ 182, 185, 5, 66, 0, 0, 183, 186, 5, 64, 0, 0, 184, 186, 3, 12, 6, 0, 185, 183, 1, 0, 0,
3778
+ 0, 185, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0,
3779
+ 0, 188, 189, 1, 0, 0, 0, 189, 190, 5, 67, 0, 0, 190, 11, 1, 0, 0, 0, 191, 192, 7, 1, 0,
3780
+ 0, 192, 193, 5, 1, 0, 0, 193, 194, 3, 68, 34, 0, 194, 13, 1, 0, 0, 0, 195, 196, 5, 15,
3781
+ 0, 0, 196, 197, 7, 2, 0, 0, 197, 15, 1, 0, 0, 0, 198, 199, 5, 56, 0, 0, 199, 202, 5, 1,
3782
+ 0, 0, 200, 203, 3, 68, 34, 0, 201, 203, 5, 56, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1,
3783
+ 0, 0, 0, 203, 17, 1, 0, 0, 0, 204, 207, 3, 62, 31, 0, 205, 207, 3, 50, 25, 0, 206, 204,
3784
+ 1, 0, 0, 0, 206, 205, 1, 0, 0, 0, 207, 211, 1, 0, 0, 0, 208, 210, 3, 16, 8, 0, 209, 208,
3785
+ 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 215,
3786
+ 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 216, 3, 14, 7, 0, 215, 214, 1, 0, 0, 0, 215, 216,
3787
+ 1, 0, 0, 0, 216, 19, 1, 0, 0, 0, 217, 218, 5, 16, 0, 0, 218, 219, 3, 18, 9, 0, 219, 21,
3788
+ 1, 0, 0, 0, 220, 223, 3, 18, 9, 0, 221, 223, 3, 14, 7, 0, 222, 220, 1, 0, 0, 0, 222, 221,
3789
+ 1, 0, 0, 0, 223, 23, 1, 0, 0, 0, 224, 225, 7, 2, 0, 0, 225, 25, 1, 0, 0, 0, 226, 229, 5,
3790
+ 17, 0, 0, 227, 230, 3, 22, 11, 0, 228, 230, 5, 19, 0, 0, 229, 227, 1, 0, 0, 0, 229, 228,
3791
+ 1, 0, 0, 0, 230, 27, 1, 0, 0, 0, 231, 241, 5, 18, 0, 0, 232, 237, 3, 22, 11, 0, 233, 234,
3792
+ 5, 2, 0, 0, 234, 236, 3, 22, 11, 0, 235, 233, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235,
3793
+ 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 242, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 242,
3794
+ 5, 19, 0, 0, 241, 232, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 29, 1, 0, 0, 0, 243, 244,
3795
+ 5, 17, 0, 0, 244, 245, 3, 22, 11, 0, 245, 246, 5, 18, 0, 0, 246, 251, 3, 22, 11, 0, 247,
3796
+ 248, 5, 2, 0, 0, 248, 250, 3, 22, 11, 0, 249, 247, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, 251,
3797
+ 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 254, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254,
3798
+ 255, 5, 1, 0, 0, 255, 256, 5, 64, 0, 0, 256, 259, 5, 66, 0, 0, 257, 260, 5, 64, 0, 0, 258,
3799
+ 260, 3, 32, 16, 0, 259, 257, 1, 0, 0, 0, 259, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261,
3800
+ 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 5, 67, 0, 0, 264,
3801
+ 31, 1, 0, 0, 0, 265, 266, 3, 24, 12, 0, 266, 267, 5, 1, 0, 0, 267, 272, 3, 34, 17, 0, 268,
3802
+ 269, 5, 2, 0, 0, 269, 271, 3, 34, 17, 0, 270, 268, 1, 0, 0, 0, 271, 274, 1, 0, 0, 0, 272,
3803
+ 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 33, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 275, 276,
3804
+ 7, 3, 0, 0, 276, 35, 1, 0, 0, 0, 277, 278, 3, 26, 13, 0, 278, 279, 5, 1, 0, 0, 279, 280,
3805
+ 5, 64, 0, 0, 280, 283, 5, 66, 0, 0, 281, 284, 5, 64, 0, 0, 282, 284, 3, 38, 19, 0, 283,
3806
+ 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285,
3807
+ 286, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 288, 5, 67, 0, 0, 288, 37, 1, 0, 0, 0, 289,
3808
+ 292, 3, 2, 1, 0, 290, 292, 3, 40, 20, 0, 291, 289, 1, 0, 0, 0, 291, 290, 1, 0, 0, 0, 292,
3809
+ 39, 1, 0, 0, 0, 293, 294, 3, 24, 12, 0, 294, 297, 5, 1, 0, 0, 295, 298, 3, 42, 21, 0, 296,
3810
+ 298, 3, 44, 22, 0, 297, 295, 1, 0, 0, 0, 297, 296, 1, 0, 0, 0, 298, 41, 1, 0, 0, 0, 299,
3811
+ 302, 3, 2, 1, 0, 300, 302, 5, 54, 0, 0, 301, 299, 1, 0, 0, 0, 301, 300, 1, 0, 0, 0, 302,
3812
+ 43, 1, 0, 0, 0, 303, 304, 3, 4, 2, 0, 304, 45, 1, 0, 0, 0, 305, 306, 5, 8, 0, 0, 306, 47,
3813
+ 1, 0, 0, 0, 307, 308, 5, 28, 0, 0, 308, 49, 1, 0, 0, 0, 309, 310, 3, 76, 38, 0, 310, 311,
3814
+ 5, 3, 0, 0, 311, 312, 3, 62, 31, 0, 312, 51, 1, 0, 0, 0, 313, 314, 3, 76, 38, 0, 314, 315,
3815
+ 7, 4, 0, 0, 315, 316, 3, 62, 31, 0, 316, 53, 1, 0, 0, 0, 317, 318, 5, 56, 0, 0, 318, 319,
3816
+ 5, 3, 0, 0, 319, 320, 3, 62, 31, 0, 320, 55, 1, 0, 0, 0, 321, 326, 3, 62, 31, 0, 322, 323,
3817
+ 5, 2, 0, 0, 323, 325, 3, 62, 31, 0, 324, 322, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324,
3818
+ 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 333, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330,
3819
+ 5, 2, 0, 0, 330, 332, 3, 54, 27, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331,
3820
+ 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 345, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 341,
3821
+ 3, 54, 27, 0, 337, 338, 5, 2, 0, 0, 338, 340, 3, 54, 27, 0, 339, 337, 1, 0, 0, 0, 340,
3822
+ 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 345, 1, 0, 0, 0, 343,
3823
+ 341, 1, 0, 0, 0, 344, 321, 1, 0, 0, 0, 344, 336, 1, 0, 0, 0, 345, 57, 1, 0, 0, 0, 346, 347,
3824
+ 3, 76, 38, 0, 347, 348, 5, 3, 0, 0, 348, 349, 3, 62, 31, 0, 349, 59, 1, 0, 0, 0, 350, 351,
3825
+ 5, 4, 0, 0, 351, 352, 5, 56, 0, 0, 352, 353, 5, 3, 0, 0, 353, 354, 3, 62, 31, 0, 354, 61,
3826
+ 1, 0, 0, 0, 355, 356, 6, 31, -1, 0, 356, 357, 5, 52, 0, 0, 357, 358, 3, 62, 31, 0, 358,
3827
+ 359, 5, 53, 0, 0, 359, 373, 1, 0, 0, 0, 360, 363, 3, 68, 34, 0, 361, 363, 3, 76, 38, 0,
3828
+ 362, 360, 1, 0, 0, 0, 362, 361, 1, 0, 0, 0, 363, 373, 1, 0, 0, 0, 364, 365, 3, 66, 33,
3829
+ 0, 365, 366, 3, 62, 31, 10, 366, 373, 1, 0, 0, 0, 367, 373, 3, 88, 44, 0, 368, 373, 3,
3830
+ 92, 46, 0, 369, 373, 3, 94, 47, 0, 370, 373, 3, 80, 40, 0, 371, 373, 3, 110, 55, 0, 372,
3831
+ 355, 1, 0, 0, 0, 372, 362, 1, 0, 0, 0, 372, 364, 1, 0, 0, 0, 372, 367, 1, 0, 0, 0, 372,
3832
+ 368, 1, 0, 0, 0, 372, 369, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 372, 371, 1, 0, 0, 0, 373,
3833
+ 389, 1, 0, 0, 0, 374, 375, 10, 9, 0, 0, 375, 376, 7, 5, 0, 0, 376, 388, 3, 62, 31, 10,
3834
+ 377, 378, 10, 8, 0, 0, 378, 379, 7, 6, 0, 0, 379, 388, 3, 62, 31, 9, 380, 381, 10, 7,
3835
+ 0, 0, 381, 382, 3, 64, 32, 0, 382, 383, 3, 62, 31, 8, 383, 388, 1, 0, 0, 0, 384, 385,
3836
+ 10, 6, 0, 0, 385, 386, 7, 7, 0, 0, 386, 388, 3, 62, 31, 7, 387, 374, 1, 0, 0, 0, 387, 377,
3837
+ 1, 0, 0, 0, 387, 380, 1, 0, 0, 0, 387, 384, 1, 0, 0, 0, 388, 391, 1, 0, 0, 0, 389, 387,
3838
+ 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 63, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 393, 7,
3839
+ 8, 0, 0, 393, 65, 1, 0, 0, 0, 394, 395, 7, 9, 0, 0, 395, 67, 1, 0, 0, 0, 396, 398, 5, 43,
3840
+ 0, 0, 397, 396, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 400, 7, 10,
3841
+ 0, 0, 400, 69, 1, 0, 0, 0, 401, 402, 5, 23, 0, 0, 402, 403, 5, 56, 0, 0, 403, 405, 5, 52,
3842
+ 0, 0, 404, 406, 3, 74, 37, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 1,
3843
+ 0, 0, 0, 407, 408, 5, 53, 0, 0, 408, 409, 5, 1, 0, 0, 409, 410, 5, 64, 0, 0, 410, 413,
3844
+ 5, 66, 0, 0, 411, 414, 5, 64, 0, 0, 412, 414, 3, 72, 36, 0, 413, 411, 1, 0, 0, 0, 413,
3845
+ 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416,
3846
+ 417, 1, 0, 0, 0, 417, 418, 5, 67, 0, 0, 418, 71, 1, 0, 0, 0, 419, 422, 3, 2, 1, 0, 420,
3847
+ 422, 3, 84, 42, 0, 421, 419, 1, 0, 0, 0, 421, 420, 1, 0, 0, 0, 422, 73, 1, 0, 0, 0, 423,
3848
+ 428, 5, 56, 0, 0, 424, 425, 5, 2, 0, 0, 425, 427, 5, 56, 0, 0, 426, 424, 1, 0, 0, 0, 427,
3849
+ 430, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 437, 1, 0, 0, 0, 430,
3850
+ 428, 1, 0, 0, 0, 431, 432, 5, 2, 0, 0, 432, 433, 5, 56, 0, 0, 433, 434, 5, 3, 0, 0, 434,
3851
+ 436, 3, 68, 34, 0, 435, 431, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 437,
3852
+ 438, 1, 0, 0, 0, 438, 453, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 440, 441, 5, 56, 0, 0, 441,
3853
+ 442, 5, 3, 0, 0, 442, 449, 3, 68, 34, 0, 443, 444, 5, 2, 0, 0, 444, 445, 5, 56, 0, 0, 445,
3854
+ 446, 5, 3, 0, 0, 446, 448, 3, 68, 34, 0, 447, 443, 1, 0, 0, 0, 448, 451, 1, 0, 0, 0, 449,
3855
+ 447, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 453, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 452,
3856
+ 423, 1, 0, 0, 0, 452, 440, 1, 0, 0, 0, 453, 75, 1, 0, 0, 0, 454, 459, 5, 56, 0, 0, 455,
3857
+ 456, 5, 5, 0, 0, 456, 458, 5, 56, 0, 0, 457, 455, 1, 0, 0, 0, 458, 461, 1, 0, 0, 0, 459,
3858
+ 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 77, 1, 0, 0, 0, 461, 459, 1, 0, 0, 0, 462, 464,
3859
+ 5, 52, 0, 0, 463, 465, 3, 56, 28, 0, 464, 463, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466,
3860
+ 1, 0, 0, 0, 466, 470, 5, 53, 0, 0, 467, 468, 5, 5, 0, 0, 468, 470, 5, 56, 0, 0, 469, 462,
3861
+ 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 470, 79, 1, 0, 0, 0, 471, 473, 3, 82, 41, 0, 472, 471,
3862
+ 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 476, 5, 56, 0, 0, 475, 477,
3863
+ 3, 78, 39, 0, 476, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479,
3864
+ 1, 0, 0, 0, 479, 81, 1, 0, 0, 0, 480, 482, 5, 42, 0, 0, 481, 480, 1, 0, 0, 0, 481, 482,
3865
+ 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 485, 5, 44, 0, 0, 484, 486, 3, 62, 31, 0, 485, 484,
3866
+ 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 83, 1, 0, 0, 0, 487, 488, 5, 22, 0, 0, 488, 489,
3867
+ 3, 62, 31, 0, 489, 85, 1, 0, 0, 0, 490, 491, 3, 102, 51, 0, 491, 492, 5, 1, 0, 0, 492,
3868
+ 493, 3, 4, 2, 0, 493, 87, 1, 0, 0, 0, 494, 495, 5, 10, 0, 0, 495, 496, 5, 11, 0, 0, 496,
3869
+ 497, 5, 1, 0, 0, 497, 498, 5, 64, 0, 0, 498, 501, 5, 66, 0, 0, 499, 502, 5, 64, 0, 0, 500,
3870
+ 502, 3, 100, 50, 0, 501, 499, 1, 0, 0, 0, 501, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503,
3871
+ 501, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 67, 0, 0, 506,
3872
+ 89, 1, 0, 0, 0, 507, 508, 5, 64, 0, 0, 508, 511, 5, 66, 0, 0, 509, 512, 5, 64, 0, 0, 510,
3873
+ 512, 3, 98, 49, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513,
3874
+ 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 5, 67, 0, 0, 516,
3875
+ 91, 1, 0, 0, 0, 517, 518, 5, 10, 0, 0, 518, 519, 5, 12, 0, 0, 519, 520, 5, 1, 0, 0, 520,
3876
+ 521, 3, 90, 45, 0, 521, 93, 1, 0, 0, 0, 522, 523, 5, 10, 0, 0, 523, 524, 5, 13, 0, 0, 524,
3877
+ 525, 5, 1, 0, 0, 525, 526, 5, 64, 0, 0, 526, 530, 5, 66, 0, 0, 527, 531, 5, 64, 0, 0, 528,
3878
+ 531, 3, 100, 50, 0, 529, 531, 3, 86, 43, 0, 530, 527, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0,
3879
+ 530, 529, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0,
3880
+ 533, 534, 1, 0, 0, 0, 534, 535, 5, 67, 0, 0, 535, 95, 1, 0, 0, 0, 536, 537, 5, 64, 0, 0,
3881
+ 537, 540, 5, 66, 0, 0, 538, 541, 5, 64, 0, 0, 539, 541, 3, 100, 50, 0, 540, 538, 1, 0,
3882
+ 0, 0, 540, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0,
3883
+ 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 5, 67, 0, 0, 545, 97, 1, 0, 0, 0, 546, 548, 7, 11,
3884
+ 0, 0, 547, 549, 5, 1, 0, 0, 548, 547, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 556, 1, 0,
3885
+ 0, 0, 550, 557, 3, 56, 28, 0, 551, 552, 5, 52, 0, 0, 552, 553, 3, 56, 28, 0, 553, 554,
3886
+ 5, 53, 0, 0, 554, 557, 1, 0, 0, 0, 555, 557, 3, 96, 48, 0, 556, 550, 1, 0, 0, 0, 556, 551,
3887
+ 1, 0, 0, 0, 556, 555, 1, 0, 0, 0, 557, 573, 1, 0, 0, 0, 558, 559, 5, 25, 0, 0, 559, 564,
3888
+ 5, 56, 0, 0, 560, 561, 5, 2, 0, 0, 561, 563, 5, 56, 0, 0, 562, 560, 1, 0, 0, 0, 563, 566,
3889
+ 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 567, 1, 0, 0, 0, 566, 564,
3890
+ 1, 0, 0, 0, 567, 568, 5, 26, 0, 0, 568, 569, 3, 62, 31, 0, 569, 570, 5, 1, 0, 0, 570, 571,
3891
+ 3, 90, 45, 0, 571, 573, 1, 0, 0, 0, 572, 546, 1, 0, 0, 0, 572, 558, 1, 0, 0, 0, 573, 99,
3892
+ 1, 0, 0, 0, 574, 575, 3, 102, 51, 0, 575, 576, 5, 1, 0, 0, 576, 577, 3, 104, 52, 0, 577,
3893
+ 101, 1, 0, 0, 0, 578, 579, 7, 12, 0, 0, 579, 103, 1, 0, 0, 0, 580, 590, 3, 96, 48, 0, 581,
3894
+ 586, 3, 62, 31, 0, 582, 583, 5, 2, 0, 0, 583, 585, 3, 62, 31, 0, 584, 582, 1, 0, 0, 0,
3895
+ 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 590, 1, 0, 0, 0,
3896
+ 588, 586, 1, 0, 0, 0, 589, 580, 1, 0, 0, 0, 589, 581, 1, 0, 0, 0, 590, 105, 1, 0, 0, 0,
3897
+ 591, 594, 5, 56, 0, 0, 592, 595, 5, 57, 0, 0, 593, 595, 3, 62, 31, 0, 594, 592, 1, 0,
3898
+ 0, 0, 594, 593, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 598, 5, 56, 0, 0, 597, 591, 1, 0,
3899
+ 0, 0, 597, 596, 1, 0, 0, 0, 598, 107, 1, 0, 0, 0, 599, 603, 5, 14, 0, 0, 600, 602, 3, 106,
3900
+ 53, 0, 601, 600, 1, 0, 0, 0, 602, 605, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0,
3901
+ 0, 0, 604, 109, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 606, 617, 5, 6, 0, 0, 607, 612, 3, 62,
3902
+ 31, 0, 608, 609, 5, 2, 0, 0, 609, 611, 3, 62, 31, 0, 610, 608, 1, 0, 0, 0, 611, 614, 1,
3903
+ 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1,
3904
+ 0, 0, 0, 615, 607, 1, 0, 0, 0, 616, 619, 1, 0, 0, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1,
3905
+ 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 620, 621, 5, 7, 0, 0, 621, 111, 1,
3906
+ 0, 0, 0, 622, 623, 5, 19, 0, 0, 623, 624, 5, 56, 0, 0, 624, 113, 1, 0, 0, 0, 625, 626,
3907
+ 5, 24, 0, 0, 626, 627, 5, 56, 0, 0, 627, 115, 1, 0, 0, 0, 628, 629, 7, 13, 0, 0, 629, 630,
3908
+ 5, 1, 0, 0, 630, 631, 3, 4, 2, 0, 631, 117, 1, 0, 0, 0, 632, 633, 5, 29, 0, 0, 633, 634,
3909
+ 3, 62, 31, 0, 634, 635, 5, 1, 0, 0, 635, 639, 3, 4, 2, 0, 636, 638, 3, 120, 60, 0, 637,
3910
+ 636, 1, 0, 0, 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640,
3911
+ 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 642, 644, 3, 122, 61, 0, 643, 642, 1, 0, 0, 0, 643,
3912
+ 644, 1, 0, 0, 0, 644, 119, 1, 0, 0, 0, 645, 646, 5, 30, 0, 0, 646, 647, 5, 29, 0, 0, 647,
3913
+ 648, 3, 62, 31, 0, 648, 649, 5, 1, 0, 0, 649, 650, 3, 4, 2, 0, 650, 121, 1, 0, 0, 0, 651,
3914
+ 652, 5, 30, 0, 0, 652, 653, 5, 1, 0, 0, 653, 654, 3, 4, 2, 0, 654, 123, 1, 0, 0, 0, 655,
3915
+ 656, 5, 27, 0, 0, 656, 657, 3, 62, 31, 0, 657, 658, 5, 1, 0, 0, 658, 659, 3, 4, 2, 0, 659,
3916
+ 125, 1, 0, 0, 0, 660, 661, 5, 25, 0, 0, 661, 662, 5, 56, 0, 0, 662, 663, 5, 26, 0, 0, 663,
3917
+ 664, 3, 62, 31, 0, 664, 665, 5, 1, 0, 0, 665, 666, 3, 4, 2, 0, 666, 127, 1, 0, 0, 0, 70,
3918
+ 130, 132, 158, 164, 166, 173, 185, 187, 202, 206, 211, 215, 222, 229, 237, 241,
3919
+ 251, 259, 261, 272, 283, 285, 291, 297, 301, 326, 333, 341, 344, 362, 372, 387,
3920
+ 389, 397, 405, 413, 415, 421, 428, 437, 449, 452, 459, 464, 469, 472, 478, 481,
3921
+ 485, 501, 503, 511, 513, 530, 532, 540, 542, 548, 556, 564, 572, 586, 589, 594,
3922
+ 597, 603, 612, 617, 639, 643
3603
3923
  ];
3604
3924
  CircuitScriptParser.vocabulary = new antlr.Vocabulary(CircuitScriptParser.literalNames, CircuitScriptParser.symbolicNames, []);
3605
3925
  CircuitScriptParser.decisionsToDFA = CircuitScriptParser._ATN.decisionToState.map((ds, index) => new antlr.DFA(ds, index));
@@ -3653,6 +3973,9 @@ class ExpressionContext extends antlr.ParserRuleContext {
3653
3973
  assignment_expr() {
3654
3974
  return this.getRuleContext(0, Assignment_exprContext);
3655
3975
  }
3976
+ operator_assignment_expr() {
3977
+ return this.getRuleContext(0, Operator_assignment_exprContext);
3978
+ }
3656
3979
  property_set_expr() {
3657
3980
  return this.getRuleContext(0, Property_set_exprContext);
3658
3981
  }
@@ -3665,6 +3988,9 @@ class ExpressionContext extends antlr.ParserRuleContext {
3665
3988
  break_keyword() {
3666
3989
  return this.getRuleContext(0, Break_keywordContext);
3667
3990
  }
3991
+ continue_keyword() {
3992
+ return this.getRuleContext(0, Continue_keywordContext);
3993
+ }
3668
3994
  function_def_expr() {
3669
3995
  return this.getRuleContext(0, Function_def_exprContext);
3670
3996
  }
@@ -3695,6 +4021,12 @@ class ExpressionContext extends antlr.ParserRuleContext {
3695
4021
  if_expr() {
3696
4022
  return this.getRuleContext(0, If_exprContext);
3697
4023
  }
4024
+ while_expr() {
4025
+ return this.getRuleContext(0, While_exprContext);
4026
+ }
4027
+ for_expr() {
4028
+ return this.getRuleContext(0, For_exprContext);
4029
+ }
3698
4030
  get ruleIndex() {
3699
4031
  return CircuitScriptParser.RULE_expression;
3700
4032
  }
@@ -4326,6 +4658,26 @@ class Break_keywordContext extends antlr.ParserRuleContext {
4326
4658
  }
4327
4659
  }
4328
4660
  exports.Break_keywordContext = Break_keywordContext;
4661
+ class Continue_keywordContext extends antlr.ParserRuleContext {
4662
+ constructor(parent, invokingState) {
4663
+ super(parent, invokingState);
4664
+ }
4665
+ Continue() {
4666
+ return this.getToken(CircuitScriptParser.Continue, 0);
4667
+ }
4668
+ get ruleIndex() {
4669
+ return CircuitScriptParser.RULE_continue_keyword;
4670
+ }
4671
+ accept(visitor) {
4672
+ if (visitor.visitContinue_keyword) {
4673
+ return visitor.visitContinue_keyword(this);
4674
+ }
4675
+ else {
4676
+ return visitor.visitChildren(this);
4677
+ }
4678
+ }
4679
+ }
4680
+ exports.Continue_keywordContext = Continue_keywordContext;
4329
4681
  class Assignment_exprContext extends antlr.ParserRuleContext {
4330
4682
  constructor(parent, invokingState) {
4331
4683
  super(parent, invokingState);
@@ -4349,6 +4701,44 @@ class Assignment_exprContext extends antlr.ParserRuleContext {
4349
4701
  }
4350
4702
  }
4351
4703
  exports.Assignment_exprContext = Assignment_exprContext;
4704
+ class Operator_assignment_exprContext extends antlr.ParserRuleContext {
4705
+ constructor(parent, invokingState) {
4706
+ super(parent, invokingState);
4707
+ }
4708
+ atom_expr() {
4709
+ return this.getRuleContext(0, Atom_exprContext);
4710
+ }
4711
+ data_expr() {
4712
+ return this.getRuleContext(0, Data_exprContext);
4713
+ }
4714
+ AdditionAssign() {
4715
+ return this.getToken(CircuitScriptParser.AdditionAssign, 0);
4716
+ }
4717
+ MinusAssign() {
4718
+ return this.getToken(CircuitScriptParser.MinusAssign, 0);
4719
+ }
4720
+ MultiplyAssign() {
4721
+ return this.getToken(CircuitScriptParser.MultiplyAssign, 0);
4722
+ }
4723
+ DivideAssign() {
4724
+ return this.getToken(CircuitScriptParser.DivideAssign, 0);
4725
+ }
4726
+ ModulusAssign() {
4727
+ return this.getToken(CircuitScriptParser.ModulusAssign, 0);
4728
+ }
4729
+ get ruleIndex() {
4730
+ return CircuitScriptParser.RULE_operator_assignment_expr;
4731
+ }
4732
+ accept(visitor) {
4733
+ if (visitor.visitOperator_assignment_expr) {
4734
+ return visitor.visitOperator_assignment_expr(this);
4735
+ }
4736
+ else {
4737
+ return visitor.visitChildren(this);
4738
+ }
4739
+ }
4740
+ }
4741
+ exports.Operator_assignment_exprContext = Operator_assignment_exprContext;
4352
4742
  class Keyword_assignment_exprContext extends antlr.ParserRuleContext {
4353
4743
  constructor(parent, invokingState) {
4354
4744
  super(parent, invokingState);
@@ -4459,6 +4849,24 @@ class Data_exprContext extends antlr.ParserRuleContext {
4459
4849
  }
4460
4850
  }
4461
4851
  exports.Data_exprContext = Data_exprContext;
4852
+ class ArrayExprContext extends Data_exprContext {
4853
+ constructor(ctx) {
4854
+ super(ctx.parent, ctx.invokingState);
4855
+ super.copyFrom(ctx);
4856
+ }
4857
+ array_expr() {
4858
+ return this.getRuleContext(0, Array_exprContext);
4859
+ }
4860
+ accept(visitor) {
4861
+ if (visitor.visitArrayExpr) {
4862
+ return visitor.visitArrayExpr(this);
4863
+ }
4864
+ else {
4865
+ return visitor.visitChildren(this);
4866
+ }
4867
+ }
4868
+ }
4869
+ exports.ArrayExprContext = ArrayExprContext;
4462
4870
  class FunctionCallExprContext extends Data_exprContext {
4463
4871
  constructor(ctx) {
4464
4872
  super(ctx.parent, ctx.invokingState);
@@ -4521,6 +4929,9 @@ class MultiplyExprContext extends Data_exprContext {
4521
4929
  Divide() {
4522
4930
  return this.getToken(CircuitScriptParser.Divide, 0);
4523
4931
  }
4932
+ Modulus() {
4933
+ return this.getToken(CircuitScriptParser.Modulus, 0);
4934
+ }
4524
4935
  accept(visitor) {
4525
4936
  if (visitor.visitMultiplyExpr) {
4526
4937
  return visitor.visitMultiplyExpr(this);
@@ -4755,9 +5166,6 @@ class Value_exprContext extends antlr.ParserRuleContext {
4755
5166
  Minus() {
4756
5167
  return this.getToken(CircuitScriptParser.Minus, 0);
4757
5168
  }
4758
- blank_expr() {
4759
- return this.getRuleContext(0, Blank_exprContext);
4760
- }
4761
5169
  get ruleIndex() {
4762
5170
  return CircuitScriptParser.RULE_value_expr;
4763
5171
  }
@@ -5075,16 +5483,10 @@ class Create_component_exprContext extends antlr.ParserRuleContext {
5075
5483
  }
5076
5484
  }
5077
5485
  exports.Create_component_exprContext = Create_component_exprContext;
5078
- class Create_graphic_exprContext extends antlr.ParserRuleContext {
5486
+ class Graphic_expressions_blockContext extends antlr.ParserRuleContext {
5079
5487
  constructor(parent, invokingState) {
5080
5488
  super(parent, invokingState);
5081
5489
  }
5082
- Create() {
5083
- return this.getToken(CircuitScriptParser.Create, 0);
5084
- }
5085
- Graphic() {
5086
- return this.getToken(CircuitScriptParser.Graphic, 0);
5087
- }
5088
5490
  NEWLINE(i) {
5089
5491
  if (i === undefined) {
5090
5492
  return this.getTokens(CircuitScriptParser.NEWLINE);
@@ -5105,6 +5507,32 @@ class Create_graphic_exprContext extends antlr.ParserRuleContext {
5105
5507
  }
5106
5508
  return this.getRuleContext(i, Graphic_exprContext);
5107
5509
  }
5510
+ get ruleIndex() {
5511
+ return CircuitScriptParser.RULE_graphic_expressions_block;
5512
+ }
5513
+ accept(visitor) {
5514
+ if (visitor.visitGraphic_expressions_block) {
5515
+ return visitor.visitGraphic_expressions_block(this);
5516
+ }
5517
+ else {
5518
+ return visitor.visitChildren(this);
5519
+ }
5520
+ }
5521
+ }
5522
+ exports.Graphic_expressions_blockContext = Graphic_expressions_blockContext;
5523
+ class Create_graphic_exprContext extends antlr.ParserRuleContext {
5524
+ constructor(parent, invokingState) {
5525
+ super(parent, invokingState);
5526
+ }
5527
+ Create() {
5528
+ return this.getToken(CircuitScriptParser.Create, 0);
5529
+ }
5530
+ Graphic() {
5531
+ return this.getToken(CircuitScriptParser.Graphic, 0);
5532
+ }
5533
+ graphic_expressions_block() {
5534
+ return this.getRuleContext(0, Graphic_expressions_blockContext);
5535
+ }
5108
5536
  get ruleIndex() {
5109
5537
  return CircuitScriptParser.RULE_create_graphic_expr;
5110
5538
  }
@@ -5208,6 +5636,19 @@ class Graphic_exprContext extends antlr.ParserRuleContext {
5208
5636
  constructor(parent, invokingState) {
5209
5637
  super(parent, invokingState);
5210
5638
  }
5639
+ get ruleIndex() {
5640
+ return CircuitScriptParser.RULE_graphic_expr;
5641
+ }
5642
+ copyFrom(ctx) {
5643
+ super.copyFrom(ctx);
5644
+ }
5645
+ }
5646
+ exports.Graphic_exprContext = Graphic_exprContext;
5647
+ class GraphicCommandExprContext extends Graphic_exprContext {
5648
+ constructor(ctx) {
5649
+ super(ctx.parent, ctx.invokingState);
5650
+ super.copyFrom(ctx);
5651
+ }
5211
5652
  ID() {
5212
5653
  return this.getToken(CircuitScriptParser.ID, 0);
5213
5654
  }
@@ -5226,19 +5667,51 @@ class Graphic_exprContext extends antlr.ParserRuleContext {
5226
5667
  nested_properties_inner() {
5227
5668
  return this.getRuleContext(0, Nested_properties_innerContext);
5228
5669
  }
5229
- get ruleIndex() {
5230
- return CircuitScriptParser.RULE_graphic_expr;
5670
+ accept(visitor) {
5671
+ if (visitor.visitGraphicCommandExpr) {
5672
+ return visitor.visitGraphicCommandExpr(this);
5673
+ }
5674
+ else {
5675
+ return visitor.visitChildren(this);
5676
+ }
5677
+ }
5678
+ }
5679
+ exports.GraphicCommandExprContext = GraphicCommandExprContext;
5680
+ class GraphicForExprContext extends Graphic_exprContext {
5681
+ constructor(ctx) {
5682
+ super(ctx.parent, ctx.invokingState);
5683
+ super.copyFrom(ctx);
5684
+ }
5685
+ For() {
5686
+ return this.getToken(CircuitScriptParser.For, 0);
5687
+ }
5688
+ ID(i) {
5689
+ if (i === undefined) {
5690
+ return this.getTokens(CircuitScriptParser.ID);
5691
+ }
5692
+ else {
5693
+ return this.getToken(CircuitScriptParser.ID, i);
5694
+ }
5695
+ }
5696
+ In() {
5697
+ return this.getToken(CircuitScriptParser.In, 0);
5698
+ }
5699
+ data_expr() {
5700
+ return this.getRuleContext(0, Data_exprContext);
5701
+ }
5702
+ graphic_expressions_block() {
5703
+ return this.getRuleContext(0, Graphic_expressions_blockContext);
5231
5704
  }
5232
5705
  accept(visitor) {
5233
- if (visitor.visitGraphic_expr) {
5234
- return visitor.visitGraphic_expr(this);
5706
+ if (visitor.visitGraphicForExpr) {
5707
+ return visitor.visitGraphicForExpr(this);
5235
5708
  }
5236
5709
  else {
5237
5710
  return visitor.visitChildren(this);
5238
5711
  }
5239
5712
  }
5240
5713
  }
5241
- exports.Graphic_exprContext = Graphic_exprContext;
5714
+ exports.GraphicForExprContext = GraphicForExprContext;
5242
5715
  class Property_exprContext extends antlr.ParserRuleContext {
5243
5716
  constructor(parent, invokingState) {
5244
5717
  super(parent, invokingState);
@@ -5339,26 +5812,6 @@ class Nested_propertiesContext extends Property_value_exprContext {
5339
5812
  }
5340
5813
  }
5341
5814
  exports.Nested_propertiesContext = Nested_propertiesContext;
5342
- class Blank_exprContext extends antlr.ParserRuleContext {
5343
- constructor(parent, invokingState) {
5344
- super(parent, invokingState);
5345
- }
5346
- INTEGER_VALUE() {
5347
- return this.getToken(CircuitScriptParser.INTEGER_VALUE, 0);
5348
- }
5349
- get ruleIndex() {
5350
- return CircuitScriptParser.RULE_blank_expr;
5351
- }
5352
- accept(visitor) {
5353
- if (visitor.visitBlank_expr) {
5354
- return visitor.visitBlank_expr(this);
5355
- }
5356
- else {
5357
- return visitor.visitChildren(this);
5358
- }
5359
- }
5360
- }
5361
- exports.Blank_exprContext = Blank_exprContext;
5362
5815
  class Wire_atom_exprContext extends antlr.ParserRuleContext {
5363
5816
  constructor(parent, invokingState) {
5364
5817
  super(parent, invokingState);
@@ -5439,6 +5892,29 @@ class Wire_exprContext extends antlr.ParserRuleContext {
5439
5892
  }
5440
5893
  }
5441
5894
  exports.Wire_exprContext = Wire_exprContext;
5895
+ class Array_exprContext extends antlr.ParserRuleContext {
5896
+ constructor(parent, invokingState) {
5897
+ super(parent, invokingState);
5898
+ }
5899
+ data_expr(i) {
5900
+ if (i === undefined) {
5901
+ return this.getRuleContexts(Data_exprContext);
5902
+ }
5903
+ return this.getRuleContext(i, Data_exprContext);
5904
+ }
5905
+ get ruleIndex() {
5906
+ return CircuitScriptParser.RULE_array_expr;
5907
+ }
5908
+ accept(visitor) {
5909
+ if (visitor.visitArray_expr) {
5910
+ return visitor.visitArray_expr(this);
5911
+ }
5912
+ else {
5913
+ return visitor.visitChildren(this);
5914
+ }
5915
+ }
5916
+ }
5917
+ exports.Array_exprContext = Array_exprContext;
5442
5918
  class Point_exprContext extends antlr.ParserRuleContext {
5443
5919
  constructor(parent, invokingState) {
5444
5920
  super(parent, invokingState);
@@ -5489,11 +5965,14 @@ class Frame_exprContext extends antlr.ParserRuleContext {
5489
5965
  constructor(parent, invokingState) {
5490
5966
  super(parent, invokingState);
5491
5967
  }
5968
+ expressions_block() {
5969
+ return this.getRuleContext(0, Expressions_blockContext);
5970
+ }
5492
5971
  Frame() {
5493
5972
  return this.getToken(CircuitScriptParser.Frame, 0);
5494
5973
  }
5495
- expressions_block() {
5496
- return this.getRuleContext(0, Expressions_blockContext);
5974
+ Sheet() {
5975
+ return this.getToken(CircuitScriptParser.Sheet, 0);
5497
5976
  }
5498
5977
  get ruleIndex() {
5499
5978
  return CircuitScriptParser.RULE_frame_expr;
@@ -5595,3 +6074,61 @@ class Else_exprContext extends antlr.ParserRuleContext {
5595
6074
  }
5596
6075
  }
5597
6076
  exports.Else_exprContext = Else_exprContext;
6077
+ class While_exprContext extends antlr.ParserRuleContext {
6078
+ constructor(parent, invokingState) {
6079
+ super(parent, invokingState);
6080
+ }
6081
+ While() {
6082
+ return this.getToken(CircuitScriptParser.While, 0);
6083
+ }
6084
+ data_expr() {
6085
+ return this.getRuleContext(0, Data_exprContext);
6086
+ }
6087
+ expressions_block() {
6088
+ return this.getRuleContext(0, Expressions_blockContext);
6089
+ }
6090
+ get ruleIndex() {
6091
+ return CircuitScriptParser.RULE_while_expr;
6092
+ }
6093
+ accept(visitor) {
6094
+ if (visitor.visitWhile_expr) {
6095
+ return visitor.visitWhile_expr(this);
6096
+ }
6097
+ else {
6098
+ return visitor.visitChildren(this);
6099
+ }
6100
+ }
6101
+ }
6102
+ exports.While_exprContext = While_exprContext;
6103
+ class For_exprContext extends antlr.ParserRuleContext {
6104
+ constructor(parent, invokingState) {
6105
+ super(parent, invokingState);
6106
+ }
6107
+ For() {
6108
+ return this.getToken(CircuitScriptParser.For, 0);
6109
+ }
6110
+ ID() {
6111
+ return this.getToken(CircuitScriptParser.ID, 0);
6112
+ }
6113
+ In() {
6114
+ return this.getToken(CircuitScriptParser.In, 0);
6115
+ }
6116
+ data_expr() {
6117
+ return this.getRuleContext(0, Data_exprContext);
6118
+ }
6119
+ expressions_block() {
6120
+ return this.getRuleContext(0, Expressions_blockContext);
6121
+ }
6122
+ get ruleIndex() {
6123
+ return CircuitScriptParser.RULE_for_expr;
6124
+ }
6125
+ accept(visitor) {
6126
+ if (visitor.visitFor_expr) {
6127
+ return visitor.visitFor_expr(this);
6128
+ }
6129
+ else {
6130
+ return visitor.visitChildren(this);
6131
+ }
6132
+ }
6133
+ }
6134
+ exports.For_exprContext = For_exprContext;