circuitscript 0.0.25 → 0.0.27

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/LICENSE +1 -1
  2. package/dist/cjs/BaseVisitor.js +16 -12
  3. package/dist/cjs/SemanticTokenVisitor.js +3 -3
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +189 -166
  5. package/dist/cjs/antlr/CircuitScriptParser.js +1295 -719
  6. package/dist/cjs/draw_symbols.js +42 -14
  7. package/dist/cjs/execute.js +91 -30
  8. package/dist/cjs/export.js +91 -5
  9. package/dist/cjs/geometry.js +45 -26
  10. package/dist/cjs/globals.js +1 -2
  11. package/dist/cjs/helpers.js +6 -2
  12. package/dist/cjs/layout.js +37 -17
  13. package/dist/cjs/main.js +21 -9
  14. package/dist/cjs/objects/ClassComponent.js +8 -0
  15. package/dist/cjs/objects/types.js +8 -1
  16. package/dist/cjs/render.js +1 -1
  17. package/dist/cjs/visitor.js +131 -23
  18. package/dist/esm/BaseVisitor.mjs +17 -13
  19. package/dist/esm/SemanticTokenVisitor.mjs +3 -3
  20. package/dist/esm/antlr/CircuitScriptLexer.mjs +189 -166
  21. package/dist/esm/antlr/CircuitScriptParser.mjs +1287 -716
  22. package/dist/esm/antlr/CircuitScriptVisitor.mjs +6 -1
  23. package/dist/esm/draw_symbols.mjs +44 -16
  24. package/dist/esm/execute.mjs +90 -26
  25. package/dist/esm/export.mjs +89 -6
  26. package/dist/esm/geometry.mjs +44 -25
  27. package/dist/esm/globals.mjs +1 -2
  28. package/dist/esm/helpers.mjs +7 -3
  29. package/dist/esm/layout.mjs +35 -16
  30. package/dist/esm/main.mjs +21 -9
  31. package/dist/esm/objects/ClassComponent.mjs +8 -0
  32. package/dist/esm/objects/types.mjs +7 -0
  33. package/dist/esm/render.mjs +2 -2
  34. package/dist/esm/visitor.mjs +133 -25
  35. package/dist/types/BaseVisitor.d.ts +2 -5
  36. package/dist/types/SemanticTokenVisitor.d.ts +2 -2
  37. package/dist/types/antlr/CircuitScriptLexer.d.ts +29 -22
  38. package/dist/types/antlr/CircuitScriptParser.d.ts +121 -44
  39. package/dist/types/antlr/CircuitScriptVisitor.d.ts +12 -2
  40. package/dist/types/draw_symbols.d.ts +11 -6
  41. package/dist/types/execute.d.ts +6 -4
  42. package/dist/types/export.d.ts +27 -1
  43. package/dist/types/geometry.d.ts +12 -9
  44. package/dist/types/globals.d.ts +2 -3
  45. package/dist/types/layout.d.ts +5 -0
  46. package/dist/types/objects/ClassComponent.d.ts +5 -0
  47. package/dist/types/objects/Wire.d.ts +2 -1
  48. package/dist/types/objects/types.d.ts +6 -0
  49. package/dist/types/visitor.d.ts +7 -3
  50. package/libs/lib.cst +28 -10
  51. package/package.json +1 -1
@@ -24,30 +24,37 @@ export class CircuitScriptParser extends antlr.Parser {
24
24
  static Define = 22;
25
25
  static Import = 23;
26
26
  static If = 24;
27
- static Not = 25;
28
- static Frame = 26;
29
- static Equals = 27;
30
- static NotEquals = 28;
31
- static Addition = 29;
32
- static Minus = 30;
33
- static Divide = 31;
34
- static Multiply = 32;
35
- static OPEN_PAREN = 33;
36
- static CLOSE_PAREN = 34;
37
- static NOT_CONNECTED = 35;
38
- static BOOLEAN_VALUE = 36;
39
- static ID = 37;
40
- static INTEGER_VALUE = 38;
41
- static DECIMAL_VALUE = 39;
42
- static NUMERIC_VALUE = 40;
43
- static STRING_VALUE = 41;
44
- static PERCENTAGE_VALUE = 42;
45
- static ALPHA_NUMERIC = 43;
46
- static WS = 44;
47
- static NEWLINE = 45;
48
- static COMMENT = 46;
49
- static INDENT = 47;
50
- static DEDENT = 48;
27
+ static Else = 25;
28
+ static Not = 26;
29
+ static Frame = 27;
30
+ static Equals = 28;
31
+ static NotEquals = 29;
32
+ static GreaterThan = 30;
33
+ static GreatOrEqualThan = 31;
34
+ static LessThan = 32;
35
+ static LessOrEqualThan = 33;
36
+ static LogicalAnd = 34;
37
+ static LogicalOr = 35;
38
+ static Addition = 36;
39
+ static Minus = 37;
40
+ static Divide = 38;
41
+ static Multiply = 39;
42
+ static OPEN_PAREN = 40;
43
+ static CLOSE_PAREN = 41;
44
+ static NOT_CONNECTED = 42;
45
+ static BOOLEAN_VALUE = 43;
46
+ static ID = 44;
47
+ static INTEGER_VALUE = 45;
48
+ static DECIMAL_VALUE = 46;
49
+ static NUMERIC_VALUE = 47;
50
+ static STRING_VALUE = 48;
51
+ static PERCENTAGE_VALUE = 49;
52
+ static ALPHA_NUMERIC = 50;
53
+ static WS = 51;
54
+ static NEWLINE = 52;
55
+ static COMMENT = 53;
56
+ static INDENT = 54;
57
+ static DEDENT = 55;
51
58
  static RULE_script = 0;
52
59
  static RULE_expression = 1;
53
60
  static RULE_path_blocks = 2;
@@ -90,32 +97,38 @@ export class CircuitScriptParser extends antlr.Parser {
90
97
  static RULE_function_return_expr = 39;
91
98
  static RULE_create_component_expr = 40;
92
99
  static RULE_create_graphic_expr = 41;
93
- static RULE_sub_expr = 42;
94
- static RULE_property_expr = 43;
95
- static RULE_property_key_expr = 44;
96
- static RULE_property_value_expr = 45;
97
- static RULE_blank_expr = 46;
98
- static RULE_wire_atom_expr = 47;
99
- static RULE_wire_expr = 48;
100
- static RULE_point_expr = 49;
101
- static RULE_import_expr = 50;
102
- static RULE_frame_expr = 51;
100
+ static RULE_nested_properties_inner = 42;
101
+ static RULE_graphic_expr = 43;
102
+ static RULE_property_expr = 44;
103
+ static RULE_property_key_expr = 45;
104
+ static RULE_property_value_expr = 46;
105
+ static RULE_blank_expr = 47;
106
+ static RULE_wire_atom_expr = 48;
107
+ static RULE_wire_expr = 49;
108
+ static RULE_point_expr = 50;
109
+ static RULE_import_expr = 51;
110
+ static RULE_frame_expr = 52;
111
+ static RULE_if_expr = 53;
112
+ static RULE_if_inner_expr = 54;
113
+ static RULE_else_expr = 55;
103
114
  static literalNames = [
104
115
  null, "':'", "','", "'='", "'..'", "'.'", "'['", "']'", "'break'",
105
116
  "'branch'", "'create'", "'component'", "'graphic'", "'wire'", "'pin'",
106
117
  "'add'", "'at'", "'to'", "'point'", "'join'", "'parallel'", "'return'",
107
- "'def'", "'import'", "'if'", "'!'", "'frame'", "'=='", "'!='", "'+'",
108
- "'-'", "'/'", "'*'", "'('", "')'"
118
+ "'def'", "'import'", "'if'", "'else'", "'!'", "'frame'", "'=='",
119
+ "'!='", "'>'", "'>='", "'<'", "'<='", "'&&'", "'||'", "'+'", "'-'",
120
+ "'/'", "'*'", "'('", "')'"
109
121
  ];
110
122
  static symbolicNames = [
111
123
  null, null, null, null, null, null, null, null, "Break", "Branch",
112
124
  "Create", "Component", "Graphic", "Wire", "Pin", "Add", "At", "To",
113
125
  "Point", "Join", "Parallel", "Return", "Define", "Import", "If",
114
- "Not", "Frame", "Equals", "NotEquals", "Addition", "Minus", "Divide",
115
- "Multiply", "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE",
116
- "ID", "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE",
117
- "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT",
118
- "INDENT", "DEDENT"
126
+ "Else", "Not", "Frame", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
127
+ "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
128
+ "Minus", "Divide", "Multiply", "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED",
129
+ "BOOLEAN_VALUE", "ID", "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE",
130
+ "STRING_VALUE", "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE",
131
+ "COMMENT", "INDENT", "DEDENT"
119
132
  ];
120
133
  static ruleNames = [
121
134
  "script", "expression", "path_blocks", "path_block_inner", "property_set_expr2",
@@ -129,9 +142,10 @@ export class CircuitScriptParser extends antlr.Parser {
129
142
  "data_expr", "binary_operator", "unary_operator", "value_expr",
130
143
  "function_def_expr", "function_expr", "function_args_expr", "atom_expr",
131
144
  "trailer_expr", "function_call_expr", "net_namespace_expr", "function_return_expr",
132
- "create_component_expr", "create_graphic_expr", "sub_expr", "property_expr",
133
- "property_key_expr", "property_value_expr", "blank_expr", "wire_atom_expr",
134
- "wire_expr", "point_expr", "import_expr", "frame_expr",
145
+ "create_component_expr", "create_graphic_expr", "nested_properties_inner",
146
+ "graphic_expr", "property_expr", "property_key_expr", "property_value_expr",
147
+ "blank_expr", "wire_atom_expr", "wire_expr", "point_expr", "import_expr",
148
+ "frame_expr", "if_expr", "if_inner_expr", "else_expr",
135
149
  ];
136
150
  get grammarFileName() { return "CircuitScript.g4"; }
137
151
  get literalNames() { return CircuitScriptParser.literalNames; }
@@ -152,12 +166,12 @@ export class CircuitScriptParser extends antlr.Parser {
152
166
  try {
153
167
  this.enterOuterAlt(localContext, 1);
154
168
  {
155
- this.state = 106;
169
+ this.state = 114;
156
170
  this.errorHandler.sync(this);
157
171
  _la = this.tokenStream.LA(1);
158
172
  do {
159
173
  {
160
- this.state = 106;
174
+ this.state = 114;
161
175
  this.errorHandler.sync(this);
162
176
  switch (this.tokenStream.LA(1)) {
163
177
  case CircuitScriptParser.T__3:
@@ -172,18 +186,19 @@ export class CircuitScriptParser extends antlr.Parser {
172
186
  case CircuitScriptParser.Parallel:
173
187
  case CircuitScriptParser.Define:
174
188
  case CircuitScriptParser.Import:
189
+ case CircuitScriptParser.If:
175
190
  case CircuitScriptParser.Frame:
176
191
  case CircuitScriptParser.Addition:
177
192
  case CircuitScriptParser.Divide:
178
193
  case CircuitScriptParser.ID:
179
194
  {
180
- this.state = 104;
195
+ this.state = 112;
181
196
  this.expression();
182
197
  }
183
198
  break;
184
199
  case CircuitScriptParser.NEWLINE:
185
200
  {
186
- this.state = 105;
201
+ this.state = 113;
187
202
  this.match(CircuitScriptParser.NEWLINE);
188
203
  }
189
204
  break;
@@ -191,11 +206,11 @@ export class CircuitScriptParser extends antlr.Parser {
191
206
  throw new antlr.NoViableAltException(this);
192
207
  }
193
208
  }
194
- this.state = 108;
209
+ this.state = 116;
195
210
  this.errorHandler.sync(this);
196
211
  _la = this.tokenStream.LA(1);
197
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
198
- this.state = 110;
212
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
213
+ this.state = 118;
199
214
  this.match(CircuitScriptParser.EOF);
200
215
  }
201
216
  }
@@ -217,128 +232,135 @@ export class CircuitScriptParser extends antlr.Parser {
217
232
  let localContext = new ExpressionContext(this.context, this.state);
218
233
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
219
234
  try {
220
- this.state = 129;
235
+ this.state = 138;
221
236
  this.errorHandler.sync(this);
222
237
  switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context)) {
223
238
  case 1:
224
239
  this.enterOuterAlt(localContext, 1);
225
240
  {
226
- this.state = 112;
241
+ this.state = 120;
227
242
  this.add_component_expr();
228
243
  }
229
244
  break;
230
245
  case 2:
231
246
  this.enterOuterAlt(localContext, 2);
232
247
  {
233
- this.state = 113;
248
+ this.state = 121;
234
249
  this.to_component_expr();
235
250
  }
236
251
  break;
237
252
  case 3:
238
253
  this.enterOuterAlt(localContext, 3);
239
254
  {
240
- this.state = 114;
255
+ this.state = 122;
241
256
  this.at_component_expr();
242
257
  }
243
258
  break;
244
259
  case 4:
245
260
  this.enterOuterAlt(localContext, 4);
246
261
  {
247
- this.state = 115;
262
+ this.state = 123;
248
263
  this.assignment_expr();
249
264
  }
250
265
  break;
251
266
  case 5:
252
267
  this.enterOuterAlt(localContext, 5);
253
268
  {
254
- this.state = 116;
269
+ this.state = 124;
255
270
  this.property_set_expr();
256
271
  }
257
272
  break;
258
273
  case 6:
259
274
  this.enterOuterAlt(localContext, 6);
260
275
  {
261
- this.state = 117;
276
+ this.state = 125;
262
277
  this.property_set_expr2();
263
278
  }
264
279
  break;
265
280
  case 7:
266
281
  this.enterOuterAlt(localContext, 7);
267
282
  {
268
- this.state = 118;
283
+ this.state = 126;
269
284
  this.double_dot_property_set_expr();
270
285
  }
271
286
  break;
272
287
  case 8:
273
288
  this.enterOuterAlt(localContext, 8);
274
289
  {
275
- this.state = 119;
290
+ this.state = 127;
276
291
  this.break_keyword();
277
292
  }
278
293
  break;
279
294
  case 9:
280
295
  this.enterOuterAlt(localContext, 9);
281
296
  {
282
- this.state = 120;
297
+ this.state = 128;
283
298
  this.function_def_expr();
284
299
  }
285
300
  break;
286
301
  case 10:
287
302
  this.enterOuterAlt(localContext, 10);
288
303
  {
289
- this.state = 121;
304
+ this.state = 129;
290
305
  this.function_call_expr();
291
306
  }
292
307
  break;
293
308
  case 11:
294
309
  this.enterOuterAlt(localContext, 11);
295
310
  {
296
- this.state = 122;
311
+ this.state = 130;
297
312
  this.wire_expr();
298
313
  }
299
314
  break;
300
315
  case 12:
301
316
  this.enterOuterAlt(localContext, 12);
302
317
  {
303
- this.state = 123;
318
+ this.state = 131;
304
319
  this.import_expr();
305
320
  }
306
321
  break;
307
322
  case 13:
308
323
  this.enterOuterAlt(localContext, 13);
309
324
  {
310
- this.state = 124;
325
+ this.state = 132;
311
326
  this.frame_expr();
312
327
  }
313
328
  break;
314
329
  case 14:
315
330
  this.enterOuterAlt(localContext, 14);
316
331
  {
317
- this.state = 125;
332
+ this.state = 133;
318
333
  this.atom_expr();
319
334
  }
320
335
  break;
321
336
  case 15:
322
337
  this.enterOuterAlt(localContext, 15);
323
338
  {
324
- this.state = 126;
339
+ this.state = 134;
325
340
  this.at_block();
326
341
  }
327
342
  break;
328
343
  case 16:
329
344
  this.enterOuterAlt(localContext, 16);
330
345
  {
331
- this.state = 127;
346
+ this.state = 135;
332
347
  this.path_blocks();
333
348
  }
334
349
  break;
335
350
  case 17:
336
351
  this.enterOuterAlt(localContext, 17);
337
352
  {
338
- this.state = 128;
353
+ this.state = 136;
339
354
  this.point_expr();
340
355
  }
341
356
  break;
357
+ case 18:
358
+ this.enterOuterAlt(localContext, 18);
359
+ {
360
+ this.state = 137;
361
+ this.if_expr();
362
+ }
363
+ break;
342
364
  }
343
365
  }
344
366
  catch (re) {
@@ -362,7 +384,7 @@ export class CircuitScriptParser extends antlr.Parser {
362
384
  let alternative;
363
385
  this.enterOuterAlt(localContext, 1);
364
386
  {
365
- this.state = 132;
387
+ this.state = 141;
366
388
  this.errorHandler.sync(this);
367
389
  alternative = 1;
368
390
  do {
@@ -370,7 +392,7 @@ export class CircuitScriptParser extends antlr.Parser {
370
392
  case 1:
371
393
  {
372
394
  {
373
- this.state = 131;
395
+ this.state = 140;
374
396
  this.path_block_inner();
375
397
  }
376
398
  }
@@ -378,7 +400,7 @@ export class CircuitScriptParser extends antlr.Parser {
378
400
  default:
379
401
  throw new antlr.NoViableAltException(this);
380
402
  }
381
- this.state = 134;
403
+ this.state = 143;
382
404
  this.errorHandler.sync(this);
383
405
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context);
384
406
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -405,7 +427,7 @@ export class CircuitScriptParser extends antlr.Parser {
405
427
  try {
406
428
  this.enterOuterAlt(localContext, 1);
407
429
  {
408
- this.state = 136;
430
+ this.state = 145;
409
431
  _la = this.tokenStream.LA(1);
410
432
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1835520) !== 0))) {
411
433
  this.errorHandler.recoverInline(this);
@@ -414,23 +436,23 @@ export class CircuitScriptParser extends antlr.Parser {
414
436
  this.errorHandler.reportMatch(this);
415
437
  this.consume();
416
438
  }
417
- this.state = 137;
439
+ this.state = 146;
418
440
  this.match(CircuitScriptParser.T__0);
419
- this.state = 138;
441
+ this.state = 147;
420
442
  this.match(CircuitScriptParser.NEWLINE);
421
- this.state = 139;
443
+ this.state = 148;
422
444
  this.match(CircuitScriptParser.INDENT);
423
- this.state = 142;
445
+ this.state = 151;
424
446
  this.errorHandler.sync(this);
425
447
  _la = this.tokenStream.LA(1);
426
448
  do {
427
449
  {
428
- this.state = 142;
450
+ this.state = 151;
429
451
  this.errorHandler.sync(this);
430
452
  switch (this.tokenStream.LA(1)) {
431
453
  case CircuitScriptParser.NEWLINE:
432
454
  {
433
- this.state = 140;
455
+ this.state = 149;
434
456
  this.match(CircuitScriptParser.NEWLINE);
435
457
  }
436
458
  break;
@@ -446,12 +468,13 @@ export class CircuitScriptParser extends antlr.Parser {
446
468
  case CircuitScriptParser.Parallel:
447
469
  case CircuitScriptParser.Define:
448
470
  case CircuitScriptParser.Import:
471
+ case CircuitScriptParser.If:
449
472
  case CircuitScriptParser.Frame:
450
473
  case CircuitScriptParser.Addition:
451
474
  case CircuitScriptParser.Divide:
452
475
  case CircuitScriptParser.ID:
453
476
  {
454
- this.state = 141;
477
+ this.state = 150;
455
478
  this.expression();
456
479
  }
457
480
  break;
@@ -459,11 +482,11 @@ export class CircuitScriptParser extends antlr.Parser {
459
482
  throw new antlr.NoViableAltException(this);
460
483
  }
461
484
  }
462
- this.state = 144;
485
+ this.state = 153;
463
486
  this.errorHandler.sync(this);
464
487
  _la = this.tokenStream.LA(1);
465
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
466
- this.state = 146;
488
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
489
+ this.state = 155;
467
490
  this.match(CircuitScriptParser.DEDENT);
468
491
  }
469
492
  }
@@ -488,32 +511,32 @@ export class CircuitScriptParser extends antlr.Parser {
488
511
  try {
489
512
  this.enterOuterAlt(localContext, 1);
490
513
  {
491
- this.state = 148;
514
+ this.state = 157;
492
515
  this.atom_expr();
493
- this.state = 149;
516
+ this.state = 158;
494
517
  this.match(CircuitScriptParser.T__0);
495
- this.state = 150;
518
+ this.state = 159;
496
519
  this.match(CircuitScriptParser.NEWLINE);
497
- this.state = 151;
520
+ this.state = 160;
498
521
  this.match(CircuitScriptParser.INDENT);
499
- this.state = 154;
522
+ this.state = 163;
500
523
  this.errorHandler.sync(this);
501
524
  _la = this.tokenStream.LA(1);
502
525
  do {
503
526
  {
504
- this.state = 154;
527
+ this.state = 163;
505
528
  this.errorHandler.sync(this);
506
529
  switch (this.tokenStream.LA(1)) {
507
530
  case CircuitScriptParser.NEWLINE:
508
531
  {
509
- this.state = 152;
532
+ this.state = 161;
510
533
  this.match(CircuitScriptParser.NEWLINE);
511
534
  }
512
535
  break;
513
536
  case CircuitScriptParser.ID:
514
537
  case CircuitScriptParser.INTEGER_VALUE:
515
538
  {
516
- this.state = 153;
539
+ this.state = 162;
517
540
  this.assignment_expr2();
518
541
  }
519
542
  break;
@@ -521,11 +544,11 @@ export class CircuitScriptParser extends antlr.Parser {
521
544
  throw new antlr.NoViableAltException(this);
522
545
  }
523
546
  }
524
- this.state = 156;
547
+ this.state = 165;
525
548
  this.errorHandler.sync(this);
526
549
  _la = this.tokenStream.LA(1);
527
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 259) !== 0));
528
- this.state = 158;
550
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 259) !== 0));
551
+ this.state = 167;
529
552
  this.match(CircuitScriptParser.DEDENT);
530
553
  }
531
554
  }
@@ -550,18 +573,18 @@ export class CircuitScriptParser extends antlr.Parser {
550
573
  try {
551
574
  this.enterOuterAlt(localContext, 1);
552
575
  {
553
- this.state = 160;
576
+ this.state = 169;
554
577
  _la = this.tokenStream.LA(1);
555
- if (!(_la === 37 || _la === 38)) {
578
+ if (!(_la === 44 || _la === 45)) {
556
579
  this.errorHandler.recoverInline(this);
557
580
  }
558
581
  else {
559
582
  this.errorHandler.reportMatch(this);
560
583
  this.consume();
561
584
  }
562
- this.state = 161;
585
+ this.state = 170;
563
586
  this.match(CircuitScriptParser.T__0);
564
- this.state = 162;
587
+ this.state = 171;
565
588
  this.value_expr();
566
589
  }
567
590
  }
@@ -586,11 +609,11 @@ export class CircuitScriptParser extends antlr.Parser {
586
609
  try {
587
610
  this.enterOuterAlt(localContext, 1);
588
611
  {
589
- this.state = 164;
612
+ this.state = 173;
590
613
  this.match(CircuitScriptParser.Pin);
591
- this.state = 165;
614
+ this.state = 174;
592
615
  _la = this.tokenStream.LA(1);
593
- if (!(_la === 38 || _la === 41)) {
616
+ if (!(_la === 45 || _la === 48)) {
594
617
  this.errorHandler.recoverInline(this);
595
618
  }
596
619
  else {
@@ -619,11 +642,11 @@ export class CircuitScriptParser extends antlr.Parser {
619
642
  try {
620
643
  this.enterOuterAlt(localContext, 1);
621
644
  {
622
- this.state = 167;
645
+ this.state = 176;
623
646
  this.match(CircuitScriptParser.ID);
624
- this.state = 168;
647
+ this.state = 177;
625
648
  this.match(CircuitScriptParser.T__0);
626
- this.state = 171;
649
+ this.state = 180;
627
650
  this.errorHandler.sync(this);
628
651
  switch (this.tokenStream.LA(1)) {
629
652
  case CircuitScriptParser.T__5:
@@ -635,13 +658,13 @@ export class CircuitScriptParser extends antlr.Parser {
635
658
  case CircuitScriptParser.STRING_VALUE:
636
659
  case CircuitScriptParser.PERCENTAGE_VALUE:
637
660
  {
638
- this.state = 169;
661
+ this.state = 178;
639
662
  this.value_expr();
640
663
  }
641
664
  break;
642
665
  case CircuitScriptParser.ID:
643
666
  {
644
- this.state = 170;
667
+ this.state = 179;
645
668
  this.match(CircuitScriptParser.ID);
646
669
  }
647
670
  break;
@@ -672,44 +695,44 @@ export class CircuitScriptParser extends antlr.Parser {
672
695
  let alternative;
673
696
  this.enterOuterAlt(localContext, 1);
674
697
  {
675
- this.state = 175;
698
+ this.state = 184;
676
699
  this.errorHandler.sync(this);
677
700
  switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context)) {
678
701
  case 1:
679
702
  {
680
- this.state = 173;
703
+ this.state = 182;
681
704
  this.data_expr(0);
682
705
  }
683
706
  break;
684
707
  case 2:
685
708
  {
686
- this.state = 174;
709
+ this.state = 183;
687
710
  this.assignment_expr();
688
711
  }
689
712
  break;
690
713
  }
691
- this.state = 180;
714
+ this.state = 189;
692
715
  this.errorHandler.sync(this);
693
716
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
694
717
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
695
718
  if (alternative === 1) {
696
719
  {
697
720
  {
698
- this.state = 177;
721
+ this.state = 186;
699
722
  this.component_modifier_expr();
700
723
  }
701
724
  }
702
725
  }
703
- this.state = 182;
726
+ this.state = 191;
704
727
  this.errorHandler.sync(this);
705
728
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context);
706
729
  }
707
- this.state = 184;
730
+ this.state = 193;
708
731
  this.errorHandler.sync(this);
709
732
  _la = this.tokenStream.LA(1);
710
733
  if (_la === 14) {
711
734
  {
712
- this.state = 183;
735
+ this.state = 192;
713
736
  this.pin_select_expr();
714
737
  }
715
738
  }
@@ -735,9 +758,9 @@ export class CircuitScriptParser extends antlr.Parser {
735
758
  try {
736
759
  this.enterOuterAlt(localContext, 1);
737
760
  {
738
- this.state = 186;
761
+ this.state = 195;
739
762
  this.match(CircuitScriptParser.Add);
740
- this.state = 187;
763
+ this.state = 196;
741
764
  this.data_expr_with_assignment();
742
765
  }
743
766
  }
@@ -759,7 +782,7 @@ export class CircuitScriptParser extends antlr.Parser {
759
782
  let localContext = new Component_select_exprContext(this.context, this.state);
760
783
  this.enterRule(localContext, 20, CircuitScriptParser.RULE_component_select_expr);
761
784
  try {
762
- this.state = 191;
785
+ this.state = 200;
763
786
  this.errorHandler.sync(this);
764
787
  switch (this.tokenStream.LA(1)) {
765
788
  case CircuitScriptParser.T__5:
@@ -778,14 +801,14 @@ export class CircuitScriptParser extends antlr.Parser {
778
801
  case CircuitScriptParser.PERCENTAGE_VALUE:
779
802
  this.enterOuterAlt(localContext, 1);
780
803
  {
781
- this.state = 189;
804
+ this.state = 198;
782
805
  this.data_expr_with_assignment();
783
806
  }
784
807
  break;
785
808
  case CircuitScriptParser.Pin:
786
809
  this.enterOuterAlt(localContext, 2);
787
810
  {
788
- this.state = 190;
811
+ this.state = 199;
789
812
  this.pin_select_expr();
790
813
  }
791
814
  break;
@@ -814,9 +837,9 @@ export class CircuitScriptParser extends antlr.Parser {
814
837
  try {
815
838
  this.enterOuterAlt(localContext, 1);
816
839
  {
817
- this.state = 193;
840
+ this.state = 202;
818
841
  _la = this.tokenStream.LA(1);
819
- if (!(_la === 38 || _la === 41)) {
842
+ if (!(_la === 45 || _la === 48)) {
820
843
  this.errorHandler.recoverInline(this);
821
844
  }
822
845
  else {
@@ -845,9 +868,9 @@ export class CircuitScriptParser extends antlr.Parser {
845
868
  try {
846
869
  this.enterOuterAlt(localContext, 1);
847
870
  {
848
- this.state = 195;
871
+ this.state = 204;
849
872
  this.match(CircuitScriptParser.At);
850
- this.state = 198;
873
+ this.state = 207;
851
874
  this.errorHandler.sync(this);
852
875
  switch (this.tokenStream.LA(1)) {
853
876
  case CircuitScriptParser.T__5:
@@ -866,13 +889,13 @@ export class CircuitScriptParser extends antlr.Parser {
866
889
  case CircuitScriptParser.STRING_VALUE:
867
890
  case CircuitScriptParser.PERCENTAGE_VALUE:
868
891
  {
869
- this.state = 196;
892
+ this.state = 205;
870
893
  this.component_select_expr();
871
894
  }
872
895
  break;
873
896
  case CircuitScriptParser.Point:
874
897
  {
875
- this.state = 197;
898
+ this.state = 206;
876
899
  this.match(CircuitScriptParser.Point);
877
900
  }
878
901
  break;
@@ -902,9 +925,9 @@ export class CircuitScriptParser extends antlr.Parser {
902
925
  try {
903
926
  this.enterOuterAlt(localContext, 1);
904
927
  {
905
- this.state = 200;
928
+ this.state = 209;
906
929
  this.match(CircuitScriptParser.To);
907
- this.state = 210;
930
+ this.state = 219;
908
931
  this.errorHandler.sync(this);
909
932
  switch (this.tokenStream.LA(1)) {
910
933
  case CircuitScriptParser.T__5:
@@ -924,21 +947,21 @@ export class CircuitScriptParser extends antlr.Parser {
924
947
  case CircuitScriptParser.PERCENTAGE_VALUE:
925
948
  {
926
949
  {
927
- this.state = 201;
950
+ this.state = 210;
928
951
  this.component_select_expr();
929
- this.state = 206;
952
+ this.state = 215;
930
953
  this.errorHandler.sync(this);
931
954
  _la = this.tokenStream.LA(1);
932
955
  while (_la === 2) {
933
956
  {
934
957
  {
935
- this.state = 202;
958
+ this.state = 211;
936
959
  this.match(CircuitScriptParser.T__1);
937
- this.state = 203;
960
+ this.state = 212;
938
961
  this.component_select_expr();
939
962
  }
940
963
  }
941
- this.state = 208;
964
+ this.state = 217;
942
965
  this.errorHandler.sync(this);
943
966
  _la = this.tokenStream.LA(1);
944
967
  }
@@ -947,7 +970,7 @@ export class CircuitScriptParser extends antlr.Parser {
947
970
  break;
948
971
  case CircuitScriptParser.Point:
949
972
  {
950
- this.state = 209;
973
+ this.state = 218;
951
974
  this.match(CircuitScriptParser.Point);
952
975
  }
953
976
  break;
@@ -977,54 +1000,54 @@ export class CircuitScriptParser extends antlr.Parser {
977
1000
  try {
978
1001
  this.enterOuterAlt(localContext, 1);
979
1002
  {
980
- this.state = 212;
1003
+ this.state = 221;
981
1004
  this.match(CircuitScriptParser.At);
982
- this.state = 213;
1005
+ this.state = 222;
983
1006
  this.component_select_expr();
984
- this.state = 214;
1007
+ this.state = 223;
985
1008
  this.match(CircuitScriptParser.To);
986
- this.state = 215;
1009
+ this.state = 224;
987
1010
  this.component_select_expr();
988
- this.state = 220;
1011
+ this.state = 229;
989
1012
  this.errorHandler.sync(this);
990
1013
  _la = this.tokenStream.LA(1);
991
1014
  while (_la === 2) {
992
1015
  {
993
1016
  {
994
- this.state = 216;
1017
+ this.state = 225;
995
1018
  this.match(CircuitScriptParser.T__1);
996
- this.state = 217;
1019
+ this.state = 226;
997
1020
  this.component_select_expr();
998
1021
  }
999
1022
  }
1000
- this.state = 222;
1023
+ this.state = 231;
1001
1024
  this.errorHandler.sync(this);
1002
1025
  _la = this.tokenStream.LA(1);
1003
1026
  }
1004
- this.state = 223;
1027
+ this.state = 232;
1005
1028
  this.match(CircuitScriptParser.T__0);
1006
- this.state = 224;
1029
+ this.state = 233;
1007
1030
  this.match(CircuitScriptParser.NEWLINE);
1008
- this.state = 225;
1031
+ this.state = 234;
1009
1032
  this.match(CircuitScriptParser.INDENT);
1010
- this.state = 228;
1033
+ this.state = 237;
1011
1034
  this.errorHandler.sync(this);
1012
1035
  _la = this.tokenStream.LA(1);
1013
1036
  do {
1014
1037
  {
1015
- this.state = 228;
1038
+ this.state = 237;
1016
1039
  this.errorHandler.sync(this);
1017
1040
  switch (this.tokenStream.LA(1)) {
1018
1041
  case CircuitScriptParser.NEWLINE:
1019
1042
  {
1020
- this.state = 226;
1043
+ this.state = 235;
1021
1044
  this.match(CircuitScriptParser.NEWLINE);
1022
1045
  }
1023
1046
  break;
1024
1047
  case CircuitScriptParser.INTEGER_VALUE:
1025
1048
  case CircuitScriptParser.STRING_VALUE:
1026
1049
  {
1027
- this.state = 227;
1050
+ this.state = 236;
1028
1051
  this.at_to_multiple_line_expr();
1029
1052
  }
1030
1053
  break;
@@ -1032,11 +1055,11 @@ export class CircuitScriptParser extends antlr.Parser {
1032
1055
  throw new antlr.NoViableAltException(this);
1033
1056
  }
1034
1057
  }
1035
- this.state = 230;
1058
+ this.state = 239;
1036
1059
  this.errorHandler.sync(this);
1037
1060
  _la = this.tokenStream.LA(1);
1038
- } while (((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 137) !== 0));
1039
- this.state = 232;
1061
+ } while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 137) !== 0));
1062
+ this.state = 241;
1040
1063
  this.match(CircuitScriptParser.DEDENT);
1041
1064
  }
1042
1065
  }
@@ -1061,25 +1084,25 @@ export class CircuitScriptParser extends antlr.Parser {
1061
1084
  try {
1062
1085
  this.enterOuterAlt(localContext, 1);
1063
1086
  {
1064
- this.state = 234;
1087
+ this.state = 243;
1065
1088
  this.pin_select_expr2();
1066
- this.state = 235;
1089
+ this.state = 244;
1067
1090
  this.match(CircuitScriptParser.T__0);
1068
- this.state = 236;
1091
+ this.state = 245;
1069
1092
  this.at_to_multiple_line_expr_to_pin();
1070
- this.state = 241;
1093
+ this.state = 250;
1071
1094
  this.errorHandler.sync(this);
1072
1095
  _la = this.tokenStream.LA(1);
1073
1096
  while (_la === 2) {
1074
1097
  {
1075
1098
  {
1076
- this.state = 237;
1099
+ this.state = 246;
1077
1100
  this.match(CircuitScriptParser.T__1);
1078
- this.state = 238;
1101
+ this.state = 247;
1079
1102
  this.at_to_multiple_line_expr_to_pin();
1080
1103
  }
1081
1104
  }
1082
- this.state = 243;
1105
+ this.state = 252;
1083
1106
  this.errorHandler.sync(this);
1084
1107
  _la = this.tokenStream.LA(1);
1085
1108
  }
@@ -1106,9 +1129,9 @@ export class CircuitScriptParser extends antlr.Parser {
1106
1129
  try {
1107
1130
  this.enterOuterAlt(localContext, 1);
1108
1131
  {
1109
- this.state = 244;
1132
+ this.state = 253;
1110
1133
  _la = this.tokenStream.LA(1);
1111
- if (!(_la === 35 || _la === 38)) {
1134
+ if (!(_la === 42 || _la === 45)) {
1112
1135
  this.errorHandler.recoverInline(this);
1113
1136
  }
1114
1137
  else {
@@ -1138,25 +1161,25 @@ export class CircuitScriptParser extends antlr.Parser {
1138
1161
  try {
1139
1162
  this.enterOuterAlt(localContext, 1);
1140
1163
  {
1141
- this.state = 246;
1164
+ this.state = 255;
1142
1165
  this.at_component_expr();
1143
- this.state = 247;
1166
+ this.state = 256;
1144
1167
  this.match(CircuitScriptParser.T__0);
1145
- this.state = 248;
1168
+ this.state = 257;
1146
1169
  this.match(CircuitScriptParser.NEWLINE);
1147
- this.state = 249;
1170
+ this.state = 258;
1148
1171
  this.match(CircuitScriptParser.INDENT);
1149
- this.state = 252;
1172
+ this.state = 261;
1150
1173
  this.errorHandler.sync(this);
1151
1174
  _la = this.tokenStream.LA(1);
1152
1175
  do {
1153
1176
  {
1154
- this.state = 252;
1177
+ this.state = 261;
1155
1178
  this.errorHandler.sync(this);
1156
1179
  switch (this.tokenStream.LA(1)) {
1157
1180
  case CircuitScriptParser.NEWLINE:
1158
1181
  {
1159
- this.state = 250;
1182
+ this.state = 259;
1160
1183
  this.match(CircuitScriptParser.NEWLINE);
1161
1184
  }
1162
1185
  break;
@@ -1172,6 +1195,7 @@ export class CircuitScriptParser extends antlr.Parser {
1172
1195
  case CircuitScriptParser.Parallel:
1173
1196
  case CircuitScriptParser.Define:
1174
1197
  case CircuitScriptParser.Import:
1198
+ case CircuitScriptParser.If:
1175
1199
  case CircuitScriptParser.Frame:
1176
1200
  case CircuitScriptParser.Addition:
1177
1201
  case CircuitScriptParser.Divide:
@@ -1179,7 +1203,7 @@ export class CircuitScriptParser extends antlr.Parser {
1179
1203
  case CircuitScriptParser.INTEGER_VALUE:
1180
1204
  case CircuitScriptParser.STRING_VALUE:
1181
1205
  {
1182
- this.state = 251;
1206
+ this.state = 260;
1183
1207
  this.at_block_expressions();
1184
1208
  }
1185
1209
  break;
@@ -1187,11 +1211,11 @@ export class CircuitScriptParser extends antlr.Parser {
1187
1211
  throw new antlr.NoViableAltException(this);
1188
1212
  }
1189
1213
  }
1190
- this.state = 254;
1214
+ this.state = 263;
1191
1215
  this.errorHandler.sync(this);
1192
1216
  _la = this.tokenStream.LA(1);
1193
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
1194
- this.state = 256;
1217
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 70405) !== 0));
1218
+ this.state = 265;
1195
1219
  this.match(CircuitScriptParser.DEDENT);
1196
1220
  }
1197
1221
  }
@@ -1213,7 +1237,7 @@ export class CircuitScriptParser extends antlr.Parser {
1213
1237
  let localContext = new At_block_expressionsContext(this.context, this.state);
1214
1238
  this.enterRule(localContext, 36, CircuitScriptParser.RULE_at_block_expressions);
1215
1239
  try {
1216
- this.state = 260;
1240
+ this.state = 269;
1217
1241
  this.errorHandler.sync(this);
1218
1242
  switch (this.tokenStream.LA(1)) {
1219
1243
  case CircuitScriptParser.T__3:
@@ -1228,13 +1252,14 @@ export class CircuitScriptParser extends antlr.Parser {
1228
1252
  case CircuitScriptParser.Parallel:
1229
1253
  case CircuitScriptParser.Define:
1230
1254
  case CircuitScriptParser.Import:
1255
+ case CircuitScriptParser.If:
1231
1256
  case CircuitScriptParser.Frame:
1232
1257
  case CircuitScriptParser.Addition:
1233
1258
  case CircuitScriptParser.Divide:
1234
1259
  case CircuitScriptParser.ID:
1235
1260
  this.enterOuterAlt(localContext, 1);
1236
1261
  {
1237
- this.state = 258;
1262
+ this.state = 267;
1238
1263
  this.expression();
1239
1264
  }
1240
1265
  break;
@@ -1242,7 +1267,7 @@ export class CircuitScriptParser extends antlr.Parser {
1242
1267
  case CircuitScriptParser.STRING_VALUE:
1243
1268
  this.enterOuterAlt(localContext, 2);
1244
1269
  {
1245
- this.state = 259;
1270
+ this.state = 268;
1246
1271
  this.at_block_pin_expr();
1247
1272
  }
1248
1273
  break;
@@ -1270,11 +1295,11 @@ export class CircuitScriptParser extends antlr.Parser {
1270
1295
  try {
1271
1296
  this.enterOuterAlt(localContext, 1);
1272
1297
  {
1273
- this.state = 262;
1298
+ this.state = 271;
1274
1299
  this.pin_select_expr2();
1275
- this.state = 263;
1300
+ this.state = 272;
1276
1301
  this.match(CircuitScriptParser.T__0);
1277
- this.state = 266;
1302
+ this.state = 275;
1278
1303
  this.errorHandler.sync(this);
1279
1304
  switch (this.tokenStream.LA(1)) {
1280
1305
  case CircuitScriptParser.T__3:
@@ -1289,19 +1314,20 @@ export class CircuitScriptParser extends antlr.Parser {
1289
1314
  case CircuitScriptParser.Parallel:
1290
1315
  case CircuitScriptParser.Define:
1291
1316
  case CircuitScriptParser.Import:
1317
+ case CircuitScriptParser.If:
1292
1318
  case CircuitScriptParser.Frame:
1293
1319
  case CircuitScriptParser.Addition:
1294
1320
  case CircuitScriptParser.Divide:
1295
1321
  case CircuitScriptParser.NOT_CONNECTED:
1296
1322
  case CircuitScriptParser.ID:
1297
1323
  {
1298
- this.state = 264;
1324
+ this.state = 273;
1299
1325
  this.at_block_pin_expression_simple();
1300
1326
  }
1301
1327
  break;
1302
1328
  case CircuitScriptParser.NEWLINE:
1303
1329
  {
1304
- this.state = 265;
1330
+ this.state = 274;
1305
1331
  this.at_block_pin_expression_complex();
1306
1332
  }
1307
1333
  break;
@@ -1330,7 +1356,7 @@ export class CircuitScriptParser extends antlr.Parser {
1330
1356
  try {
1331
1357
  this.enterOuterAlt(localContext, 1);
1332
1358
  {
1333
- this.state = 270;
1359
+ this.state = 279;
1334
1360
  this.errorHandler.sync(this);
1335
1361
  switch (this.tokenStream.LA(1)) {
1336
1362
  case CircuitScriptParser.T__3:
@@ -1345,18 +1371,19 @@ export class CircuitScriptParser extends antlr.Parser {
1345
1371
  case CircuitScriptParser.Parallel:
1346
1372
  case CircuitScriptParser.Define:
1347
1373
  case CircuitScriptParser.Import:
1374
+ case CircuitScriptParser.If:
1348
1375
  case CircuitScriptParser.Frame:
1349
1376
  case CircuitScriptParser.Addition:
1350
1377
  case CircuitScriptParser.Divide:
1351
1378
  case CircuitScriptParser.ID:
1352
1379
  {
1353
- this.state = 268;
1380
+ this.state = 277;
1354
1381
  this.expression();
1355
1382
  }
1356
1383
  break;
1357
1384
  case CircuitScriptParser.NOT_CONNECTED:
1358
1385
  {
1359
- this.state = 269;
1386
+ this.state = 278;
1360
1387
  this.match(CircuitScriptParser.NOT_CONNECTED);
1361
1388
  }
1362
1389
  break;
@@ -1386,21 +1413,21 @@ export class CircuitScriptParser extends antlr.Parser {
1386
1413
  try {
1387
1414
  this.enterOuterAlt(localContext, 1);
1388
1415
  {
1389
- this.state = 272;
1416
+ this.state = 281;
1390
1417
  this.match(CircuitScriptParser.NEWLINE);
1391
- this.state = 273;
1418
+ this.state = 282;
1392
1419
  this.match(CircuitScriptParser.INDENT);
1393
- this.state = 276;
1420
+ this.state = 285;
1394
1421
  this.errorHandler.sync(this);
1395
1422
  _la = this.tokenStream.LA(1);
1396
1423
  do {
1397
1424
  {
1398
- this.state = 276;
1425
+ this.state = 285;
1399
1426
  this.errorHandler.sync(this);
1400
1427
  switch (this.tokenStream.LA(1)) {
1401
1428
  case CircuitScriptParser.NEWLINE:
1402
1429
  {
1403
- this.state = 274;
1430
+ this.state = 283;
1404
1431
  this.match(CircuitScriptParser.NEWLINE);
1405
1432
  }
1406
1433
  break;
@@ -1416,12 +1443,13 @@ export class CircuitScriptParser extends antlr.Parser {
1416
1443
  case CircuitScriptParser.Parallel:
1417
1444
  case CircuitScriptParser.Define:
1418
1445
  case CircuitScriptParser.Import:
1446
+ case CircuitScriptParser.If:
1419
1447
  case CircuitScriptParser.Frame:
1420
1448
  case CircuitScriptParser.Addition:
1421
1449
  case CircuitScriptParser.Divide:
1422
1450
  case CircuitScriptParser.ID:
1423
1451
  {
1424
- this.state = 275;
1452
+ this.state = 284;
1425
1453
  this.expression();
1426
1454
  }
1427
1455
  break;
@@ -1429,11 +1457,11 @@ export class CircuitScriptParser extends antlr.Parser {
1429
1457
  throw new antlr.NoViableAltException(this);
1430
1458
  }
1431
1459
  }
1432
- this.state = 278;
1460
+ this.state = 287;
1433
1461
  this.errorHandler.sync(this);
1434
1462
  _la = this.tokenStream.LA(1);
1435
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
1436
- this.state = 280;
1463
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
1464
+ this.state = 289;
1437
1465
  this.match(CircuitScriptParser.DEDENT);
1438
1466
  }
1439
1467
  }
@@ -1457,7 +1485,7 @@ export class CircuitScriptParser extends antlr.Parser {
1457
1485
  try {
1458
1486
  this.enterOuterAlt(localContext, 1);
1459
1487
  {
1460
- this.state = 282;
1488
+ this.state = 291;
1461
1489
  this.match(CircuitScriptParser.Break);
1462
1490
  }
1463
1491
  }
@@ -1481,11 +1509,11 @@ export class CircuitScriptParser extends antlr.Parser {
1481
1509
  try {
1482
1510
  this.enterOuterAlt(localContext, 1);
1483
1511
  {
1484
- this.state = 284;
1512
+ this.state = 293;
1485
1513
  this.atom_expr();
1486
- this.state = 285;
1514
+ this.state = 294;
1487
1515
  this.match(CircuitScriptParser.T__2);
1488
- this.state = 286;
1516
+ this.state = 295;
1489
1517
  this.data_expr(0);
1490
1518
  }
1491
1519
  }
@@ -1509,11 +1537,11 @@ export class CircuitScriptParser extends antlr.Parser {
1509
1537
  try {
1510
1538
  this.enterOuterAlt(localContext, 1);
1511
1539
  {
1512
- this.state = 288;
1540
+ this.state = 297;
1513
1541
  this.match(CircuitScriptParser.ID);
1514
- this.state = 289;
1542
+ this.state = 298;
1515
1543
  this.match(CircuitScriptParser.T__2);
1516
- this.state = 290;
1544
+ this.state = 299;
1517
1545
  this.data_expr(0);
1518
1546
  }
1519
1547
  }
@@ -1537,46 +1565,46 @@ export class CircuitScriptParser extends antlr.Parser {
1537
1565
  let _la;
1538
1566
  try {
1539
1567
  let alternative;
1540
- this.state = 315;
1568
+ this.state = 324;
1541
1569
  this.errorHandler.sync(this);
1542
1570
  switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context)) {
1543
1571
  case 1:
1544
1572
  this.enterOuterAlt(localContext, 1);
1545
1573
  {
1546
1574
  {
1547
- this.state = 292;
1575
+ this.state = 301;
1548
1576
  this.data_expr(0);
1549
- this.state = 297;
1577
+ this.state = 306;
1550
1578
  this.errorHandler.sync(this);
1551
1579
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context);
1552
1580
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1553
1581
  if (alternative === 1) {
1554
1582
  {
1555
1583
  {
1556
- this.state = 293;
1584
+ this.state = 302;
1557
1585
  this.match(CircuitScriptParser.T__1);
1558
- this.state = 294;
1586
+ this.state = 303;
1559
1587
  this.data_expr(0);
1560
1588
  }
1561
1589
  }
1562
1590
  }
1563
- this.state = 299;
1591
+ this.state = 308;
1564
1592
  this.errorHandler.sync(this);
1565
1593
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context);
1566
1594
  }
1567
- this.state = 304;
1595
+ this.state = 313;
1568
1596
  this.errorHandler.sync(this);
1569
1597
  _la = this.tokenStream.LA(1);
1570
1598
  while (_la === 2) {
1571
1599
  {
1572
1600
  {
1573
- this.state = 300;
1601
+ this.state = 309;
1574
1602
  this.match(CircuitScriptParser.T__1);
1575
- this.state = 301;
1603
+ this.state = 310;
1576
1604
  this.keyword_assignment_expr();
1577
1605
  }
1578
1606
  }
1579
- this.state = 306;
1607
+ this.state = 315;
1580
1608
  this.errorHandler.sync(this);
1581
1609
  _la = this.tokenStream.LA(1);
1582
1610
  }
@@ -1587,21 +1615,21 @@ export class CircuitScriptParser extends antlr.Parser {
1587
1615
  this.enterOuterAlt(localContext, 2);
1588
1616
  {
1589
1617
  {
1590
- this.state = 307;
1618
+ this.state = 316;
1591
1619
  this.keyword_assignment_expr();
1592
- this.state = 312;
1620
+ this.state = 321;
1593
1621
  this.errorHandler.sync(this);
1594
1622
  _la = this.tokenStream.LA(1);
1595
1623
  while (_la === 2) {
1596
1624
  {
1597
1625
  {
1598
- this.state = 308;
1626
+ this.state = 317;
1599
1627
  this.match(CircuitScriptParser.T__1);
1600
- this.state = 309;
1628
+ this.state = 318;
1601
1629
  this.keyword_assignment_expr();
1602
1630
  }
1603
1631
  }
1604
- this.state = 314;
1632
+ this.state = 323;
1605
1633
  this.errorHandler.sync(this);
1606
1634
  _la = this.tokenStream.LA(1);
1607
1635
  }
@@ -1630,11 +1658,11 @@ export class CircuitScriptParser extends antlr.Parser {
1630
1658
  try {
1631
1659
  this.enterOuterAlt(localContext, 1);
1632
1660
  {
1633
- this.state = 317;
1661
+ this.state = 326;
1634
1662
  this.atom_expr();
1635
- this.state = 318;
1663
+ this.state = 327;
1636
1664
  this.match(CircuitScriptParser.T__2);
1637
- this.state = 319;
1665
+ this.state = 328;
1638
1666
  this.data_expr(0);
1639
1667
  }
1640
1668
  }
@@ -1658,13 +1686,13 @@ export class CircuitScriptParser extends antlr.Parser {
1658
1686
  try {
1659
1687
  this.enterOuterAlt(localContext, 1);
1660
1688
  {
1661
- this.state = 321;
1689
+ this.state = 330;
1662
1690
  this.match(CircuitScriptParser.T__3);
1663
- this.state = 322;
1691
+ this.state = 331;
1664
1692
  this.match(CircuitScriptParser.ID);
1665
- this.state = 323;
1693
+ this.state = 332;
1666
1694
  this.match(CircuitScriptParser.T__2);
1667
- this.state = 324;
1695
+ this.state = 333;
1668
1696
  this.data_expr(0);
1669
1697
  }
1670
1698
  }
@@ -1697,7 +1725,7 @@ export class CircuitScriptParser extends antlr.Parser {
1697
1725
  let alternative;
1698
1726
  this.enterOuterAlt(localContext, 1);
1699
1727
  {
1700
- this.state = 341;
1728
+ this.state = 350;
1701
1729
  this.errorHandler.sync(this);
1702
1730
  switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1703
1731
  case 1:
@@ -1705,11 +1733,11 @@ export class CircuitScriptParser extends antlr.Parser {
1705
1733
  localContext = new RoundedBracketsExprContext(localContext);
1706
1734
  this.context = localContext;
1707
1735
  previousContext = localContext;
1708
- this.state = 327;
1736
+ this.state = 336;
1709
1737
  this.match(CircuitScriptParser.OPEN_PAREN);
1710
- this.state = 328;
1738
+ this.state = 337;
1711
1739
  this.data_expr(0);
1712
- this.state = 329;
1740
+ this.state = 338;
1713
1741
  this.match(CircuitScriptParser.CLOSE_PAREN);
1714
1742
  }
1715
1743
  break;
@@ -1718,7 +1746,7 @@ export class CircuitScriptParser extends antlr.Parser {
1718
1746
  localContext = new ValueAtomExprContext(localContext);
1719
1747
  this.context = localContext;
1720
1748
  previousContext = localContext;
1721
- this.state = 333;
1749
+ this.state = 342;
1722
1750
  this.errorHandler.sync(this);
1723
1751
  switch (this.tokenStream.LA(1)) {
1724
1752
  case CircuitScriptParser.T__5:
@@ -1730,13 +1758,13 @@ export class CircuitScriptParser extends antlr.Parser {
1730
1758
  case CircuitScriptParser.STRING_VALUE:
1731
1759
  case CircuitScriptParser.PERCENTAGE_VALUE:
1732
1760
  {
1733
- this.state = 331;
1761
+ this.state = 340;
1734
1762
  this.value_expr();
1735
1763
  }
1736
1764
  break;
1737
1765
  case CircuitScriptParser.ID:
1738
1766
  {
1739
- this.state = 332;
1767
+ this.state = 341;
1740
1768
  this.atom_expr();
1741
1769
  }
1742
1770
  break;
@@ -1750,10 +1778,10 @@ export class CircuitScriptParser extends antlr.Parser {
1750
1778
  localContext = new UnaryOperatorExprContext(localContext);
1751
1779
  this.context = localContext;
1752
1780
  previousContext = localContext;
1753
- this.state = 335;
1781
+ this.state = 344;
1754
1782
  this.unary_operator();
1755
- this.state = 336;
1756
- this.data_expr(7);
1783
+ this.state = 345;
1784
+ this.data_expr(8);
1757
1785
  }
1758
1786
  break;
1759
1787
  case 4:
@@ -1761,7 +1789,7 @@ export class CircuitScriptParser extends antlr.Parser {
1761
1789
  localContext = new DataExprContext(localContext);
1762
1790
  this.context = localContext;
1763
1791
  previousContext = localContext;
1764
- this.state = 338;
1792
+ this.state = 347;
1765
1793
  this.create_component_expr();
1766
1794
  }
1767
1795
  break;
@@ -1770,7 +1798,7 @@ export class CircuitScriptParser extends antlr.Parser {
1770
1798
  localContext = new DataExprContext(localContext);
1771
1799
  this.context = localContext;
1772
1800
  previousContext = localContext;
1773
- this.state = 339;
1801
+ this.state = 348;
1774
1802
  this.create_graphic_expr();
1775
1803
  }
1776
1804
  break;
@@ -1779,13 +1807,13 @@ export class CircuitScriptParser extends antlr.Parser {
1779
1807
  localContext = new FunctionCallExprContext(localContext);
1780
1808
  this.context = localContext;
1781
1809
  previousContext = localContext;
1782
- this.state = 340;
1810
+ this.state = 349;
1783
1811
  this.function_call_expr();
1784
1812
  }
1785
1813
  break;
1786
1814
  }
1787
1815
  this.context.stop = this.tokenStream.LT(-1);
1788
- this.state = 355;
1816
+ this.state = 367;
1789
1817
  this.errorHandler.sync(this);
1790
1818
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context);
1791
1819
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1795,69 +1823,90 @@ export class CircuitScriptParser extends antlr.Parser {
1795
1823
  }
1796
1824
  previousContext = localContext;
1797
1825
  {
1798
- this.state = 353;
1826
+ this.state = 365;
1799
1827
  this.errorHandler.sync(this);
1800
1828
  switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context)) {
1801
1829
  case 1:
1802
1830
  {
1803
1831
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1804
1832
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1805
- this.state = 343;
1806
- if (!(this.precpred(this.context, 6))) {
1807
- throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1833
+ this.state = 352;
1834
+ if (!(this.precpred(this.context, 7))) {
1835
+ throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1808
1836
  }
1809
- this.state = 344;
1837
+ this.state = 353;
1810
1838
  _la = this.tokenStream.LA(1);
1811
- if (!(_la === 31 || _la === 32)) {
1839
+ if (!(_la === 38 || _la === 39)) {
1812
1840
  this.errorHandler.recoverInline(this);
1813
1841
  }
1814
1842
  else {
1815
1843
  this.errorHandler.reportMatch(this);
1816
1844
  this.consume();
1817
1845
  }
1818
- this.state = 345;
1819
- this.data_expr(7);
1846
+ this.state = 354;
1847
+ this.data_expr(8);
1820
1848
  }
1821
1849
  break;
1822
1850
  case 2:
1823
1851
  {
1824
1852
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1825
1853
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1826
- this.state = 346;
1827
- if (!(this.precpred(this.context, 5))) {
1828
- throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1854
+ this.state = 355;
1855
+ if (!(this.precpred(this.context, 6))) {
1856
+ throw this.createFailedPredicateException("this.precpred(this.context, 6)");
1829
1857
  }
1830
- this.state = 347;
1858
+ this.state = 356;
1831
1859
  _la = this.tokenStream.LA(1);
1832
- if (!(_la === 29 || _la === 30)) {
1860
+ if (!(_la === 36 || _la === 37)) {
1833
1861
  this.errorHandler.recoverInline(this);
1834
1862
  }
1835
1863
  else {
1836
1864
  this.errorHandler.reportMatch(this);
1837
1865
  this.consume();
1838
1866
  }
1839
- this.state = 348;
1840
- this.data_expr(6);
1867
+ this.state = 357;
1868
+ this.data_expr(7);
1841
1869
  }
1842
1870
  break;
1843
1871
  case 3:
1844
1872
  {
1845
1873
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1846
1874
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1847
- this.state = 349;
1875
+ this.state = 358;
1876
+ if (!(this.precpred(this.context, 5))) {
1877
+ throw this.createFailedPredicateException("this.precpred(this.context, 5)");
1878
+ }
1879
+ this.state = 359;
1880
+ this.binary_operator();
1881
+ this.state = 360;
1882
+ this.data_expr(6);
1883
+ }
1884
+ break;
1885
+ case 4:
1886
+ {
1887
+ localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1888
+ this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1889
+ this.state = 362;
1848
1890
  if (!(this.precpred(this.context, 4))) {
1849
1891
  throw this.createFailedPredicateException("this.precpred(this.context, 4)");
1850
1892
  }
1851
- this.state = 350;
1852
- this.binary_operator();
1853
- this.state = 351;
1893
+ this.state = 363;
1894
+ _la = this.tokenStream.LA(1);
1895
+ if (!(_la === 34 || _la === 35)) {
1896
+ this.errorHandler.recoverInline(this);
1897
+ }
1898
+ else {
1899
+ this.errorHandler.reportMatch(this);
1900
+ this.consume();
1901
+ }
1902
+ this.state = 364;
1854
1903
  this.data_expr(5);
1855
1904
  }
1856
1905
  break;
1857
1906
  }
1858
1907
  }
1859
1908
  }
1860
- this.state = 357;
1909
+ this.state = 369;
1861
1910
  this.errorHandler.sync(this);
1862
1911
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 34, this.context);
1863
1912
  }
@@ -1884,9 +1933,9 @@ export class CircuitScriptParser extends antlr.Parser {
1884
1933
  try {
1885
1934
  this.enterOuterAlt(localContext, 1);
1886
1935
  {
1887
- this.state = 358;
1936
+ this.state = 370;
1888
1937
  _la = this.tokenStream.LA(1);
1889
- if (!(_la === 27 || _la === 28)) {
1938
+ if (!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 63) !== 0))) {
1890
1939
  this.errorHandler.recoverInline(this);
1891
1940
  }
1892
1941
  else {
@@ -1916,9 +1965,9 @@ export class CircuitScriptParser extends antlr.Parser {
1916
1965
  try {
1917
1966
  this.enterOuterAlt(localContext, 1);
1918
1967
  {
1919
- this.state = 360;
1968
+ this.state = 372;
1920
1969
  _la = this.tokenStream.LA(1);
1921
- if (!(_la === 25 || _la === 30)) {
1970
+ if (!(_la === 26 || _la === 37)) {
1922
1971
  this.errorHandler.recoverInline(this);
1923
1972
  }
1924
1973
  else {
@@ -1946,7 +1995,7 @@ export class CircuitScriptParser extends antlr.Parser {
1946
1995
  this.enterRule(localContext, 62, CircuitScriptParser.RULE_value_expr);
1947
1996
  let _la;
1948
1997
  try {
1949
- this.state = 367;
1998
+ this.state = 379;
1950
1999
  this.errorHandler.sync(this);
1951
2000
  switch (this.tokenStream.LA(1)) {
1952
2001
  case CircuitScriptParser.Minus:
@@ -1959,18 +2008,18 @@ export class CircuitScriptParser extends antlr.Parser {
1959
2008
  this.enterOuterAlt(localContext, 1);
1960
2009
  {
1961
2010
  {
1962
- this.state = 363;
2011
+ this.state = 375;
1963
2012
  this.errorHandler.sync(this);
1964
2013
  _la = this.tokenStream.LA(1);
1965
- if (_la === 30) {
2014
+ if (_la === 37) {
1966
2015
  {
1967
- this.state = 362;
2016
+ this.state = 374;
1968
2017
  this.match(CircuitScriptParser.Minus);
1969
2018
  }
1970
2019
  }
1971
- this.state = 365;
2020
+ this.state = 377;
1972
2021
  _la = this.tokenStream.LA(1);
1973
- if (!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 125) !== 0))) {
2022
+ if (!(((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 125) !== 0))) {
1974
2023
  this.errorHandler.recoverInline(this);
1975
2024
  }
1976
2025
  else {
@@ -1983,7 +2032,7 @@ export class CircuitScriptParser extends antlr.Parser {
1983
2032
  case CircuitScriptParser.T__5:
1984
2033
  this.enterOuterAlt(localContext, 2);
1985
2034
  {
1986
- this.state = 366;
2035
+ this.state = 378;
1987
2036
  this.blank_expr();
1988
2037
  }
1989
2038
  break;
@@ -2012,40 +2061,40 @@ export class CircuitScriptParser extends antlr.Parser {
2012
2061
  try {
2013
2062
  this.enterOuterAlt(localContext, 1);
2014
2063
  {
2015
- this.state = 369;
2064
+ this.state = 381;
2016
2065
  this.match(CircuitScriptParser.Define);
2017
- this.state = 370;
2066
+ this.state = 382;
2018
2067
  this.match(CircuitScriptParser.ID);
2019
- this.state = 371;
2068
+ this.state = 383;
2020
2069
  this.match(CircuitScriptParser.OPEN_PAREN);
2021
- this.state = 373;
2070
+ this.state = 385;
2022
2071
  this.errorHandler.sync(this);
2023
2072
  _la = this.tokenStream.LA(1);
2024
- if (_la === 37) {
2073
+ if (_la === 44) {
2025
2074
  {
2026
- this.state = 372;
2075
+ this.state = 384;
2027
2076
  this.function_args_expr();
2028
2077
  }
2029
2078
  }
2030
- this.state = 375;
2079
+ this.state = 387;
2031
2080
  this.match(CircuitScriptParser.CLOSE_PAREN);
2032
- this.state = 376;
2081
+ this.state = 388;
2033
2082
  this.match(CircuitScriptParser.T__0);
2034
- this.state = 377;
2083
+ this.state = 389;
2035
2084
  this.match(CircuitScriptParser.NEWLINE);
2036
- this.state = 378;
2085
+ this.state = 390;
2037
2086
  this.match(CircuitScriptParser.INDENT);
2038
- this.state = 381;
2087
+ this.state = 393;
2039
2088
  this.errorHandler.sync(this);
2040
2089
  _la = this.tokenStream.LA(1);
2041
2090
  do {
2042
2091
  {
2043
- this.state = 381;
2092
+ this.state = 393;
2044
2093
  this.errorHandler.sync(this);
2045
2094
  switch (this.tokenStream.LA(1)) {
2046
2095
  case CircuitScriptParser.NEWLINE:
2047
2096
  {
2048
- this.state = 379;
2097
+ this.state = 391;
2049
2098
  this.match(CircuitScriptParser.NEWLINE);
2050
2099
  }
2051
2100
  break;
@@ -2062,12 +2111,13 @@ export class CircuitScriptParser extends antlr.Parser {
2062
2111
  case CircuitScriptParser.Return:
2063
2112
  case CircuitScriptParser.Define:
2064
2113
  case CircuitScriptParser.Import:
2114
+ case CircuitScriptParser.If:
2065
2115
  case CircuitScriptParser.Frame:
2066
2116
  case CircuitScriptParser.Addition:
2067
2117
  case CircuitScriptParser.Divide:
2068
2118
  case CircuitScriptParser.ID:
2069
2119
  {
2070
- this.state = 380;
2120
+ this.state = 392;
2071
2121
  this.function_expr();
2072
2122
  }
2073
2123
  break;
@@ -2075,11 +2125,11 @@ export class CircuitScriptParser extends antlr.Parser {
2075
2125
  throw new antlr.NoViableAltException(this);
2076
2126
  }
2077
2127
  }
2078
- this.state = 383;
2128
+ this.state = 395;
2079
2129
  this.errorHandler.sync(this);
2080
2130
  _la = this.tokenStream.LA(1);
2081
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2768216848) !== 0) || _la === 37 || _la === 45);
2082
- this.state = 385;
2131
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 167748368) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
2132
+ this.state = 397;
2083
2133
  this.match(CircuitScriptParser.DEDENT);
2084
2134
  }
2085
2135
  }
@@ -2101,7 +2151,7 @@ export class CircuitScriptParser extends antlr.Parser {
2101
2151
  let localContext = new Function_exprContext(this.context, this.state);
2102
2152
  this.enterRule(localContext, 66, CircuitScriptParser.RULE_function_expr);
2103
2153
  try {
2104
- this.state = 389;
2154
+ this.state = 401;
2105
2155
  this.errorHandler.sync(this);
2106
2156
  switch (this.tokenStream.LA(1)) {
2107
2157
  case CircuitScriptParser.T__3:
@@ -2116,20 +2166,21 @@ export class CircuitScriptParser extends antlr.Parser {
2116
2166
  case CircuitScriptParser.Parallel:
2117
2167
  case CircuitScriptParser.Define:
2118
2168
  case CircuitScriptParser.Import:
2169
+ case CircuitScriptParser.If:
2119
2170
  case CircuitScriptParser.Frame:
2120
2171
  case CircuitScriptParser.Addition:
2121
2172
  case CircuitScriptParser.Divide:
2122
2173
  case CircuitScriptParser.ID:
2123
2174
  this.enterOuterAlt(localContext, 1);
2124
2175
  {
2125
- this.state = 387;
2176
+ this.state = 399;
2126
2177
  this.expression();
2127
2178
  }
2128
2179
  break;
2129
2180
  case CircuitScriptParser.Return:
2130
2181
  this.enterOuterAlt(localContext, 2);
2131
2182
  {
2132
- this.state = 388;
2183
+ this.state = 400;
2133
2184
  this.function_return_expr();
2134
2185
  }
2135
2186
  break;
@@ -2157,49 +2208,49 @@ export class CircuitScriptParser extends antlr.Parser {
2157
2208
  let _la;
2158
2209
  try {
2159
2210
  let alternative;
2160
- this.state = 420;
2211
+ this.state = 432;
2161
2212
  this.errorHandler.sync(this);
2162
2213
  switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context)) {
2163
2214
  case 1:
2164
2215
  this.enterOuterAlt(localContext, 1);
2165
2216
  {
2166
- this.state = 391;
2217
+ this.state = 403;
2167
2218
  this.match(CircuitScriptParser.ID);
2168
- this.state = 396;
2219
+ this.state = 408;
2169
2220
  this.errorHandler.sync(this);
2170
2221
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2171
2222
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2172
2223
  if (alternative === 1) {
2173
2224
  {
2174
2225
  {
2175
- this.state = 392;
2226
+ this.state = 404;
2176
2227
  this.match(CircuitScriptParser.T__1);
2177
- this.state = 393;
2228
+ this.state = 405;
2178
2229
  this.match(CircuitScriptParser.ID);
2179
2230
  }
2180
2231
  }
2181
2232
  }
2182
- this.state = 398;
2233
+ this.state = 410;
2183
2234
  this.errorHandler.sync(this);
2184
2235
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2185
2236
  }
2186
- this.state = 405;
2237
+ this.state = 417;
2187
2238
  this.errorHandler.sync(this);
2188
2239
  _la = this.tokenStream.LA(1);
2189
2240
  while (_la === 2) {
2190
2241
  {
2191
2242
  {
2192
- this.state = 399;
2243
+ this.state = 411;
2193
2244
  this.match(CircuitScriptParser.T__1);
2194
- this.state = 400;
2245
+ this.state = 412;
2195
2246
  this.match(CircuitScriptParser.ID);
2196
- this.state = 401;
2247
+ this.state = 413;
2197
2248
  this.match(CircuitScriptParser.T__2);
2198
- this.state = 402;
2249
+ this.state = 414;
2199
2250
  this.value_expr();
2200
2251
  }
2201
2252
  }
2202
- this.state = 407;
2253
+ this.state = 419;
2203
2254
  this.errorHandler.sync(this);
2204
2255
  _la = this.tokenStream.LA(1);
2205
2256
  }
@@ -2208,29 +2259,29 @@ export class CircuitScriptParser extends antlr.Parser {
2208
2259
  case 2:
2209
2260
  this.enterOuterAlt(localContext, 2);
2210
2261
  {
2211
- this.state = 408;
2262
+ this.state = 420;
2212
2263
  this.match(CircuitScriptParser.ID);
2213
- this.state = 409;
2264
+ this.state = 421;
2214
2265
  this.match(CircuitScriptParser.T__2);
2215
- this.state = 410;
2266
+ this.state = 422;
2216
2267
  this.value_expr();
2217
- this.state = 417;
2268
+ this.state = 429;
2218
2269
  this.errorHandler.sync(this);
2219
2270
  _la = this.tokenStream.LA(1);
2220
2271
  while (_la === 2) {
2221
2272
  {
2222
2273
  {
2223
- this.state = 411;
2274
+ this.state = 423;
2224
2275
  this.match(CircuitScriptParser.T__1);
2225
- this.state = 412;
2276
+ this.state = 424;
2226
2277
  this.match(CircuitScriptParser.ID);
2227
- this.state = 413;
2278
+ this.state = 425;
2228
2279
  this.match(CircuitScriptParser.T__2);
2229
- this.state = 414;
2280
+ this.state = 426;
2230
2281
  this.value_expr();
2231
2282
  }
2232
2283
  }
2233
- this.state = 419;
2284
+ this.state = 431;
2234
2285
  this.errorHandler.sync(this);
2235
2286
  _la = this.tokenStream.LA(1);
2236
2287
  }
@@ -2259,23 +2310,23 @@ export class CircuitScriptParser extends antlr.Parser {
2259
2310
  let alternative;
2260
2311
  this.enterOuterAlt(localContext, 1);
2261
2312
  {
2262
- this.state = 422;
2313
+ this.state = 434;
2263
2314
  this.match(CircuitScriptParser.ID);
2264
- this.state = 427;
2315
+ this.state = 439;
2265
2316
  this.errorHandler.sync(this);
2266
2317
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2267
2318
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2268
2319
  if (alternative === 1) {
2269
2320
  {
2270
2321
  {
2271
- this.state = 423;
2322
+ this.state = 435;
2272
2323
  this.match(CircuitScriptParser.T__4);
2273
- this.state = 424;
2324
+ this.state = 436;
2274
2325
  this.match(CircuitScriptParser.ID);
2275
2326
  }
2276
2327
  }
2277
2328
  }
2278
- this.state = 429;
2329
+ this.state = 441;
2279
2330
  this.errorHandler.sync(this);
2280
2331
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2281
2332
  }
@@ -2300,33 +2351,33 @@ export class CircuitScriptParser extends antlr.Parser {
2300
2351
  this.enterRule(localContext, 72, CircuitScriptParser.RULE_trailer_expr);
2301
2352
  let _la;
2302
2353
  try {
2303
- this.state = 437;
2354
+ this.state = 449;
2304
2355
  this.errorHandler.sync(this);
2305
2356
  switch (this.tokenStream.LA(1)) {
2306
2357
  case CircuitScriptParser.OPEN_PAREN:
2307
2358
  this.enterOuterAlt(localContext, 1);
2308
2359
  {
2309
- this.state = 430;
2360
+ this.state = 442;
2310
2361
  this.match(CircuitScriptParser.OPEN_PAREN);
2311
- this.state = 432;
2362
+ this.state = 444;
2312
2363
  this.errorHandler.sync(this);
2313
2364
  _la = this.tokenStream.LA(1);
2314
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3791651904) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1017) !== 0)) {
2365
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 67109952) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 16279) !== 0)) {
2315
2366
  {
2316
- this.state = 431;
2367
+ this.state = 443;
2317
2368
  this.parameters();
2318
2369
  }
2319
2370
  }
2320
- this.state = 434;
2371
+ this.state = 446;
2321
2372
  this.match(CircuitScriptParser.CLOSE_PAREN);
2322
2373
  }
2323
2374
  break;
2324
2375
  case CircuitScriptParser.T__4:
2325
2376
  this.enterOuterAlt(localContext, 2);
2326
2377
  {
2327
- this.state = 435;
2378
+ this.state = 447;
2328
2379
  this.match(CircuitScriptParser.T__4);
2329
- this.state = 436;
2380
+ this.state = 448;
2330
2381
  this.match(CircuitScriptParser.ID);
2331
2382
  }
2332
2383
  break;
@@ -2356,18 +2407,18 @@ export class CircuitScriptParser extends antlr.Parser {
2356
2407
  let alternative;
2357
2408
  this.enterOuterAlt(localContext, 1);
2358
2409
  {
2359
- this.state = 440;
2410
+ this.state = 452;
2360
2411
  this.errorHandler.sync(this);
2361
2412
  _la = this.tokenStream.LA(1);
2362
- if (_la === 29 || _la === 31) {
2413
+ if (_la === 36 || _la === 38) {
2363
2414
  {
2364
- this.state = 439;
2415
+ this.state = 451;
2365
2416
  this.net_namespace_expr();
2366
2417
  }
2367
2418
  }
2368
- this.state = 442;
2419
+ this.state = 454;
2369
2420
  this.match(CircuitScriptParser.ID);
2370
- this.state = 444;
2421
+ this.state = 456;
2371
2422
  this.errorHandler.sync(this);
2372
2423
  alternative = 1;
2373
2424
  do {
@@ -2375,7 +2426,7 @@ export class CircuitScriptParser extends antlr.Parser {
2375
2426
  case 1:
2376
2427
  {
2377
2428
  {
2378
- this.state = 443;
2429
+ this.state = 455;
2379
2430
  this.trailer_expr();
2380
2431
  }
2381
2432
  }
@@ -2383,7 +2434,7 @@ export class CircuitScriptParser extends antlr.Parser {
2383
2434
  default:
2384
2435
  throw new antlr.NoViableAltException(this);
2385
2436
  }
2386
- this.state = 446;
2437
+ this.state = 458;
2387
2438
  this.errorHandler.sync(this);
2388
2439
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 49, this.context);
2389
2440
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -2410,23 +2461,23 @@ export class CircuitScriptParser extends antlr.Parser {
2410
2461
  try {
2411
2462
  this.enterOuterAlt(localContext, 1);
2412
2463
  {
2413
- this.state = 449;
2464
+ this.state = 461;
2414
2465
  this.errorHandler.sync(this);
2415
2466
  _la = this.tokenStream.LA(1);
2416
- if (_la === 29) {
2467
+ if (_la === 36) {
2417
2468
  {
2418
- this.state = 448;
2469
+ this.state = 460;
2419
2470
  this.match(CircuitScriptParser.Addition);
2420
2471
  }
2421
2472
  }
2422
- this.state = 451;
2473
+ this.state = 463;
2423
2474
  this.match(CircuitScriptParser.Divide);
2424
- this.state = 453;
2475
+ this.state = 465;
2425
2476
  this.errorHandler.sync(this);
2426
2477
  switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context)) {
2427
2478
  case 1:
2428
2479
  {
2429
- this.state = 452;
2480
+ this.state = 464;
2430
2481
  this.data_expr(0);
2431
2482
  }
2432
2483
  break;
@@ -2453,9 +2504,9 @@ export class CircuitScriptParser extends antlr.Parser {
2453
2504
  try {
2454
2505
  this.enterOuterAlt(localContext, 1);
2455
2506
  {
2456
- this.state = 455;
2507
+ this.state = 467;
2457
2508
  this.match(CircuitScriptParser.Return);
2458
- this.state = 456;
2509
+ this.state = 468;
2459
2510
  this.data_expr(0);
2460
2511
  }
2461
2512
  }
@@ -2480,27 +2531,27 @@ export class CircuitScriptParser extends antlr.Parser {
2480
2531
  try {
2481
2532
  this.enterOuterAlt(localContext, 1);
2482
2533
  {
2483
- this.state = 458;
2534
+ this.state = 470;
2484
2535
  this.match(CircuitScriptParser.Create);
2485
- this.state = 459;
2536
+ this.state = 471;
2486
2537
  this.match(CircuitScriptParser.Component);
2487
- this.state = 460;
2538
+ this.state = 472;
2488
2539
  this.match(CircuitScriptParser.T__0);
2489
- this.state = 461;
2540
+ this.state = 473;
2490
2541
  this.match(CircuitScriptParser.NEWLINE);
2491
- this.state = 462;
2542
+ this.state = 474;
2492
2543
  this.match(CircuitScriptParser.INDENT);
2493
- this.state = 465;
2544
+ this.state = 477;
2494
2545
  this.errorHandler.sync(this);
2495
2546
  _la = this.tokenStream.LA(1);
2496
2547
  do {
2497
2548
  {
2498
- this.state = 465;
2549
+ this.state = 477;
2499
2550
  this.errorHandler.sync(this);
2500
2551
  switch (this.tokenStream.LA(1)) {
2501
2552
  case CircuitScriptParser.NEWLINE:
2502
2553
  {
2503
- this.state = 463;
2554
+ this.state = 475;
2504
2555
  this.match(CircuitScriptParser.NEWLINE);
2505
2556
  }
2506
2557
  break;
@@ -2508,7 +2559,7 @@ export class CircuitScriptParser extends antlr.Parser {
2508
2559
  case CircuitScriptParser.INTEGER_VALUE:
2509
2560
  case CircuitScriptParser.STRING_VALUE:
2510
2561
  {
2511
- this.state = 464;
2562
+ this.state = 476;
2512
2563
  this.property_expr();
2513
2564
  }
2514
2565
  break;
@@ -2516,11 +2567,11 @@ export class CircuitScriptParser extends antlr.Parser {
2516
2567
  throw new antlr.NoViableAltException(this);
2517
2568
  }
2518
2569
  }
2519
- this.state = 467;
2570
+ this.state = 479;
2520
2571
  this.errorHandler.sync(this);
2521
2572
  _la = this.tokenStream.LA(1);
2522
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
2523
- this.state = 469;
2573
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 275) !== 0));
2574
+ this.state = 481;
2524
2575
  this.match(CircuitScriptParser.DEDENT);
2525
2576
  }
2526
2577
  }
@@ -2545,46 +2596,46 @@ export class CircuitScriptParser extends antlr.Parser {
2545
2596
  try {
2546
2597
  this.enterOuterAlt(localContext, 1);
2547
2598
  {
2548
- this.state = 471;
2599
+ this.state = 483;
2549
2600
  this.match(CircuitScriptParser.Create);
2550
- this.state = 472;
2601
+ this.state = 484;
2551
2602
  this.match(CircuitScriptParser.Graphic);
2552
- this.state = 473;
2603
+ this.state = 485;
2553
2604
  this.match(CircuitScriptParser.T__0);
2554
- this.state = 474;
2605
+ this.state = 486;
2555
2606
  this.match(CircuitScriptParser.NEWLINE);
2556
- this.state = 475;
2607
+ this.state = 487;
2557
2608
  this.match(CircuitScriptParser.INDENT);
2558
- this.state = 478;
2609
+ this.state = 490;
2559
2610
  this.errorHandler.sync(this);
2560
2611
  _la = this.tokenStream.LA(1);
2561
2612
  do {
2562
2613
  {
2563
- this.state = 478;
2614
+ this.state = 490;
2564
2615
  this.errorHandler.sync(this);
2565
2616
  switch (this.tokenStream.LA(1)) {
2566
2617
  case CircuitScriptParser.NEWLINE:
2567
2618
  {
2568
- this.state = 476;
2619
+ this.state = 488;
2569
2620
  this.match(CircuitScriptParser.NEWLINE);
2570
2621
  }
2571
2622
  break;
2572
2623
  case CircuitScriptParser.Pin:
2573
2624
  case CircuitScriptParser.ID:
2574
2625
  {
2575
- this.state = 477;
2576
- this.sub_expr();
2626
+ this.state = 489;
2627
+ this.graphic_expr();
2577
2628
  }
2578
2629
  break;
2579
2630
  default:
2580
2631
  throw new antlr.NoViableAltException(this);
2581
2632
  }
2582
2633
  }
2583
- this.state = 480;
2634
+ this.state = 492;
2584
2635
  this.errorHandler.sync(this);
2585
2636
  _la = this.tokenStream.LA(1);
2586
- } while (((((_la - 14)) & ~0x1F) === 0 && ((1 << (_la - 14)) & 2155872257) !== 0));
2587
- this.state = 482;
2637
+ } while (_la === 14 || _la === 44 || _la === 52);
2638
+ this.state = 494;
2588
2639
  this.match(CircuitScriptParser.DEDENT);
2589
2640
  }
2590
2641
  }
@@ -2602,51 +2653,118 @@ export class CircuitScriptParser extends antlr.Parser {
2602
2653
  }
2603
2654
  return localContext;
2604
2655
  }
2605
- sub_expr() {
2606
- let localContext = new Sub_exprContext(this.context, this.state);
2607
- this.enterRule(localContext, 84, CircuitScriptParser.RULE_sub_expr);
2656
+ nested_properties_inner() {
2657
+ let localContext = new Nested_properties_innerContext(this.context, this.state);
2658
+ this.enterRule(localContext, 84, CircuitScriptParser.RULE_nested_properties_inner);
2608
2659
  let _la;
2609
2660
  try {
2610
2661
  this.enterOuterAlt(localContext, 1);
2611
2662
  {
2612
- this.state = 484;
2663
+ {
2664
+ this.state = 496;
2665
+ this.match(CircuitScriptParser.NEWLINE);
2666
+ this.state = 497;
2667
+ this.match(CircuitScriptParser.INDENT);
2668
+ this.state = 500;
2669
+ this.errorHandler.sync(this);
2670
+ _la = this.tokenStream.LA(1);
2671
+ do {
2672
+ {
2673
+ this.state = 500;
2674
+ this.errorHandler.sync(this);
2675
+ switch (this.tokenStream.LA(1)) {
2676
+ case CircuitScriptParser.NEWLINE:
2677
+ {
2678
+ this.state = 498;
2679
+ this.match(CircuitScriptParser.NEWLINE);
2680
+ }
2681
+ break;
2682
+ case CircuitScriptParser.ID:
2683
+ case CircuitScriptParser.INTEGER_VALUE:
2684
+ case CircuitScriptParser.STRING_VALUE:
2685
+ {
2686
+ this.state = 499;
2687
+ this.property_expr();
2688
+ }
2689
+ break;
2690
+ default:
2691
+ throw new antlr.NoViableAltException(this);
2692
+ }
2693
+ }
2694
+ this.state = 502;
2695
+ this.errorHandler.sync(this);
2696
+ _la = this.tokenStream.LA(1);
2697
+ } while (((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 275) !== 0));
2698
+ this.state = 504;
2699
+ this.match(CircuitScriptParser.DEDENT);
2700
+ }
2701
+ }
2702
+ }
2703
+ catch (re) {
2704
+ if (re instanceof antlr.RecognitionException) {
2705
+ this.errorHandler.reportError(this, re);
2706
+ this.errorHandler.recover(this, re);
2707
+ }
2708
+ else {
2709
+ throw re;
2710
+ }
2711
+ }
2712
+ finally {
2713
+ this.exitRule();
2714
+ }
2715
+ return localContext;
2716
+ }
2717
+ graphic_expr() {
2718
+ let localContext = new Graphic_exprContext(this.context, this.state);
2719
+ this.enterRule(localContext, 86, CircuitScriptParser.RULE_graphic_expr);
2720
+ let _la;
2721
+ try {
2722
+ this.enterOuterAlt(localContext, 1);
2723
+ {
2724
+ this.state = 506;
2613
2725
  localContext._command = this.tokenStream.LT(1);
2614
2726
  _la = this.tokenStream.LA(1);
2615
- if (!(_la === 14 || _la === 37)) {
2727
+ if (!(_la === 14 || _la === 44)) {
2616
2728
  localContext._command = this.errorHandler.recoverInline(this);
2617
2729
  }
2618
2730
  else {
2619
2731
  this.errorHandler.reportMatch(this);
2620
2732
  this.consume();
2621
2733
  }
2622
- this.state = 486;
2734
+ this.state = 508;
2623
2735
  this.errorHandler.sync(this);
2624
2736
  _la = this.tokenStream.LA(1);
2625
2737
  if (_la === 1) {
2626
2738
  {
2627
- this.state = 485;
2739
+ this.state = 507;
2628
2740
  this.match(CircuitScriptParser.T__0);
2629
2741
  }
2630
2742
  }
2631
- this.state = 493;
2743
+ this.state = 516;
2632
2744
  this.errorHandler.sync(this);
2633
- switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context)) {
2745
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2634
2746
  case 1:
2635
2747
  {
2636
- this.state = 488;
2748
+ this.state = 510;
2637
2749
  this.parameters();
2638
2750
  }
2639
2751
  break;
2640
2752
  case 2:
2641
2753
  {
2642
- this.state = 489;
2754
+ this.state = 511;
2643
2755
  this.match(CircuitScriptParser.OPEN_PAREN);
2644
- this.state = 490;
2756
+ this.state = 512;
2645
2757
  this.parameters();
2646
- this.state = 491;
2758
+ this.state = 513;
2647
2759
  this.match(CircuitScriptParser.CLOSE_PAREN);
2648
2760
  }
2649
2761
  break;
2762
+ case 3:
2763
+ {
2764
+ this.state = 515;
2765
+ this.nested_properties_inner();
2766
+ }
2767
+ break;
2650
2768
  }
2651
2769
  }
2652
2770
  }
@@ -2666,15 +2784,15 @@ export class CircuitScriptParser extends antlr.Parser {
2666
2784
  }
2667
2785
  property_expr() {
2668
2786
  let localContext = new Property_exprContext(this.context, this.state);
2669
- this.enterRule(localContext, 86, CircuitScriptParser.RULE_property_expr);
2787
+ this.enterRule(localContext, 88, CircuitScriptParser.RULE_property_expr);
2670
2788
  try {
2671
2789
  this.enterOuterAlt(localContext, 1);
2672
2790
  {
2673
- this.state = 495;
2791
+ this.state = 518;
2674
2792
  this.property_key_expr();
2675
- this.state = 496;
2793
+ this.state = 519;
2676
2794
  this.match(CircuitScriptParser.T__0);
2677
- this.state = 497;
2795
+ this.state = 520;
2678
2796
  this.property_value_expr();
2679
2797
  }
2680
2798
  }
@@ -2694,14 +2812,14 @@ export class CircuitScriptParser extends antlr.Parser {
2694
2812
  }
2695
2813
  property_key_expr() {
2696
2814
  let localContext = new Property_key_exprContext(this.context, this.state);
2697
- this.enterRule(localContext, 88, CircuitScriptParser.RULE_property_key_expr);
2815
+ this.enterRule(localContext, 90, CircuitScriptParser.RULE_property_key_expr);
2698
2816
  let _la;
2699
2817
  try {
2700
2818
  this.enterOuterAlt(localContext, 1);
2701
2819
  {
2702
- this.state = 499;
2820
+ this.state = 522;
2703
2821
  _la = this.tokenStream.LA(1);
2704
- if (!(((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 19) !== 0))) {
2822
+ if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 19) !== 0))) {
2705
2823
  this.errorHandler.recoverInline(this);
2706
2824
  }
2707
2825
  else {
@@ -2726,52 +2844,18 @@ export class CircuitScriptParser extends antlr.Parser {
2726
2844
  }
2727
2845
  property_value_expr() {
2728
2846
  let localContext = new Property_value_exprContext(this.context, this.state);
2729
- this.enterRule(localContext, 90, CircuitScriptParser.RULE_property_value_expr);
2847
+ this.enterRule(localContext, 92, CircuitScriptParser.RULE_property_value_expr);
2730
2848
  let _la;
2731
2849
  try {
2732
- this.state = 518;
2850
+ this.state = 533;
2733
2851
  this.errorHandler.sync(this);
2734
2852
  switch (this.tokenStream.LA(1)) {
2735
2853
  case CircuitScriptParser.NEWLINE:
2736
2854
  localContext = new Nested_propertiesContext(localContext);
2737
2855
  this.enterOuterAlt(localContext, 1);
2738
2856
  {
2739
- this.state = 501;
2740
- this.match(CircuitScriptParser.NEWLINE);
2741
- this.state = 502;
2742
- this.match(CircuitScriptParser.INDENT);
2743
- this.state = 505;
2744
- this.errorHandler.sync(this);
2745
- _la = this.tokenStream.LA(1);
2746
- do {
2747
- {
2748
- this.state = 505;
2749
- this.errorHandler.sync(this);
2750
- switch (this.tokenStream.LA(1)) {
2751
- case CircuitScriptParser.NEWLINE:
2752
- {
2753
- this.state = 503;
2754
- this.match(CircuitScriptParser.NEWLINE);
2755
- }
2756
- break;
2757
- case CircuitScriptParser.ID:
2758
- case CircuitScriptParser.INTEGER_VALUE:
2759
- case CircuitScriptParser.STRING_VALUE:
2760
- {
2761
- this.state = 504;
2762
- this.property_expr();
2763
- }
2764
- break;
2765
- default:
2766
- throw new antlr.NoViableAltException(this);
2767
- }
2768
- }
2769
- this.state = 507;
2770
- this.errorHandler.sync(this);
2771
- _la = this.tokenStream.LA(1);
2772
- } while (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 275) !== 0));
2773
- this.state = 509;
2774
- this.match(CircuitScriptParser.DEDENT);
2857
+ this.state = 524;
2858
+ this.nested_properties_inner();
2775
2859
  }
2776
2860
  break;
2777
2861
  case CircuitScriptParser.T__5:
@@ -2791,21 +2875,21 @@ export class CircuitScriptParser extends antlr.Parser {
2791
2875
  localContext = new Single_line_propertyContext(localContext);
2792
2876
  this.enterOuterAlt(localContext, 2);
2793
2877
  {
2794
- this.state = 510;
2878
+ this.state = 525;
2795
2879
  this.data_expr(0);
2796
- this.state = 515;
2880
+ this.state = 530;
2797
2881
  this.errorHandler.sync(this);
2798
2882
  _la = this.tokenStream.LA(1);
2799
2883
  while (_la === 2) {
2800
2884
  {
2801
2885
  {
2802
- this.state = 511;
2886
+ this.state = 526;
2803
2887
  this.match(CircuitScriptParser.T__1);
2804
- this.state = 512;
2888
+ this.state = 527;
2805
2889
  this.data_expr(0);
2806
2890
  }
2807
2891
  }
2808
- this.state = 517;
2892
+ this.state = 532;
2809
2893
  this.errorHandler.sync(this);
2810
2894
  _la = this.tokenStream.LA(1);
2811
2895
  }
@@ -2831,15 +2915,15 @@ export class CircuitScriptParser extends antlr.Parser {
2831
2915
  }
2832
2916
  blank_expr() {
2833
2917
  let localContext = new Blank_exprContext(this.context, this.state);
2834
- this.enterRule(localContext, 92, CircuitScriptParser.RULE_blank_expr);
2918
+ this.enterRule(localContext, 94, CircuitScriptParser.RULE_blank_expr);
2835
2919
  try {
2836
2920
  this.enterOuterAlt(localContext, 1);
2837
2921
  {
2838
- this.state = 520;
2922
+ this.state = 535;
2839
2923
  this.match(CircuitScriptParser.T__5);
2840
- this.state = 521;
2924
+ this.state = 536;
2841
2925
  this.match(CircuitScriptParser.INTEGER_VALUE);
2842
- this.state = 522;
2926
+ this.state = 537;
2843
2927
  this.match(CircuitScriptParser.T__6);
2844
2928
  }
2845
2929
  }
@@ -2859,29 +2943,29 @@ export class CircuitScriptParser extends antlr.Parser {
2859
2943
  }
2860
2944
  wire_atom_expr() {
2861
2945
  let localContext = new Wire_atom_exprContext(this.context, this.state);
2862
- this.enterRule(localContext, 94, CircuitScriptParser.RULE_wire_atom_expr);
2946
+ this.enterRule(localContext, 96, CircuitScriptParser.RULE_wire_atom_expr);
2863
2947
  try {
2864
- this.state = 530;
2948
+ this.state = 545;
2865
2949
  this.errorHandler.sync(this);
2866
2950
  switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
2867
2951
  case 1:
2868
2952
  localContext = new Wire_expr_direction_valueContext(localContext);
2869
2953
  this.enterOuterAlt(localContext, 1);
2870
2954
  {
2871
- this.state = 524;
2955
+ this.state = 539;
2872
2956
  this.match(CircuitScriptParser.ID);
2873
- this.state = 527;
2957
+ this.state = 542;
2874
2958
  this.errorHandler.sync(this);
2875
2959
  switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context)) {
2876
2960
  case 1:
2877
2961
  {
2878
- this.state = 525;
2962
+ this.state = 540;
2879
2963
  this.match(CircuitScriptParser.INTEGER_VALUE);
2880
2964
  }
2881
2965
  break;
2882
2966
  case 2:
2883
2967
  {
2884
- this.state = 526;
2968
+ this.state = 541;
2885
2969
  this.data_expr(0);
2886
2970
  }
2887
2971
  break;
@@ -2892,7 +2976,7 @@ export class CircuitScriptParser extends antlr.Parser {
2892
2976
  localContext = new Wire_expr_direction_onlyContext(localContext);
2893
2977
  this.enterOuterAlt(localContext, 2);
2894
2978
  {
2895
- this.state = 529;
2979
+ this.state = 544;
2896
2980
  this.match(CircuitScriptParser.ID);
2897
2981
  }
2898
2982
  break;
@@ -2914,26 +2998,26 @@ export class CircuitScriptParser extends antlr.Parser {
2914
2998
  }
2915
2999
  wire_expr() {
2916
3000
  let localContext = new Wire_exprContext(this.context, this.state);
2917
- this.enterRule(localContext, 96, CircuitScriptParser.RULE_wire_expr);
3001
+ this.enterRule(localContext, 98, CircuitScriptParser.RULE_wire_expr);
2918
3002
  try {
2919
3003
  let alternative;
2920
3004
  this.enterOuterAlt(localContext, 1);
2921
3005
  {
2922
- this.state = 532;
3006
+ this.state = 547;
2923
3007
  this.match(CircuitScriptParser.Wire);
2924
- this.state = 536;
3008
+ this.state = 551;
2925
3009
  this.errorHandler.sync(this);
2926
3010
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
2927
3011
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2928
3012
  if (alternative === 1) {
2929
3013
  {
2930
3014
  {
2931
- this.state = 533;
3015
+ this.state = 548;
2932
3016
  this.wire_atom_expr();
2933
3017
  }
2934
3018
  }
2935
3019
  }
2936
- this.state = 538;
3020
+ this.state = 553;
2937
3021
  this.errorHandler.sync(this);
2938
3022
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 64, this.context);
2939
3023
  }
@@ -2955,13 +3039,13 @@ export class CircuitScriptParser extends antlr.Parser {
2955
3039
  }
2956
3040
  point_expr() {
2957
3041
  let localContext = new Point_exprContext(this.context, this.state);
2958
- this.enterRule(localContext, 98, CircuitScriptParser.RULE_point_expr);
3042
+ this.enterRule(localContext, 100, CircuitScriptParser.RULE_point_expr);
2959
3043
  try {
2960
3044
  this.enterOuterAlt(localContext, 1);
2961
3045
  {
2962
- this.state = 539;
3046
+ this.state = 554;
2963
3047
  this.match(CircuitScriptParser.Point);
2964
- this.state = 540;
3048
+ this.state = 555;
2965
3049
  this.match(CircuitScriptParser.ID);
2966
3050
  }
2967
3051
  }
@@ -2981,13 +3065,13 @@ export class CircuitScriptParser extends antlr.Parser {
2981
3065
  }
2982
3066
  import_expr() {
2983
3067
  let localContext = new Import_exprContext(this.context, this.state);
2984
- this.enterRule(localContext, 100, CircuitScriptParser.RULE_import_expr);
3068
+ this.enterRule(localContext, 102, CircuitScriptParser.RULE_import_expr);
2985
3069
  try {
2986
3070
  this.enterOuterAlt(localContext, 1);
2987
3071
  {
2988
- this.state = 542;
3072
+ this.state = 557;
2989
3073
  this.match(CircuitScriptParser.Import);
2990
- this.state = 543;
3074
+ this.state = 558;
2991
3075
  this.match(CircuitScriptParser.ID);
2992
3076
  }
2993
3077
  }
@@ -3007,30 +3091,30 @@ export class CircuitScriptParser extends antlr.Parser {
3007
3091
  }
3008
3092
  frame_expr() {
3009
3093
  let localContext = new Frame_exprContext(this.context, this.state);
3010
- this.enterRule(localContext, 102, CircuitScriptParser.RULE_frame_expr);
3094
+ this.enterRule(localContext, 104, CircuitScriptParser.RULE_frame_expr);
3011
3095
  let _la;
3012
3096
  try {
3013
3097
  this.enterOuterAlt(localContext, 1);
3014
3098
  {
3015
- this.state = 545;
3099
+ this.state = 560;
3016
3100
  this.match(CircuitScriptParser.Frame);
3017
- this.state = 546;
3101
+ this.state = 561;
3018
3102
  this.match(CircuitScriptParser.T__0);
3019
- this.state = 547;
3103
+ this.state = 562;
3020
3104
  this.match(CircuitScriptParser.NEWLINE);
3021
- this.state = 548;
3105
+ this.state = 563;
3022
3106
  this.match(CircuitScriptParser.INDENT);
3023
- this.state = 551;
3107
+ this.state = 566;
3024
3108
  this.errorHandler.sync(this);
3025
3109
  _la = this.tokenStream.LA(1);
3026
3110
  do {
3027
3111
  {
3028
- this.state = 551;
3112
+ this.state = 566;
3029
3113
  this.errorHandler.sync(this);
3030
3114
  switch (this.tokenStream.LA(1)) {
3031
3115
  case CircuitScriptParser.NEWLINE:
3032
3116
  {
3033
- this.state = 549;
3117
+ this.state = 564;
3034
3118
  this.match(CircuitScriptParser.NEWLINE);
3035
3119
  }
3036
3120
  break;
@@ -3046,12 +3130,13 @@ export class CircuitScriptParser extends antlr.Parser {
3046
3130
  case CircuitScriptParser.Parallel:
3047
3131
  case CircuitScriptParser.Define:
3048
3132
  case CircuitScriptParser.Import:
3133
+ case CircuitScriptParser.If:
3049
3134
  case CircuitScriptParser.Frame:
3050
3135
  case CircuitScriptParser.Addition:
3051
3136
  case CircuitScriptParser.Divide:
3052
3137
  case CircuitScriptParser.ID:
3053
3138
  {
3054
- this.state = 550;
3139
+ this.state = 565;
3055
3140
  this.expression();
3056
3141
  }
3057
3142
  break;
@@ -3059,11 +3144,11 @@ export class CircuitScriptParser extends antlr.Parser {
3059
3144
  throw new antlr.NoViableAltException(this);
3060
3145
  }
3061
3146
  }
3062
- this.state = 553;
3147
+ this.state = 568;
3063
3148
  this.errorHandler.sync(this);
3064
3149
  _la = this.tokenStream.LA(1);
3065
- } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2766119696) !== 0) || _la === 37 || _la === 45);
3066
- this.state = 555;
3150
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3151
+ this.state = 570;
3067
3152
  this.match(CircuitScriptParser.DEDENT);
3068
3153
  }
3069
3154
  }
@@ -3081,240 +3166,528 @@ export class CircuitScriptParser extends antlr.Parser {
3081
3166
  }
3082
3167
  return localContext;
3083
3168
  }
3084
- sempred(localContext, ruleIndex, predIndex) {
3085
- switch (ruleIndex) {
3086
- case 28:
3087
- return this.data_expr_sempred(localContext, predIndex);
3088
- }
3089
- return true;
3090
- }
3091
- data_expr_sempred(localContext, predIndex) {
3092
- switch (predIndex) {
3093
- case 0:
3094
- return this.precpred(this.context, 6);
3095
- case 1:
3096
- return this.precpred(this.context, 5);
3097
- case 2:
3098
- return this.precpred(this.context, 4);
3099
- }
3100
- return true;
3101
- }
3102
- static _serializedATN = [
3103
- 4, 1, 48, 558, 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,
3104
- 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,
3105
- 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,
3106
- 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,
3107
- 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33,
3108
- 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,
3109
- 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,
3110
- 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 1, 0, 1, 0, 4,
3111
- 0, 107, 8, 0, 11, 0, 12, 0, 108, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3112
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 130, 8, 1, 1, 2, 4, 2, 133, 8, 2,
3113
- 11, 2, 12, 2, 134, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 143, 8, 3, 11, 3, 12, 3, 144,
3114
- 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 155, 8, 4, 11, 4, 12, 4, 156, 1, 4, 1,
3115
- 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 172, 8, 7, 1, 8, 1,
3116
- 8, 3, 8, 176, 8, 8, 1, 8, 5, 8, 179, 8, 8, 10, 8, 12, 8, 182, 9, 8, 1, 8, 3, 8, 185, 8, 8,
3117
- 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 3, 10, 192, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 3, 12,
3118
- 199, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 205, 8, 13, 10, 13, 12, 13, 208, 9, 13,
3119
- 1, 13, 3, 13, 211, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 219, 8, 14, 10,
3120
- 14, 12, 14, 222, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 229, 8, 14, 11, 14, 12,
3121
- 14, 230, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 240, 8, 15, 10, 15, 12,
3122
- 15, 243, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 253, 8, 17,
3123
- 11, 17, 12, 17, 254, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 261, 8, 18, 1, 19, 1, 19, 1, 19,
3124
- 1, 19, 3, 19, 267, 8, 19, 1, 20, 1, 20, 3, 20, 271, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4,
3125
- 21, 277, 8, 21, 11, 21, 12, 21, 278, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1,
3126
- 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 5, 25, 296, 8, 25, 10, 25, 12, 25,
3127
- 299, 9, 25, 1, 25, 1, 25, 5, 25, 303, 8, 25, 10, 25, 12, 25, 306, 9, 25, 1, 25, 1, 25,
3128
- 1, 25, 5, 25, 311, 8, 25, 10, 25, 12, 25, 314, 9, 25, 3, 25, 316, 8, 25, 1, 26, 1, 26,
3129
- 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
3130
- 1, 28, 3, 28, 334, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 342, 8, 28, 1,
3131
- 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 354, 8, 28, 10,
3132
- 28, 12, 28, 357, 9, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 3, 31, 364, 8, 31, 1, 31, 1,
3133
- 31, 3, 31, 368, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 374, 8, 32, 1, 32, 1, 32, 1, 32,
3134
- 1, 32, 1, 32, 1, 32, 4, 32, 382, 8, 32, 11, 32, 12, 32, 383, 1, 32, 1, 32, 1, 33, 1, 33,
3135
- 3, 33, 390, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 395, 8, 34, 10, 34, 12, 34, 398, 9, 34,
3136
- 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 404, 8, 34, 10, 34, 12, 34, 407, 9, 34, 1, 34, 1, 34,
3137
- 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 416, 8, 34, 10, 34, 12, 34, 419, 9, 34, 3, 34,
3138
- 421, 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 426, 8, 35, 10, 35, 12, 35, 429, 9, 35, 1, 36,
3139
- 1, 36, 3, 36, 433, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 438, 8, 36, 1, 37, 3, 37, 441, 8,
3140
- 37, 1, 37, 1, 37, 4, 37, 445, 8, 37, 11, 37, 12, 37, 446, 1, 38, 3, 38, 450, 8, 38, 1,
3141
- 38, 1, 38, 3, 38, 454, 8, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1,
3142
- 40, 1, 40, 4, 40, 466, 8, 40, 11, 40, 12, 40, 467, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1,
3143
- 41, 1, 41, 1, 41, 1, 41, 4, 41, 479, 8, 41, 11, 41, 12, 41, 480, 1, 41, 1, 41, 1, 42, 1,
3144
- 42, 3, 42, 487, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 494, 8, 42, 1, 43, 1, 43,
3145
- 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 506, 8, 45, 11, 45, 12, 45,
3146
- 507, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 514, 8, 45, 10, 45, 12, 45, 517, 9, 45, 3, 45,
3147
- 519, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 3, 47, 528, 8, 47, 1, 47, 3,
3148
- 47, 531, 8, 47, 1, 48, 1, 48, 5, 48, 535, 8, 48, 10, 48, 12, 48, 538, 9, 48, 1, 49, 1,
3149
- 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 4, 51, 552, 8,
3150
- 51, 11, 51, 12, 51, 553, 1, 51, 1, 51, 1, 51, 0, 1, 56, 52, 0, 2, 4, 6, 8, 10, 12, 14, 16,
3151
- 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
3152
- 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
3153
- 0, 11, 2, 0, 9, 9, 18, 20, 1, 0, 37, 38, 2, 0, 38, 38, 41, 41, 2, 0, 35, 35, 38, 38, 1, 0,
3154
- 31, 32, 1, 0, 29, 30, 1, 0, 27, 28, 2, 0, 25, 25, 30, 30, 2, 0, 36, 36, 38, 42, 2, 0, 14,
3155
- 14, 37, 37, 2, 0, 37, 38, 41, 41, 592, 0, 106, 1, 0, 0, 0, 2, 129, 1, 0, 0, 0, 4, 132, 1,
3156
- 0, 0, 0, 6, 136, 1, 0, 0, 0, 8, 148, 1, 0, 0, 0, 10, 160, 1, 0, 0, 0, 12, 164, 1, 0, 0, 0,
3157
- 14, 167, 1, 0, 0, 0, 16, 175, 1, 0, 0, 0, 18, 186, 1, 0, 0, 0, 20, 191, 1, 0, 0, 0, 22, 193,
3158
- 1, 0, 0, 0, 24, 195, 1, 0, 0, 0, 26, 200, 1, 0, 0, 0, 28, 212, 1, 0, 0, 0, 30, 234, 1, 0,
3159
- 0, 0, 32, 244, 1, 0, 0, 0, 34, 246, 1, 0, 0, 0, 36, 260, 1, 0, 0, 0, 38, 262, 1, 0, 0, 0,
3160
- 40, 270, 1, 0, 0, 0, 42, 272, 1, 0, 0, 0, 44, 282, 1, 0, 0, 0, 46, 284, 1, 0, 0, 0, 48, 288,
3161
- 1, 0, 0, 0, 50, 315, 1, 0, 0, 0, 52, 317, 1, 0, 0, 0, 54, 321, 1, 0, 0, 0, 56, 341, 1, 0,
3162
- 0, 0, 58, 358, 1, 0, 0, 0, 60, 360, 1, 0, 0, 0, 62, 367, 1, 0, 0, 0, 64, 369, 1, 0, 0, 0,
3163
- 66, 389, 1, 0, 0, 0, 68, 420, 1, 0, 0, 0, 70, 422, 1, 0, 0, 0, 72, 437, 1, 0, 0, 0, 74, 440,
3164
- 1, 0, 0, 0, 76, 449, 1, 0, 0, 0, 78, 455, 1, 0, 0, 0, 80, 458, 1, 0, 0, 0, 82, 471, 1, 0,
3165
- 0, 0, 84, 484, 1, 0, 0, 0, 86, 495, 1, 0, 0, 0, 88, 499, 1, 0, 0, 0, 90, 518, 1, 0, 0, 0,
3166
- 92, 520, 1, 0, 0, 0, 94, 530, 1, 0, 0, 0, 96, 532, 1, 0, 0, 0, 98, 539, 1, 0, 0, 0, 100,
3167
- 542, 1, 0, 0, 0, 102, 545, 1, 0, 0, 0, 104, 107, 3, 2, 1, 0, 105, 107, 5, 45, 0, 0, 106,
3168
- 104, 1, 0, 0, 0, 106, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 108,
3169
- 109, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 111, 5, 0, 0, 1, 111, 1, 1, 0, 0, 0, 112, 130,
3170
- 3, 18, 9, 0, 113, 130, 3, 26, 13, 0, 114, 130, 3, 24, 12, 0, 115, 130, 3, 46, 23, 0, 116,
3171
- 130, 3, 52, 26, 0, 117, 130, 3, 8, 4, 0, 118, 130, 3, 54, 27, 0, 119, 130, 3, 44, 22,
3172
- 0, 120, 130, 3, 64, 32, 0, 121, 130, 3, 74, 37, 0, 122, 130, 3, 96, 48, 0, 123, 130,
3173
- 3, 100, 50, 0, 124, 130, 3, 102, 51, 0, 125, 130, 3, 70, 35, 0, 126, 130, 3, 34, 17,
3174
- 0, 127, 130, 3, 4, 2, 0, 128, 130, 3, 98, 49, 0, 129, 112, 1, 0, 0, 0, 129, 113, 1, 0,
3175
- 0, 0, 129, 114, 1, 0, 0, 0, 129, 115, 1, 0, 0, 0, 129, 116, 1, 0, 0, 0, 129, 117, 1, 0,
3176
- 0, 0, 129, 118, 1, 0, 0, 0, 129, 119, 1, 0, 0, 0, 129, 120, 1, 0, 0, 0, 129, 121, 1, 0,
3177
- 0, 0, 129, 122, 1, 0, 0, 0, 129, 123, 1, 0, 0, 0, 129, 124, 1, 0, 0, 0, 129, 125, 1, 0,
3178
- 0, 0, 129, 126, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 128, 1, 0, 0, 0, 130, 3, 1, 0, 0,
3179
- 0, 131, 133, 3, 6, 3, 0, 132, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0, 0, 134, 132, 1, 0, 0,
3180
- 0, 134, 135, 1, 0, 0, 0, 135, 5, 1, 0, 0, 0, 136, 137, 7, 0, 0, 0, 137, 138, 5, 1, 0, 0,
3181
- 138, 139, 5, 45, 0, 0, 139, 142, 5, 47, 0, 0, 140, 143, 5, 45, 0, 0, 141, 143, 3, 2, 1,
3182
- 0, 142, 140, 1, 0, 0, 0, 142, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 142, 1, 0, 0,
3183
- 0, 144, 145, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 147, 5, 48, 0, 0, 147, 7, 1, 0, 0, 0,
3184
- 148, 149, 3, 70, 35, 0, 149, 150, 5, 1, 0, 0, 150, 151, 5, 45, 0, 0, 151, 154, 5, 47,
3185
- 0, 0, 152, 155, 5, 45, 0, 0, 153, 155, 3, 10, 5, 0, 154, 152, 1, 0, 0, 0, 154, 153, 1,
3186
- 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 158, 1,
3187
- 0, 0, 0, 158, 159, 5, 48, 0, 0, 159, 9, 1, 0, 0, 0, 160, 161, 7, 1, 0, 0, 161, 162, 5, 1,
3188
- 0, 0, 162, 163, 3, 62, 31, 0, 163, 11, 1, 0, 0, 0, 164, 165, 5, 14, 0, 0, 165, 166, 7,
3189
- 2, 0, 0, 166, 13, 1, 0, 0, 0, 167, 168, 5, 37, 0, 0, 168, 171, 5, 1, 0, 0, 169, 172, 3,
3190
- 62, 31, 0, 170, 172, 5, 37, 0, 0, 171, 169, 1, 0, 0, 0, 171, 170, 1, 0, 0, 0, 172, 15,
3191
- 1, 0, 0, 0, 173, 176, 3, 56, 28, 0, 174, 176, 3, 46, 23, 0, 175, 173, 1, 0, 0, 0, 175,
3192
- 174, 1, 0, 0, 0, 176, 180, 1, 0, 0, 0, 177, 179, 3, 14, 7, 0, 178, 177, 1, 0, 0, 0, 179,
3193
- 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 184, 1, 0, 0, 0, 182,
3194
- 180, 1, 0, 0, 0, 183, 185, 3, 12, 6, 0, 184, 183, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185,
3195
- 17, 1, 0, 0, 0, 186, 187, 5, 15, 0, 0, 187, 188, 3, 16, 8, 0, 188, 19, 1, 0, 0, 0, 189,
3196
- 192, 3, 16, 8, 0, 190, 192, 3, 12, 6, 0, 191, 189, 1, 0, 0, 0, 191, 190, 1, 0, 0, 0, 192,
3197
- 21, 1, 0, 0, 0, 193, 194, 7, 2, 0, 0, 194, 23, 1, 0, 0, 0, 195, 198, 5, 16, 0, 0, 196, 199,
3198
- 3, 20, 10, 0, 197, 199, 5, 18, 0, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 25,
3199
- 1, 0, 0, 0, 200, 210, 5, 17, 0, 0, 201, 206, 3, 20, 10, 0, 202, 203, 5, 2, 0, 0, 203, 205,
3200
- 3, 20, 10, 0, 204, 202, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207,
3201
- 1, 0, 0, 0, 207, 211, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 211, 5, 18, 0, 0, 210, 201,
3202
- 1, 0, 0, 0, 210, 209, 1, 0, 0, 0, 211, 27, 1, 0, 0, 0, 212, 213, 5, 16, 0, 0, 213, 214,
3203
- 3, 20, 10, 0, 214, 215, 5, 17, 0, 0, 215, 220, 3, 20, 10, 0, 216, 217, 5, 2, 0, 0, 217,
3204
- 219, 3, 20, 10, 0, 218, 216, 1, 0, 0, 0, 219, 222, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220,
3205
- 221, 1, 0, 0, 0, 221, 223, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 223, 224, 5, 1, 0, 0, 224,
3206
- 225, 5, 45, 0, 0, 225, 228, 5, 47, 0, 0, 226, 229, 5, 45, 0, 0, 227, 229, 3, 30, 15, 0,
3207
- 228, 226, 1, 0, 0, 0, 228, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0,
3208
- 230, 231, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, 5, 48, 0, 0, 233, 29, 1, 0, 0, 0,
3209
- 234, 235, 3, 22, 11, 0, 235, 236, 5, 1, 0, 0, 236, 241, 3, 32, 16, 0, 237, 238, 5, 2,
3210
- 0, 0, 238, 240, 3, 32, 16, 0, 239, 237, 1, 0, 0, 0, 240, 243, 1, 0, 0, 0, 241, 239, 1,
3211
- 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 31, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 244, 245, 7, 3,
3212
- 0, 0, 245, 33, 1, 0, 0, 0, 246, 247, 3, 24, 12, 0, 247, 248, 5, 1, 0, 0, 248, 249, 5, 45,
3213
- 0, 0, 249, 252, 5, 47, 0, 0, 250, 253, 5, 45, 0, 0, 251, 253, 3, 36, 18, 0, 252, 250,
3214
- 1, 0, 0, 0, 252, 251, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255,
3215
- 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 257, 5, 48, 0, 0, 257, 35, 1, 0, 0, 0, 258, 261,
3216
- 3, 2, 1, 0, 259, 261, 3, 38, 19, 0, 260, 258, 1, 0, 0, 0, 260, 259, 1, 0, 0, 0, 261, 37,
3217
- 1, 0, 0, 0, 262, 263, 3, 22, 11, 0, 263, 266, 5, 1, 0, 0, 264, 267, 3, 40, 20, 0, 265,
3218
- 267, 3, 42, 21, 0, 266, 264, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 39, 1, 0, 0, 0, 268,
3219
- 271, 3, 2, 1, 0, 269, 271, 5, 35, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271,
3220
- 41, 1, 0, 0, 0, 272, 273, 5, 45, 0, 0, 273, 276, 5, 47, 0, 0, 274, 277, 5, 45, 0, 0, 275,
3221
- 277, 3, 2, 1, 0, 276, 274, 1, 0, 0, 0, 276, 275, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278,
3222
- 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 5, 48, 0, 0, 281,
3223
- 43, 1, 0, 0, 0, 282, 283, 5, 8, 0, 0, 283, 45, 1, 0, 0, 0, 284, 285, 3, 70, 35, 0, 285,
3224
- 286, 5, 3, 0, 0, 286, 287, 3, 56, 28, 0, 287, 47, 1, 0, 0, 0, 288, 289, 5, 37, 0, 0, 289,
3225
- 290, 5, 3, 0, 0, 290, 291, 3, 56, 28, 0, 291, 49, 1, 0, 0, 0, 292, 297, 3, 56, 28, 0, 293,
3226
- 294, 5, 2, 0, 0, 294, 296, 3, 56, 28, 0, 295, 293, 1, 0, 0, 0, 296, 299, 1, 0, 0, 0, 297,
3227
- 295, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 304, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 300,
3228
- 301, 5, 2, 0, 0, 301, 303, 3, 48, 24, 0, 302, 300, 1, 0, 0, 0, 303, 306, 1, 0, 0, 0, 304,
3229
- 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 316, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307,
3230
- 312, 3, 48, 24, 0, 308, 309, 5, 2, 0, 0, 309, 311, 3, 48, 24, 0, 310, 308, 1, 0, 0, 0,
3231
- 311, 314, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 316, 1, 0, 0, 0,
3232
- 314, 312, 1, 0, 0, 0, 315, 292, 1, 0, 0, 0, 315, 307, 1, 0, 0, 0, 316, 51, 1, 0, 0, 0, 317,
3233
- 318, 3, 70, 35, 0, 318, 319, 5, 3, 0, 0, 319, 320, 3, 56, 28, 0, 320, 53, 1, 0, 0, 0, 321,
3234
- 322, 5, 4, 0, 0, 322, 323, 5, 37, 0, 0, 323, 324, 5, 3, 0, 0, 324, 325, 3, 56, 28, 0, 325,
3235
- 55, 1, 0, 0, 0, 326, 327, 6, 28, -1, 0, 327, 328, 5, 33, 0, 0, 328, 329, 3, 56, 28, 0,
3236
- 329, 330, 5, 34, 0, 0, 330, 342, 1, 0, 0, 0, 331, 334, 3, 62, 31, 0, 332, 334, 3, 70,
3237
- 35, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 342, 1, 0, 0, 0, 335, 336, 3, 60,
3238
- 30, 0, 336, 337, 3, 56, 28, 7, 337, 342, 1, 0, 0, 0, 338, 342, 3, 80, 40, 0, 339, 342,
3239
- 3, 82, 41, 0, 340, 342, 3, 74, 37, 0, 341, 326, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341,
3240
- 335, 1, 0, 0, 0, 341, 338, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 340, 1, 0, 0, 0, 342,
3241
- 355, 1, 0, 0, 0, 343, 344, 10, 6, 0, 0, 344, 345, 7, 4, 0, 0, 345, 354, 3, 56, 28, 7, 346,
3242
- 347, 10, 5, 0, 0, 347, 348, 7, 5, 0, 0, 348, 354, 3, 56, 28, 6, 349, 350, 10, 4, 0, 0,
3243
- 350, 351, 3, 58, 29, 0, 351, 352, 3, 56, 28, 5, 352, 354, 1, 0, 0, 0, 353, 343, 1, 0,
3244
- 0, 0, 353, 346, 1, 0, 0, 0, 353, 349, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0,
3245
- 0, 0, 355, 356, 1, 0, 0, 0, 356, 57, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 359, 7, 6, 0,
3246
- 0, 359, 59, 1, 0, 0, 0, 360, 361, 7, 7, 0, 0, 361, 61, 1, 0, 0, 0, 362, 364, 5, 30, 0, 0,
3247
- 363, 362, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 368, 7, 8, 0, 0,
3248
- 366, 368, 3, 92, 46, 0, 367, 363, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 63, 1, 0, 0, 0,
3249
- 369, 370, 5, 22, 0, 0, 370, 371, 5, 37, 0, 0, 371, 373, 5, 33, 0, 0, 372, 374, 3, 68,
3250
- 34, 0, 373, 372, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 376, 5, 34,
3251
- 0, 0, 376, 377, 5, 1, 0, 0, 377, 378, 5, 45, 0, 0, 378, 381, 5, 47, 0, 0, 379, 382, 5,
3252
- 45, 0, 0, 380, 382, 3, 66, 33, 0, 381, 379, 1, 0, 0, 0, 381, 380, 1, 0, 0, 0, 382, 383,
3253
- 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 386,
3254
- 5, 48, 0, 0, 386, 65, 1, 0, 0, 0, 387, 390, 3, 2, 1, 0, 388, 390, 3, 78, 39, 0, 389, 387,
3255
- 1, 0, 0, 0, 389, 388, 1, 0, 0, 0, 390, 67, 1, 0, 0, 0, 391, 396, 5, 37, 0, 0, 392, 393,
3256
- 5, 2, 0, 0, 393, 395, 5, 37, 0, 0, 394, 392, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394,
3257
- 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 405, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 400,
3258
- 5, 2, 0, 0, 400, 401, 5, 37, 0, 0, 401, 402, 5, 3, 0, 0, 402, 404, 3, 62, 31, 0, 403, 399,
3259
- 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 421,
3260
- 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 408, 409, 5, 37, 0, 0, 409, 410, 5, 3, 0, 0, 410, 417,
3261
- 3, 62, 31, 0, 411, 412, 5, 2, 0, 0, 412, 413, 5, 37, 0, 0, 413, 414, 5, 3, 0, 0, 414, 416,
3262
- 3, 62, 31, 0, 415, 411, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 417, 418,
3263
- 1, 0, 0, 0, 418, 421, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 420, 391, 1, 0, 0, 0, 420, 408,
3264
- 1, 0, 0, 0, 421, 69, 1, 0, 0, 0, 422, 427, 5, 37, 0, 0, 423, 424, 5, 5, 0, 0, 424, 426,
3265
- 5, 37, 0, 0, 425, 423, 1, 0, 0, 0, 426, 429, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428,
3266
- 1, 0, 0, 0, 428, 71, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 430, 432, 5, 33, 0, 0, 431, 433,
3267
- 3, 50, 25, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 438,
3268
- 5, 34, 0, 0, 435, 436, 5, 5, 0, 0, 436, 438, 5, 37, 0, 0, 437, 430, 1, 0, 0, 0, 437, 435,
3269
- 1, 0, 0, 0, 438, 73, 1, 0, 0, 0, 439, 441, 3, 76, 38, 0, 440, 439, 1, 0, 0, 0, 440, 441,
3270
- 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 444, 5, 37, 0, 0, 443, 445, 3, 72, 36, 0, 444, 443,
3271
- 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 75, 1,
3272
- 0, 0, 0, 448, 450, 5, 29, 0, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 451, 1,
3273
- 0, 0, 0, 451, 453, 5, 31, 0, 0, 452, 454, 3, 56, 28, 0, 453, 452, 1, 0, 0, 0, 453, 454,
3274
- 1, 0, 0, 0, 454, 77, 1, 0, 0, 0, 455, 456, 5, 21, 0, 0, 456, 457, 3, 56, 28, 0, 457, 79,
3275
- 1, 0, 0, 0, 458, 459, 5, 10, 0, 0, 459, 460, 5, 11, 0, 0, 460, 461, 5, 1, 0, 0, 461, 462,
3276
- 5, 45, 0, 0, 462, 465, 5, 47, 0, 0, 463, 466, 5, 45, 0, 0, 464, 466, 3, 86, 43, 0, 465,
3277
- 463, 1, 0, 0, 0, 465, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467,
3278
- 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 5, 48, 0, 0, 470, 81, 1, 0, 0, 0, 471,
3279
- 472, 5, 10, 0, 0, 472, 473, 5, 12, 0, 0, 473, 474, 5, 1, 0, 0, 474, 475, 5, 45, 0, 0, 475,
3280
- 478, 5, 47, 0, 0, 476, 479, 5, 45, 0, 0, 477, 479, 3, 84, 42, 0, 478, 476, 1, 0, 0, 0,
3281
- 478, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0,
3282
- 481, 482, 1, 0, 0, 0, 482, 483, 5, 48, 0, 0, 483, 83, 1, 0, 0, 0, 484, 486, 7, 9, 0, 0,
3283
- 485, 487, 5, 1, 0, 0, 486, 485, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 493, 1, 0, 0, 0,
3284
- 488, 494, 3, 50, 25, 0, 489, 490, 5, 33, 0, 0, 490, 491, 3, 50, 25, 0, 491, 492, 5, 34,
3285
- 0, 0, 492, 494, 1, 0, 0, 0, 493, 488, 1, 0, 0, 0, 493, 489, 1, 0, 0, 0, 494, 85, 1, 0, 0,
3286
- 0, 495, 496, 3, 88, 44, 0, 496, 497, 5, 1, 0, 0, 497, 498, 3, 90, 45, 0, 498, 87, 1, 0,
3287
- 0, 0, 499, 500, 7, 10, 0, 0, 500, 89, 1, 0, 0, 0, 501, 502, 5, 45, 0, 0, 502, 505, 5, 47,
3288
- 0, 0, 503, 506, 5, 45, 0, 0, 504, 506, 3, 86, 43, 0, 505, 503, 1, 0, 0, 0, 505, 504, 1,
3289
- 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 1,
3290
- 0, 0, 0, 509, 519, 5, 48, 0, 0, 510, 515, 3, 56, 28, 0, 511, 512, 5, 2, 0, 0, 512, 514,
3291
- 3, 56, 28, 0, 513, 511, 1, 0, 0, 0, 514, 517, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 515, 516,
3292
- 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 518, 501, 1, 0, 0, 0, 518, 510,
3293
- 1, 0, 0, 0, 519, 91, 1, 0, 0, 0, 520, 521, 5, 6, 0, 0, 521, 522, 5, 38, 0, 0, 522, 523,
3294
- 5, 7, 0, 0, 523, 93, 1, 0, 0, 0, 524, 527, 5, 37, 0, 0, 525, 528, 5, 38, 0, 0, 526, 528,
3295
- 3, 56, 28, 0, 527, 525, 1, 0, 0, 0, 527, 526, 1, 0, 0, 0, 528, 531, 1, 0, 0, 0, 529, 531,
3296
- 5, 37, 0, 0, 530, 524, 1, 0, 0, 0, 530, 529, 1, 0, 0, 0, 531, 95, 1, 0, 0, 0, 532, 536,
3297
- 5, 13, 0, 0, 533, 535, 3, 94, 47, 0, 534, 533, 1, 0, 0, 0, 535, 538, 1, 0, 0, 0, 536, 534,
3298
- 1, 0, 0, 0, 536, 537, 1, 0, 0, 0, 537, 97, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 539, 540, 5,
3299
- 18, 0, 0, 540, 541, 5, 37, 0, 0, 541, 99, 1, 0, 0, 0, 542, 543, 5, 23, 0, 0, 543, 544,
3300
- 5, 37, 0, 0, 544, 101, 1, 0, 0, 0, 545, 546, 5, 26, 0, 0, 546, 547, 5, 1, 0, 0, 547, 548,
3301
- 5, 45, 0, 0, 548, 551, 5, 47, 0, 0, 549, 552, 5, 45, 0, 0, 550, 552, 3, 2, 1, 0, 551, 549,
3302
- 1, 0, 0, 0, 551, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554,
3303
- 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 48, 0, 0, 556, 103, 1, 0, 0, 0, 67, 106,
3304
- 108, 129, 134, 142, 144, 154, 156, 171, 175, 180, 184, 191, 198, 206, 210, 220,
3305
- 228, 230, 241, 252, 254, 260, 266, 270, 276, 278, 297, 304, 312, 315, 333, 341,
3306
- 353, 355, 363, 367, 373, 381, 383, 389, 396, 405, 417, 420, 427, 432, 437, 440,
3307
- 446, 449, 453, 465, 467, 478, 480, 486, 493, 505, 507, 515, 518, 527, 530, 536,
3308
- 551, 553
3309
- ];
3310
- static __ATN;
3311
- static get _ATN() {
3312
- if (!CircuitScriptParser.__ATN) {
3313
- CircuitScriptParser.__ATN = new antlr.ATNDeserializer().deserialize(CircuitScriptParser._serializedATN);
3314
- }
3315
- return CircuitScriptParser.__ATN;
3316
- }
3317
- static vocabulary = new antlr.Vocabulary(CircuitScriptParser.literalNames, CircuitScriptParser.symbolicNames, []);
3169
+ if_expr() {
3170
+ let localContext = new If_exprContext(this.context, this.state);
3171
+ this.enterRule(localContext, 106, CircuitScriptParser.RULE_if_expr);
3172
+ let _la;
3173
+ try {
3174
+ let alternative;
3175
+ this.enterOuterAlt(localContext, 1);
3176
+ {
3177
+ this.state = 572;
3178
+ this.match(CircuitScriptParser.If);
3179
+ this.state = 573;
3180
+ this.data_expr(0);
3181
+ this.state = 574;
3182
+ this.match(CircuitScriptParser.T__0);
3183
+ this.state = 575;
3184
+ this.match(CircuitScriptParser.NEWLINE);
3185
+ this.state = 576;
3186
+ this.match(CircuitScriptParser.INDENT);
3187
+ this.state = 579;
3188
+ this.errorHandler.sync(this);
3189
+ _la = this.tokenStream.LA(1);
3190
+ do {
3191
+ {
3192
+ this.state = 579;
3193
+ this.errorHandler.sync(this);
3194
+ switch (this.tokenStream.LA(1)) {
3195
+ case CircuitScriptParser.NEWLINE:
3196
+ {
3197
+ this.state = 577;
3198
+ this.match(CircuitScriptParser.NEWLINE);
3199
+ }
3200
+ break;
3201
+ case CircuitScriptParser.T__3:
3202
+ case CircuitScriptParser.Break:
3203
+ case CircuitScriptParser.Branch:
3204
+ case CircuitScriptParser.Wire:
3205
+ case CircuitScriptParser.Add:
3206
+ case CircuitScriptParser.At:
3207
+ case CircuitScriptParser.To:
3208
+ case CircuitScriptParser.Point:
3209
+ case CircuitScriptParser.Join:
3210
+ case CircuitScriptParser.Parallel:
3211
+ case CircuitScriptParser.Define:
3212
+ case CircuitScriptParser.Import:
3213
+ case CircuitScriptParser.If:
3214
+ case CircuitScriptParser.Frame:
3215
+ case CircuitScriptParser.Addition:
3216
+ case CircuitScriptParser.Divide:
3217
+ case CircuitScriptParser.ID:
3218
+ {
3219
+ this.state = 578;
3220
+ this.expression();
3221
+ }
3222
+ break;
3223
+ default:
3224
+ throw new antlr.NoViableAltException(this);
3225
+ }
3226
+ }
3227
+ this.state = 581;
3228
+ this.errorHandler.sync(this);
3229
+ _la = this.tokenStream.LA(1);
3230
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3231
+ this.state = 583;
3232
+ this.match(CircuitScriptParser.DEDENT);
3233
+ this.state = 587;
3234
+ this.errorHandler.sync(this);
3235
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 69, this.context);
3236
+ while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3237
+ if (alternative === 1) {
3238
+ {
3239
+ {
3240
+ this.state = 584;
3241
+ this.if_inner_expr();
3242
+ }
3243
+ }
3244
+ }
3245
+ this.state = 589;
3246
+ this.errorHandler.sync(this);
3247
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 69, this.context);
3248
+ }
3249
+ this.state = 591;
3250
+ this.errorHandler.sync(this);
3251
+ _la = this.tokenStream.LA(1);
3252
+ if (_la === 25) {
3253
+ {
3254
+ this.state = 590;
3255
+ this.else_expr();
3256
+ }
3257
+ }
3258
+ }
3259
+ }
3260
+ catch (re) {
3261
+ if (re instanceof antlr.RecognitionException) {
3262
+ this.errorHandler.reportError(this, re);
3263
+ this.errorHandler.recover(this, re);
3264
+ }
3265
+ else {
3266
+ throw re;
3267
+ }
3268
+ }
3269
+ finally {
3270
+ this.exitRule();
3271
+ }
3272
+ return localContext;
3273
+ }
3274
+ if_inner_expr() {
3275
+ let localContext = new If_inner_exprContext(this.context, this.state);
3276
+ this.enterRule(localContext, 108, CircuitScriptParser.RULE_if_inner_expr);
3277
+ let _la;
3278
+ try {
3279
+ this.enterOuterAlt(localContext, 1);
3280
+ {
3281
+ this.state = 593;
3282
+ this.match(CircuitScriptParser.Else);
3283
+ this.state = 594;
3284
+ this.match(CircuitScriptParser.If);
3285
+ this.state = 595;
3286
+ this.data_expr(0);
3287
+ this.state = 596;
3288
+ this.match(CircuitScriptParser.T__0);
3289
+ this.state = 597;
3290
+ this.match(CircuitScriptParser.NEWLINE);
3291
+ this.state = 598;
3292
+ this.match(CircuitScriptParser.INDENT);
3293
+ this.state = 601;
3294
+ this.errorHandler.sync(this);
3295
+ _la = this.tokenStream.LA(1);
3296
+ do {
3297
+ {
3298
+ this.state = 601;
3299
+ this.errorHandler.sync(this);
3300
+ switch (this.tokenStream.LA(1)) {
3301
+ case CircuitScriptParser.NEWLINE:
3302
+ {
3303
+ this.state = 599;
3304
+ this.match(CircuitScriptParser.NEWLINE);
3305
+ }
3306
+ break;
3307
+ case CircuitScriptParser.T__3:
3308
+ case CircuitScriptParser.Break:
3309
+ case CircuitScriptParser.Branch:
3310
+ case CircuitScriptParser.Wire:
3311
+ case CircuitScriptParser.Add:
3312
+ case CircuitScriptParser.At:
3313
+ case CircuitScriptParser.To:
3314
+ case CircuitScriptParser.Point:
3315
+ case CircuitScriptParser.Join:
3316
+ case CircuitScriptParser.Parallel:
3317
+ case CircuitScriptParser.Define:
3318
+ case CircuitScriptParser.Import:
3319
+ case CircuitScriptParser.If:
3320
+ case CircuitScriptParser.Frame:
3321
+ case CircuitScriptParser.Addition:
3322
+ case CircuitScriptParser.Divide:
3323
+ case CircuitScriptParser.ID:
3324
+ {
3325
+ this.state = 600;
3326
+ this.expression();
3327
+ }
3328
+ break;
3329
+ default:
3330
+ throw new antlr.NoViableAltException(this);
3331
+ }
3332
+ }
3333
+ this.state = 603;
3334
+ this.errorHandler.sync(this);
3335
+ _la = this.tokenStream.LA(1);
3336
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3337
+ this.state = 605;
3338
+ this.match(CircuitScriptParser.DEDENT);
3339
+ }
3340
+ }
3341
+ catch (re) {
3342
+ if (re instanceof antlr.RecognitionException) {
3343
+ this.errorHandler.reportError(this, re);
3344
+ this.errorHandler.recover(this, re);
3345
+ }
3346
+ else {
3347
+ throw re;
3348
+ }
3349
+ }
3350
+ finally {
3351
+ this.exitRule();
3352
+ }
3353
+ return localContext;
3354
+ }
3355
+ else_expr() {
3356
+ let localContext = new Else_exprContext(this.context, this.state);
3357
+ this.enterRule(localContext, 110, CircuitScriptParser.RULE_else_expr);
3358
+ let _la;
3359
+ try {
3360
+ this.enterOuterAlt(localContext, 1);
3361
+ {
3362
+ this.state = 607;
3363
+ this.match(CircuitScriptParser.Else);
3364
+ this.state = 608;
3365
+ this.match(CircuitScriptParser.T__0);
3366
+ this.state = 609;
3367
+ this.match(CircuitScriptParser.NEWLINE);
3368
+ this.state = 610;
3369
+ this.match(CircuitScriptParser.INDENT);
3370
+ this.state = 613;
3371
+ this.errorHandler.sync(this);
3372
+ _la = this.tokenStream.LA(1);
3373
+ do {
3374
+ {
3375
+ this.state = 613;
3376
+ this.errorHandler.sync(this);
3377
+ switch (this.tokenStream.LA(1)) {
3378
+ case CircuitScriptParser.NEWLINE:
3379
+ {
3380
+ this.state = 611;
3381
+ this.match(CircuitScriptParser.NEWLINE);
3382
+ }
3383
+ break;
3384
+ case CircuitScriptParser.T__3:
3385
+ case CircuitScriptParser.Break:
3386
+ case CircuitScriptParser.Branch:
3387
+ case CircuitScriptParser.Wire:
3388
+ case CircuitScriptParser.Add:
3389
+ case CircuitScriptParser.At:
3390
+ case CircuitScriptParser.To:
3391
+ case CircuitScriptParser.Point:
3392
+ case CircuitScriptParser.Join:
3393
+ case CircuitScriptParser.Parallel:
3394
+ case CircuitScriptParser.Define:
3395
+ case CircuitScriptParser.Import:
3396
+ case CircuitScriptParser.If:
3397
+ case CircuitScriptParser.Frame:
3398
+ case CircuitScriptParser.Addition:
3399
+ case CircuitScriptParser.Divide:
3400
+ case CircuitScriptParser.ID:
3401
+ {
3402
+ this.state = 612;
3403
+ this.expression();
3404
+ }
3405
+ break;
3406
+ default:
3407
+ throw new antlr.NoViableAltException(this);
3408
+ }
3409
+ }
3410
+ this.state = 615;
3411
+ this.errorHandler.sync(this);
3412
+ _la = this.tokenStream.LA(1);
3413
+ } while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 165651216) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 65797) !== 0));
3414
+ this.state = 617;
3415
+ this.match(CircuitScriptParser.DEDENT);
3416
+ }
3417
+ }
3418
+ catch (re) {
3419
+ if (re instanceof antlr.RecognitionException) {
3420
+ this.errorHandler.reportError(this, re);
3421
+ this.errorHandler.recover(this, re);
3422
+ }
3423
+ else {
3424
+ throw re;
3425
+ }
3426
+ }
3427
+ finally {
3428
+ this.exitRule();
3429
+ }
3430
+ return localContext;
3431
+ }
3432
+ sempred(localContext, ruleIndex, predIndex) {
3433
+ switch (ruleIndex) {
3434
+ case 28:
3435
+ return this.data_expr_sempred(localContext, predIndex);
3436
+ }
3437
+ return true;
3438
+ }
3439
+ data_expr_sempred(localContext, predIndex) {
3440
+ switch (predIndex) {
3441
+ case 0:
3442
+ return this.precpred(this.context, 7);
3443
+ case 1:
3444
+ return this.precpred(this.context, 6);
3445
+ case 2:
3446
+ return this.precpred(this.context, 5);
3447
+ case 3:
3448
+ return this.precpred(this.context, 4);
3449
+ }
3450
+ return true;
3451
+ }
3452
+ static _serializedATN = [
3453
+ 4, 1, 55, 620, 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,
3454
+ 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,
3455
+ 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,
3456
+ 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,
3457
+ 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33,
3458
+ 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,
3459
+ 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,
3460
+ 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,
3461
+ 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 1, 0, 1, 0, 4, 0, 115, 8, 0, 11, 0, 12, 0, 116,
3462
+ 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, 1, 1, 1, 1, 1, 1, 1,
3463
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 139, 8, 1, 1, 2, 4, 2, 142, 8, 2, 11, 2, 12, 2, 143, 1, 3, 1,
3464
+ 3, 1, 3, 1, 3, 1, 3, 1, 3, 4, 3, 152, 8, 3, 11, 3, 12, 3, 153, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4,
3465
+ 1, 4, 1, 4, 1, 4, 4, 4, 164, 8, 4, 11, 4, 12, 4, 165, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1,
3466
+ 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 181, 8, 7, 1, 8, 1, 8, 3, 8, 185, 8, 8, 1, 8, 5,
3467
+ 8, 188, 8, 8, 10, 8, 12, 8, 191, 9, 8, 1, 8, 3, 8, 194, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10,
3468
+ 3, 10, 201, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 3, 12, 208, 8, 12, 1, 13, 1, 13, 1,
3469
+ 13, 1, 13, 5, 13, 214, 8, 13, 10, 13, 12, 13, 217, 9, 13, 1, 13, 3, 13, 220, 8, 13, 1,
3470
+ 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 228, 8, 14, 10, 14, 12, 14, 231, 9, 14, 1,
3471
+ 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 238, 8, 14, 11, 14, 12, 14, 239, 1, 14, 1, 14, 1,
3472
+ 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 249, 8, 15, 10, 15, 12, 15, 252, 9, 15, 1, 16, 1,
3473
+ 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 262, 8, 17, 11, 17, 12, 17, 263, 1,
3474
+ 17, 1, 17, 1, 18, 1, 18, 3, 18, 270, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 276, 8, 19,
3475
+ 1, 20, 1, 20, 3, 20, 280, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 4, 21, 286, 8, 21, 11, 21,
3476
+ 12, 21, 287, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24,
3477
+ 1, 24, 1, 25, 1, 25, 1, 25, 5, 25, 305, 8, 25, 10, 25, 12, 25, 308, 9, 25, 1, 25, 1, 25,
3478
+ 5, 25, 312, 8, 25, 10, 25, 12, 25, 315, 9, 25, 1, 25, 1, 25, 1, 25, 5, 25, 320, 8, 25,
3479
+ 10, 25, 12, 25, 323, 9, 25, 3, 25, 325, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27,
3480
+ 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 343, 8, 28,
3481
+ 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 351, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28,
3482
+ 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 366, 8, 28, 10, 28,
3483
+ 12, 28, 369, 9, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 3, 31, 376, 8, 31, 1, 31, 1, 31,
3484
+ 3, 31, 380, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 386, 8, 32, 1, 32, 1, 32, 1, 32, 1,
3485
+ 32, 1, 32, 1, 32, 4, 32, 394, 8, 32, 11, 32, 12, 32, 395, 1, 32, 1, 32, 1, 33, 1, 33, 3,
3486
+ 33, 402, 8, 33, 1, 34, 1, 34, 1, 34, 5, 34, 407, 8, 34, 10, 34, 12, 34, 410, 9, 34, 1,
3487
+ 34, 1, 34, 1, 34, 1, 34, 5, 34, 416, 8, 34, 10, 34, 12, 34, 419, 9, 34, 1, 34, 1, 34, 1,
3488
+ 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 428, 8, 34, 10, 34, 12, 34, 431, 9, 34, 3, 34, 433,
3489
+ 8, 34, 1, 35, 1, 35, 1, 35, 5, 35, 438, 8, 35, 10, 35, 12, 35, 441, 9, 35, 1, 36, 1, 36,
3490
+ 3, 36, 445, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 450, 8, 36, 1, 37, 3, 37, 453, 8, 37, 1,
3491
+ 37, 1, 37, 4, 37, 457, 8, 37, 11, 37, 12, 37, 458, 1, 38, 3, 38, 462, 8, 38, 1, 38, 1,
3492
+ 38, 3, 38, 466, 8, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1,
3493
+ 40, 4, 40, 478, 8, 40, 11, 40, 12, 40, 479, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1,
3494
+ 41, 1, 41, 1, 41, 4, 41, 491, 8, 41, 11, 41, 12, 41, 492, 1, 41, 1, 41, 1, 42, 1, 42, 1,
3495
+ 42, 1, 42, 4, 42, 501, 8, 42, 11, 42, 12, 42, 502, 1, 42, 1, 42, 1, 43, 1, 43, 3, 43, 509,
3496
+ 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 517, 8, 43, 1, 44, 1, 44, 1, 44,
3497
+ 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 529, 8, 46, 10, 46, 12, 46, 532,
3498
+ 9, 46, 3, 46, 534, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 3, 48, 543, 8,
3499
+ 48, 1, 48, 3, 48, 546, 8, 48, 1, 49, 1, 49, 5, 49, 550, 8, 49, 10, 49, 12, 49, 553, 9,
3500
+ 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 4,
3501
+ 52, 567, 8, 52, 11, 52, 12, 52, 568, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1,
3502
+ 53, 1, 53, 4, 53, 580, 8, 53, 11, 53, 12, 53, 581, 1, 53, 1, 53, 5, 53, 586, 8, 53, 10,
3503
+ 53, 12, 53, 589, 9, 53, 1, 53, 3, 53, 592, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1,
3504
+ 54, 1, 54, 1, 54, 4, 54, 602, 8, 54, 11, 54, 12, 54, 603, 1, 54, 1, 54, 1, 55, 1, 55, 1,
3505
+ 55, 1, 55, 1, 55, 1, 55, 4, 55, 614, 8, 55, 11, 55, 12, 55, 615, 1, 55, 1, 55, 1, 55, 0,
3506
+ 1, 56, 56, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
3507
+ 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84,
3508
+ 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 0, 12, 2, 0, 9, 9, 18, 20,
3509
+ 1, 0, 44, 45, 2, 0, 45, 45, 48, 48, 2, 0, 42, 42, 45, 45, 1, 0, 38, 39, 1, 0, 36, 37, 1,
3510
+ 0, 34, 35, 1, 0, 28, 33, 2, 0, 26, 26, 37, 37, 2, 0, 43, 43, 45, 49, 2, 0, 14, 14, 44, 44,
3511
+ 2, 0, 44, 45, 48, 48, 661, 0, 114, 1, 0, 0, 0, 2, 138, 1, 0, 0, 0, 4, 141, 1, 0, 0, 0, 6,
3512
+ 145, 1, 0, 0, 0, 8, 157, 1, 0, 0, 0, 10, 169, 1, 0, 0, 0, 12, 173, 1, 0, 0, 0, 14, 176, 1,
3513
+ 0, 0, 0, 16, 184, 1, 0, 0, 0, 18, 195, 1, 0, 0, 0, 20, 200, 1, 0, 0, 0, 22, 202, 1, 0, 0,
3514
+ 0, 24, 204, 1, 0, 0, 0, 26, 209, 1, 0, 0, 0, 28, 221, 1, 0, 0, 0, 30, 243, 1, 0, 0, 0, 32,
3515
+ 253, 1, 0, 0, 0, 34, 255, 1, 0, 0, 0, 36, 269, 1, 0, 0, 0, 38, 271, 1, 0, 0, 0, 40, 279,
3516
+ 1, 0, 0, 0, 42, 281, 1, 0, 0, 0, 44, 291, 1, 0, 0, 0, 46, 293, 1, 0, 0, 0, 48, 297, 1, 0,
3517
+ 0, 0, 50, 324, 1, 0, 0, 0, 52, 326, 1, 0, 0, 0, 54, 330, 1, 0, 0, 0, 56, 350, 1, 0, 0, 0,
3518
+ 58, 370, 1, 0, 0, 0, 60, 372, 1, 0, 0, 0, 62, 379, 1, 0, 0, 0, 64, 381, 1, 0, 0, 0, 66, 401,
3519
+ 1, 0, 0, 0, 68, 432, 1, 0, 0, 0, 70, 434, 1, 0, 0, 0, 72, 449, 1, 0, 0, 0, 74, 452, 1, 0,
3520
+ 0, 0, 76, 461, 1, 0, 0, 0, 78, 467, 1, 0, 0, 0, 80, 470, 1, 0, 0, 0, 82, 483, 1, 0, 0, 0,
3521
+ 84, 496, 1, 0, 0, 0, 86, 506, 1, 0, 0, 0, 88, 518, 1, 0, 0, 0, 90, 522, 1, 0, 0, 0, 92, 533,
3522
+ 1, 0, 0, 0, 94, 535, 1, 0, 0, 0, 96, 545, 1, 0, 0, 0, 98, 547, 1, 0, 0, 0, 100, 554, 1, 0,
3523
+ 0, 0, 102, 557, 1, 0, 0, 0, 104, 560, 1, 0, 0, 0, 106, 572, 1, 0, 0, 0, 108, 593, 1, 0,
3524
+ 0, 0, 110, 607, 1, 0, 0, 0, 112, 115, 3, 2, 1, 0, 113, 115, 5, 52, 0, 0, 114, 112, 1, 0,
3525
+ 0, 0, 114, 113, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 116, 117, 1, 0,
3526
+ 0, 0, 117, 118, 1, 0, 0, 0, 118, 119, 5, 0, 0, 1, 119, 1, 1, 0, 0, 0, 120, 139, 3, 18, 9,
3527
+ 0, 121, 139, 3, 26, 13, 0, 122, 139, 3, 24, 12, 0, 123, 139, 3, 46, 23, 0, 124, 139,
3528
+ 3, 52, 26, 0, 125, 139, 3, 8, 4, 0, 126, 139, 3, 54, 27, 0, 127, 139, 3, 44, 22, 0, 128,
3529
+ 139, 3, 64, 32, 0, 129, 139, 3, 74, 37, 0, 130, 139, 3, 98, 49, 0, 131, 139, 3, 102,
3530
+ 51, 0, 132, 139, 3, 104, 52, 0, 133, 139, 3, 70, 35, 0, 134, 139, 3, 34, 17, 0, 135,
3531
+ 139, 3, 4, 2, 0, 136, 139, 3, 100, 50, 0, 137, 139, 3, 106, 53, 0, 138, 120, 1, 0, 0,
3532
+ 0, 138, 121, 1, 0, 0, 0, 138, 122, 1, 0, 0, 0, 138, 123, 1, 0, 0, 0, 138, 124, 1, 0, 0,
3533
+ 0, 138, 125, 1, 0, 0, 0, 138, 126, 1, 0, 0, 0, 138, 127, 1, 0, 0, 0, 138, 128, 1, 0, 0,
3534
+ 0, 138, 129, 1, 0, 0, 0, 138, 130, 1, 0, 0, 0, 138, 131, 1, 0, 0, 0, 138, 132, 1, 0, 0,
3535
+ 0, 138, 133, 1, 0, 0, 0, 138, 134, 1, 0, 0, 0, 138, 135, 1, 0, 0, 0, 138, 136, 1, 0, 0,
3536
+ 0, 138, 137, 1, 0, 0, 0, 139, 3, 1, 0, 0, 0, 140, 142, 3, 6, 3, 0, 141, 140, 1, 0, 0, 0,
3537
+ 142, 143, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 5, 1, 0, 0, 0, 145,
3538
+ 146, 7, 0, 0, 0, 146, 147, 5, 1, 0, 0, 147, 148, 5, 52, 0, 0, 148, 151, 5, 54, 0, 0, 149,
3539
+ 152, 5, 52, 0, 0, 150, 152, 3, 2, 1, 0, 151, 149, 1, 0, 0, 0, 151, 150, 1, 0, 0, 0, 152,
3540
+ 153, 1, 0, 0, 0, 153, 151, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155,
3541
+ 156, 5, 55, 0, 0, 156, 7, 1, 0, 0, 0, 157, 158, 3, 70, 35, 0, 158, 159, 5, 1, 0, 0, 159,
3542
+ 160, 5, 52, 0, 0, 160, 163, 5, 54, 0, 0, 161, 164, 5, 52, 0, 0, 162, 164, 3, 10, 5, 0,
3543
+ 163, 161, 1, 0, 0, 0, 163, 162, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 163, 1, 0, 0, 0,
3544
+ 165, 166, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 168, 5, 55, 0, 0, 168, 9, 1, 0, 0, 0, 169,
3545
+ 170, 7, 1, 0, 0, 170, 171, 5, 1, 0, 0, 171, 172, 3, 62, 31, 0, 172, 11, 1, 0, 0, 0, 173,
3546
+ 174, 5, 14, 0, 0, 174, 175, 7, 2, 0, 0, 175, 13, 1, 0, 0, 0, 176, 177, 5, 44, 0, 0, 177,
3547
+ 180, 5, 1, 0, 0, 178, 181, 3, 62, 31, 0, 179, 181, 5, 44, 0, 0, 180, 178, 1, 0, 0, 0, 180,
3548
+ 179, 1, 0, 0, 0, 181, 15, 1, 0, 0, 0, 182, 185, 3, 56, 28, 0, 183, 185, 3, 46, 23, 0, 184,
3549
+ 182, 1, 0, 0, 0, 184, 183, 1, 0, 0, 0, 185, 189, 1, 0, 0, 0, 186, 188, 3, 14, 7, 0, 187,
3550
+ 186, 1, 0, 0, 0, 188, 191, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190,
3551
+ 193, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 192, 194, 3, 12, 6, 0, 193, 192, 1, 0, 0, 0, 193,
3552
+ 194, 1, 0, 0, 0, 194, 17, 1, 0, 0, 0, 195, 196, 5, 15, 0, 0, 196, 197, 3, 16, 8, 0, 197,
3553
+ 19, 1, 0, 0, 0, 198, 201, 3, 16, 8, 0, 199, 201, 3, 12, 6, 0, 200, 198, 1, 0, 0, 0, 200,
3554
+ 199, 1, 0, 0, 0, 201, 21, 1, 0, 0, 0, 202, 203, 7, 2, 0, 0, 203, 23, 1, 0, 0, 0, 204, 207,
3555
+ 5, 16, 0, 0, 205, 208, 3, 20, 10, 0, 206, 208, 5, 18, 0, 0, 207, 205, 1, 0, 0, 0, 207,
3556
+ 206, 1, 0, 0, 0, 208, 25, 1, 0, 0, 0, 209, 219, 5, 17, 0, 0, 210, 215, 3, 20, 10, 0, 211,
3557
+ 212, 5, 2, 0, 0, 212, 214, 3, 20, 10, 0, 213, 211, 1, 0, 0, 0, 214, 217, 1, 0, 0, 0, 215,
3558
+ 213, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 220, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 218,
3559
+ 220, 5, 18, 0, 0, 219, 210, 1, 0, 0, 0, 219, 218, 1, 0, 0, 0, 220, 27, 1, 0, 0, 0, 221,
3560
+ 222, 5, 16, 0, 0, 222, 223, 3, 20, 10, 0, 223, 224, 5, 17, 0, 0, 224, 229, 3, 20, 10,
3561
+ 0, 225, 226, 5, 2, 0, 0, 226, 228, 3, 20, 10, 0, 227, 225, 1, 0, 0, 0, 228, 231, 1, 0,
3562
+ 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 232, 1, 0, 0, 0, 231, 229, 1, 0,
3563
+ 0, 0, 232, 233, 5, 1, 0, 0, 233, 234, 5, 52, 0, 0, 234, 237, 5, 54, 0, 0, 235, 238, 5,
3564
+ 52, 0, 0, 236, 238, 3, 30, 15, 0, 237, 235, 1, 0, 0, 0, 237, 236, 1, 0, 0, 0, 238, 239,
3565
+ 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 242,
3566
+ 5, 55, 0, 0, 242, 29, 1, 0, 0, 0, 243, 244, 3, 22, 11, 0, 244, 245, 5, 1, 0, 0, 245, 250,
3567
+ 3, 32, 16, 0, 246, 247, 5, 2, 0, 0, 247, 249, 3, 32, 16, 0, 248, 246, 1, 0, 0, 0, 249,
3568
+ 252, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251, 31, 1, 0, 0, 0, 252, 250,
3569
+ 1, 0, 0, 0, 253, 254, 7, 3, 0, 0, 254, 33, 1, 0, 0, 0, 255, 256, 3, 24, 12, 0, 256, 257,
3570
+ 5, 1, 0, 0, 257, 258, 5, 52, 0, 0, 258, 261, 5, 54, 0, 0, 259, 262, 5, 52, 0, 0, 260, 262,
3571
+ 3, 36, 18, 0, 261, 259, 1, 0, 0, 0, 261, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 261,
3572
+ 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 266, 5, 55, 0, 0, 266, 35,
3573
+ 1, 0, 0, 0, 267, 270, 3, 2, 1, 0, 268, 270, 3, 38, 19, 0, 269, 267, 1, 0, 0, 0, 269, 268,
3574
+ 1, 0, 0, 0, 270, 37, 1, 0, 0, 0, 271, 272, 3, 22, 11, 0, 272, 275, 5, 1, 0, 0, 273, 276,
3575
+ 3, 40, 20, 0, 274, 276, 3, 42, 21, 0, 275, 273, 1, 0, 0, 0, 275, 274, 1, 0, 0, 0, 276,
3576
+ 39, 1, 0, 0, 0, 277, 280, 3, 2, 1, 0, 278, 280, 5, 42, 0, 0, 279, 277, 1, 0, 0, 0, 279,
3577
+ 278, 1, 0, 0, 0, 280, 41, 1, 0, 0, 0, 281, 282, 5, 52, 0, 0, 282, 285, 5, 54, 0, 0, 283,
3578
+ 286, 5, 52, 0, 0, 284, 286, 3, 2, 1, 0, 285, 283, 1, 0, 0, 0, 285, 284, 1, 0, 0, 0, 286,
3579
+ 287, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289,
3580
+ 290, 5, 55, 0, 0, 290, 43, 1, 0, 0, 0, 291, 292, 5, 8, 0, 0, 292, 45, 1, 0, 0, 0, 293, 294,
3581
+ 3, 70, 35, 0, 294, 295, 5, 3, 0, 0, 295, 296, 3, 56, 28, 0, 296, 47, 1, 0, 0, 0, 297, 298,
3582
+ 5, 44, 0, 0, 298, 299, 5, 3, 0, 0, 299, 300, 3, 56, 28, 0, 300, 49, 1, 0, 0, 0, 301, 306,
3583
+ 3, 56, 28, 0, 302, 303, 5, 2, 0, 0, 303, 305, 3, 56, 28, 0, 304, 302, 1, 0, 0, 0, 305,
3584
+ 308, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 313, 1, 0, 0, 0, 308,
3585
+ 306, 1, 0, 0, 0, 309, 310, 5, 2, 0, 0, 310, 312, 3, 48, 24, 0, 311, 309, 1, 0, 0, 0, 312,
3586
+ 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 325, 1, 0, 0, 0, 315,
3587
+ 313, 1, 0, 0, 0, 316, 321, 3, 48, 24, 0, 317, 318, 5, 2, 0, 0, 318, 320, 3, 48, 24, 0,
3588
+ 319, 317, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0,
3589
+ 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 301, 1, 0, 0, 0, 324, 316, 1, 0, 0, 0,
3590
+ 325, 51, 1, 0, 0, 0, 326, 327, 3, 70, 35, 0, 327, 328, 5, 3, 0, 0, 328, 329, 3, 56, 28,
3591
+ 0, 329, 53, 1, 0, 0, 0, 330, 331, 5, 4, 0, 0, 331, 332, 5, 44, 0, 0, 332, 333, 5, 3, 0,
3592
+ 0, 333, 334, 3, 56, 28, 0, 334, 55, 1, 0, 0, 0, 335, 336, 6, 28, -1, 0, 336, 337, 5, 40,
3593
+ 0, 0, 337, 338, 3, 56, 28, 0, 338, 339, 5, 41, 0, 0, 339, 351, 1, 0, 0, 0, 340, 343, 3,
3594
+ 62, 31, 0, 341, 343, 3, 70, 35, 0, 342, 340, 1, 0, 0, 0, 342, 341, 1, 0, 0, 0, 343, 351,
3595
+ 1, 0, 0, 0, 344, 345, 3, 60, 30, 0, 345, 346, 3, 56, 28, 8, 346, 351, 1, 0, 0, 0, 347,
3596
+ 351, 3, 80, 40, 0, 348, 351, 3, 82, 41, 0, 349, 351, 3, 74, 37, 0, 350, 335, 1, 0, 0,
3597
+ 0, 350, 342, 1, 0, 0, 0, 350, 344, 1, 0, 0, 0, 350, 347, 1, 0, 0, 0, 350, 348, 1, 0, 0,
3598
+ 0, 350, 349, 1, 0, 0, 0, 351, 367, 1, 0, 0, 0, 352, 353, 10, 7, 0, 0, 353, 354, 7, 4, 0,
3599
+ 0, 354, 366, 3, 56, 28, 8, 355, 356, 10, 6, 0, 0, 356, 357, 7, 5, 0, 0, 357, 366, 3, 56,
3600
+ 28, 7, 358, 359, 10, 5, 0, 0, 359, 360, 3, 58, 29, 0, 360, 361, 3, 56, 28, 6, 361, 366,
3601
+ 1, 0, 0, 0, 362, 363, 10, 4, 0, 0, 363, 364, 7, 6, 0, 0, 364, 366, 3, 56, 28, 5, 365, 352,
3602
+ 1, 0, 0, 0, 365, 355, 1, 0, 0, 0, 365, 358, 1, 0, 0, 0, 365, 362, 1, 0, 0, 0, 366, 369,
3603
+ 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 57, 1, 0, 0, 0, 369, 367, 1,
3604
+ 0, 0, 0, 370, 371, 7, 7, 0, 0, 371, 59, 1, 0, 0, 0, 372, 373, 7, 8, 0, 0, 373, 61, 1, 0,
3605
+ 0, 0, 374, 376, 5, 37, 0, 0, 375, 374, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377, 1, 0,
3606
+ 0, 0, 377, 380, 7, 9, 0, 0, 378, 380, 3, 94, 47, 0, 379, 375, 1, 0, 0, 0, 379, 378, 1,
3607
+ 0, 0, 0, 380, 63, 1, 0, 0, 0, 381, 382, 5, 22, 0, 0, 382, 383, 5, 44, 0, 0, 383, 385, 5,
3608
+ 40, 0, 0, 384, 386, 3, 68, 34, 0, 385, 384, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 387,
3609
+ 1, 0, 0, 0, 387, 388, 5, 41, 0, 0, 388, 389, 5, 1, 0, 0, 389, 390, 5, 52, 0, 0, 390, 393,
3610
+ 5, 54, 0, 0, 391, 394, 5, 52, 0, 0, 392, 394, 3, 66, 33, 0, 393, 391, 1, 0, 0, 0, 393,
3611
+ 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396,
3612
+ 397, 1, 0, 0, 0, 397, 398, 5, 55, 0, 0, 398, 65, 1, 0, 0, 0, 399, 402, 3, 2, 1, 0, 400,
3613
+ 402, 3, 78, 39, 0, 401, 399, 1, 0, 0, 0, 401, 400, 1, 0, 0, 0, 402, 67, 1, 0, 0, 0, 403,
3614
+ 408, 5, 44, 0, 0, 404, 405, 5, 2, 0, 0, 405, 407, 5, 44, 0, 0, 406, 404, 1, 0, 0, 0, 407,
3615
+ 410, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 408, 409, 1, 0, 0, 0, 409, 417, 1, 0, 0, 0, 410,
3616
+ 408, 1, 0, 0, 0, 411, 412, 5, 2, 0, 0, 412, 413, 5, 44, 0, 0, 413, 414, 5, 3, 0, 0, 414,
3617
+ 416, 3, 62, 31, 0, 415, 411, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 417,
3618
+ 418, 1, 0, 0, 0, 418, 433, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 420, 421, 5, 44, 0, 0, 421,
3619
+ 422, 5, 3, 0, 0, 422, 429, 3, 62, 31, 0, 423, 424, 5, 2, 0, 0, 424, 425, 5, 44, 0, 0, 425,
3620
+ 426, 5, 3, 0, 0, 426, 428, 3, 62, 31, 0, 427, 423, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429,
3621
+ 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 433, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432,
3622
+ 403, 1, 0, 0, 0, 432, 420, 1, 0, 0, 0, 433, 69, 1, 0, 0, 0, 434, 439, 5, 44, 0, 0, 435,
3623
+ 436, 5, 5, 0, 0, 436, 438, 5, 44, 0, 0, 437, 435, 1, 0, 0, 0, 438, 441, 1, 0, 0, 0, 439,
3624
+ 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 71, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 442, 444,
3625
+ 5, 40, 0, 0, 443, 445, 3, 50, 25, 0, 444, 443, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 446,
3626
+ 1, 0, 0, 0, 446, 450, 5, 41, 0, 0, 447, 448, 5, 5, 0, 0, 448, 450, 5, 44, 0, 0, 449, 442,
3627
+ 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 450, 73, 1, 0, 0, 0, 451, 453, 3, 76, 38, 0, 452, 451,
3628
+ 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 456, 5, 44, 0, 0, 455, 457,
3629
+ 3, 72, 36, 0, 456, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, 459,
3630
+ 1, 0, 0, 0, 459, 75, 1, 0, 0, 0, 460, 462, 5, 36, 0, 0, 461, 460, 1, 0, 0, 0, 461, 462,
3631
+ 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 465, 5, 38, 0, 0, 464, 466, 3, 56, 28, 0, 465, 464,
3632
+ 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 77, 1, 0, 0, 0, 467, 468, 5, 21, 0, 0, 468, 469,
3633
+ 3, 56, 28, 0, 469, 79, 1, 0, 0, 0, 470, 471, 5, 10, 0, 0, 471, 472, 5, 11, 0, 0, 472, 473,
3634
+ 5, 1, 0, 0, 473, 474, 5, 52, 0, 0, 474, 477, 5, 54, 0, 0, 475, 478, 5, 52, 0, 0, 476, 478,
3635
+ 3, 88, 44, 0, 477, 475, 1, 0, 0, 0, 477, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 477,
3636
+ 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 482, 5, 55, 0, 0, 482, 81,
3637
+ 1, 0, 0, 0, 483, 484, 5, 10, 0, 0, 484, 485, 5, 12, 0, 0, 485, 486, 5, 1, 0, 0, 486, 487,
3638
+ 5, 52, 0, 0, 487, 490, 5, 54, 0, 0, 488, 491, 5, 52, 0, 0, 489, 491, 3, 86, 43, 0, 490,
3639
+ 488, 1, 0, 0, 0, 490, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492,
3640
+ 493, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 495, 5, 55, 0, 0, 495, 83, 1, 0, 0, 0, 496,
3641
+ 497, 5, 52, 0, 0, 497, 500, 5, 54, 0, 0, 498, 501, 5, 52, 0, 0, 499, 501, 3, 88, 44, 0,
3642
+ 500, 498, 1, 0, 0, 0, 500, 499, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0,
3643
+ 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 5, 55, 0, 0, 505, 85, 1, 0, 0, 0,
3644
+ 506, 508, 7, 10, 0, 0, 507, 509, 5, 1, 0, 0, 508, 507, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0,
3645
+ 509, 516, 1, 0, 0, 0, 510, 517, 3, 50, 25, 0, 511, 512, 5, 40, 0, 0, 512, 513, 3, 50,
3646
+ 25, 0, 513, 514, 5, 41, 0, 0, 514, 517, 1, 0, 0, 0, 515, 517, 3, 84, 42, 0, 516, 510,
3647
+ 1, 0, 0, 0, 516, 511, 1, 0, 0, 0, 516, 515, 1, 0, 0, 0, 517, 87, 1, 0, 0, 0, 518, 519, 3,
3648
+ 90, 45, 0, 519, 520, 5, 1, 0, 0, 520, 521, 3, 92, 46, 0, 521, 89, 1, 0, 0, 0, 522, 523,
3649
+ 7, 11, 0, 0, 523, 91, 1, 0, 0, 0, 524, 534, 3, 84, 42, 0, 525, 530, 3, 56, 28, 0, 526,
3650
+ 527, 5, 2, 0, 0, 527, 529, 3, 56, 28, 0, 528, 526, 1, 0, 0, 0, 529, 532, 1, 0, 0, 0, 530,
3651
+ 528, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 534, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 533,
3652
+ 524, 1, 0, 0, 0, 533, 525, 1, 0, 0, 0, 534, 93, 1, 0, 0, 0, 535, 536, 5, 6, 0, 0, 536, 537,
3653
+ 5, 45, 0, 0, 537, 538, 5, 7, 0, 0, 538, 95, 1, 0, 0, 0, 539, 542, 5, 44, 0, 0, 540, 543,
3654
+ 5, 45, 0, 0, 541, 543, 3, 56, 28, 0, 542, 540, 1, 0, 0, 0, 542, 541, 1, 0, 0, 0, 543, 546,
3655
+ 1, 0, 0, 0, 544, 546, 5, 44, 0, 0, 545, 539, 1, 0, 0, 0, 545, 544, 1, 0, 0, 0, 546, 97,
3656
+ 1, 0, 0, 0, 547, 551, 5, 13, 0, 0, 548, 550, 3, 96, 48, 0, 549, 548, 1, 0, 0, 0, 550, 553,
3657
+ 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 99, 1, 0, 0, 0, 553, 551, 1,
3658
+ 0, 0, 0, 554, 555, 5, 18, 0, 0, 555, 556, 5, 44, 0, 0, 556, 101, 1, 0, 0, 0, 557, 558,
3659
+ 5, 23, 0, 0, 558, 559, 5, 44, 0, 0, 559, 103, 1, 0, 0, 0, 560, 561, 5, 27, 0, 0, 561, 562,
3660
+ 5, 1, 0, 0, 562, 563, 5, 52, 0, 0, 563, 566, 5, 54, 0, 0, 564, 567, 5, 52, 0, 0, 565, 567,
3661
+ 3, 2, 1, 0, 566, 564, 1, 0, 0, 0, 566, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 566,
3662
+ 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 5, 55, 0, 0, 571, 105,
3663
+ 1, 0, 0, 0, 572, 573, 5, 24, 0, 0, 573, 574, 3, 56, 28, 0, 574, 575, 5, 1, 0, 0, 575, 576,
3664
+ 5, 52, 0, 0, 576, 579, 5, 54, 0, 0, 577, 580, 5, 52, 0, 0, 578, 580, 3, 2, 1, 0, 579, 577,
3665
+ 1, 0, 0, 0, 579, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581, 582,
3666
+ 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 587, 5, 55, 0, 0, 584, 586, 3, 108, 54, 0, 585,
3667
+ 584, 1, 0, 0, 0, 586, 589, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588,
3668
+ 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 590, 592, 3, 110, 55, 0, 591, 590, 1, 0, 0, 0, 591,
3669
+ 592, 1, 0, 0, 0, 592, 107, 1, 0, 0, 0, 593, 594, 5, 25, 0, 0, 594, 595, 5, 24, 0, 0, 595,
3670
+ 596, 3, 56, 28, 0, 596, 597, 5, 1, 0, 0, 597, 598, 5, 52, 0, 0, 598, 601, 5, 54, 0, 0,
3671
+ 599, 602, 5, 52, 0, 0, 600, 602, 3, 2, 1, 0, 601, 599, 1, 0, 0, 0, 601, 600, 1, 0, 0, 0,
3672
+ 602, 603, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0,
3673
+ 605, 606, 5, 55, 0, 0, 606, 109, 1, 0, 0, 0, 607, 608, 5, 25, 0, 0, 608, 609, 5, 1, 0,
3674
+ 0, 609, 610, 5, 52, 0, 0, 610, 613, 5, 54, 0, 0, 611, 614, 5, 52, 0, 0, 612, 614, 3, 2,
3675
+ 1, 0, 613, 611, 1, 0, 0, 0, 613, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 613, 1, 0,
3676
+ 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 5, 55, 0, 0, 618, 111, 1, 0,
3677
+ 0, 0, 75, 114, 116, 138, 143, 151, 153, 163, 165, 180, 184, 189, 193, 200, 207, 215,
3678
+ 219, 229, 237, 239, 250, 261, 263, 269, 275, 279, 285, 287, 306, 313, 321, 324,
3679
+ 342, 350, 365, 367, 375, 379, 385, 393, 395, 401, 408, 417, 429, 432, 439, 444,
3680
+ 449, 452, 458, 461, 465, 477, 479, 490, 492, 500, 502, 508, 516, 530, 533, 542,
3681
+ 545, 551, 566, 568, 579, 581, 587, 591, 601, 603, 613, 615
3682
+ ];
3683
+ static __ATN;
3684
+ static get _ATN() {
3685
+ if (!CircuitScriptParser.__ATN) {
3686
+ CircuitScriptParser.__ATN = new antlr.ATNDeserializer().deserialize(CircuitScriptParser._serializedATN);
3687
+ }
3688
+ return CircuitScriptParser.__ATN;
3689
+ }
3690
+ static vocabulary = new antlr.Vocabulary(CircuitScriptParser.literalNames, CircuitScriptParser.symbolicNames, []);
3318
3691
  get vocabulary() {
3319
3692
  return CircuitScriptParser.vocabulary;
3320
3693
  }
@@ -3408,6 +3781,9 @@ export class ExpressionContext extends antlr.ParserRuleContext {
3408
3781
  point_expr() {
3409
3782
  return this.getRuleContext(0, Point_exprContext);
3410
3783
  }
3784
+ if_expr() {
3785
+ return this.getRuleContext(0, If_exprContext);
3786
+ }
3411
3787
  get ruleIndex() {
3412
3788
  return CircuitScriptParser.RULE_expression;
3413
3789
  }
@@ -4210,6 +4586,32 @@ export class MultiplyExprContext extends Data_exprContext {
4210
4586
  }
4211
4587
  }
4212
4588
  }
4589
+ export class LogicalOperatorExprContext extends Data_exprContext {
4590
+ constructor(ctx) {
4591
+ super(ctx.parent, ctx.invokingState);
4592
+ super.copyFrom(ctx);
4593
+ }
4594
+ data_expr(i) {
4595
+ if (i === undefined) {
4596
+ return this.getRuleContexts(Data_exprContext);
4597
+ }
4598
+ return this.getRuleContext(i, Data_exprContext);
4599
+ }
4600
+ LogicalAnd() {
4601
+ return this.getToken(CircuitScriptParser.LogicalAnd, 0);
4602
+ }
4603
+ LogicalOr() {
4604
+ return this.getToken(CircuitScriptParser.LogicalOr, 0);
4605
+ }
4606
+ accept(visitor) {
4607
+ if (visitor.visitLogicalOperatorExpr) {
4608
+ return visitor.visitLogicalOperatorExpr(this);
4609
+ }
4610
+ else {
4611
+ return visitor.visitChildren(this);
4612
+ }
4613
+ }
4614
+ }
4213
4615
  export class DataExprContext extends Data_exprContext {
4214
4616
  constructor(ctx) {
4215
4617
  super(ctx.parent, ctx.invokingState);
@@ -4326,6 +4728,18 @@ export class Binary_operatorContext extends antlr.ParserRuleContext {
4326
4728
  NotEquals() {
4327
4729
  return this.getToken(CircuitScriptParser.NotEquals, 0);
4328
4730
  }
4731
+ GreaterThan() {
4732
+ return this.getToken(CircuitScriptParser.GreaterThan, 0);
4733
+ }
4734
+ GreatOrEqualThan() {
4735
+ return this.getToken(CircuitScriptParser.GreatOrEqualThan, 0);
4736
+ }
4737
+ LessThan() {
4738
+ return this.getToken(CircuitScriptParser.LessThan, 0);
4739
+ }
4740
+ LessOrEqualThan() {
4741
+ return this.getToken(CircuitScriptParser.LessOrEqualThan, 0);
4742
+ }
4329
4743
  get ruleIndex() {
4330
4744
  return CircuitScriptParser.RULE_binary_operator;
4331
4745
  }
@@ -4696,11 +5110,11 @@ export class Create_graphic_exprContext extends antlr.ParserRuleContext {
4696
5110
  DEDENT() {
4697
5111
  return this.getToken(CircuitScriptParser.DEDENT, 0);
4698
5112
  }
4699
- sub_expr(i) {
5113
+ graphic_expr(i) {
4700
5114
  if (i === undefined) {
4701
- return this.getRuleContexts(Sub_exprContext);
5115
+ return this.getRuleContexts(Graphic_exprContext);
4702
5116
  }
4703
- return this.getRuleContext(i, Sub_exprContext);
5117
+ return this.getRuleContext(i, Graphic_exprContext);
4704
5118
  }
4705
5119
  get ruleIndex() {
4706
5120
  return CircuitScriptParser.RULE_create_graphic_expr;
@@ -4714,7 +5128,43 @@ export class Create_graphic_exprContext extends antlr.ParserRuleContext {
4714
5128
  }
4715
5129
  }
4716
5130
  }
4717
- export class Sub_exprContext extends antlr.ParserRuleContext {
5131
+ export class Nested_properties_innerContext extends antlr.ParserRuleContext {
5132
+ constructor(parent, invokingState) {
5133
+ super(parent, invokingState);
5134
+ }
5135
+ NEWLINE(i) {
5136
+ if (i === undefined) {
5137
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5138
+ }
5139
+ else {
5140
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5141
+ }
5142
+ }
5143
+ INDENT() {
5144
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5145
+ }
5146
+ DEDENT() {
5147
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5148
+ }
5149
+ property_expr(i) {
5150
+ if (i === undefined) {
5151
+ return this.getRuleContexts(Property_exprContext);
5152
+ }
5153
+ return this.getRuleContext(i, Property_exprContext);
5154
+ }
5155
+ get ruleIndex() {
5156
+ return CircuitScriptParser.RULE_nested_properties_inner;
5157
+ }
5158
+ accept(visitor) {
5159
+ if (visitor.visitNested_properties_inner) {
5160
+ return visitor.visitNested_properties_inner(this);
5161
+ }
5162
+ else {
5163
+ return visitor.visitChildren(this);
5164
+ }
5165
+ }
5166
+ }
5167
+ export class Graphic_exprContext extends antlr.ParserRuleContext {
4718
5168
  _command;
4719
5169
  constructor(parent, invokingState) {
4720
5170
  super(parent, invokingState);
@@ -4734,12 +5184,15 @@ export class Sub_exprContext extends antlr.ParserRuleContext {
4734
5184
  CLOSE_PAREN() {
4735
5185
  return this.getToken(CircuitScriptParser.CLOSE_PAREN, 0);
4736
5186
  }
5187
+ nested_properties_inner() {
5188
+ return this.getRuleContext(0, Nested_properties_innerContext);
5189
+ }
4737
5190
  get ruleIndex() {
4738
- return CircuitScriptParser.RULE_sub_expr;
5191
+ return CircuitScriptParser.RULE_graphic_expr;
4739
5192
  }
4740
5193
  accept(visitor) {
4741
- if (visitor.visitSub_expr) {
4742
- return visitor.visitSub_expr(this);
5194
+ if (visitor.visitGraphic_expr) {
5195
+ return visitor.visitGraphic_expr(this);
4743
5196
  }
4744
5197
  else {
4745
5198
  return visitor.visitChildren(this);
@@ -4829,25 +5282,8 @@ export class Nested_propertiesContext extends Property_value_exprContext {
4829
5282
  super(ctx.parent, ctx.invokingState);
4830
5283
  super.copyFrom(ctx);
4831
5284
  }
4832
- NEWLINE(i) {
4833
- if (i === undefined) {
4834
- return this.getTokens(CircuitScriptParser.NEWLINE);
4835
- }
4836
- else {
4837
- return this.getToken(CircuitScriptParser.NEWLINE, i);
4838
- }
4839
- }
4840
- INDENT() {
4841
- return this.getToken(CircuitScriptParser.INDENT, 0);
4842
- }
4843
- DEDENT() {
4844
- return this.getToken(CircuitScriptParser.DEDENT, 0);
4845
- }
4846
- property_expr(i) {
4847
- if (i === undefined) {
4848
- return this.getRuleContexts(Property_exprContext);
4849
- }
4850
- return this.getRuleContext(i, Property_exprContext);
5285
+ nested_properties_inner() {
5286
+ return this.getRuleContext(0, Nested_properties_innerContext);
4851
5287
  }
4852
5288
  accept(visitor) {
4853
5289
  if (visitor.visitNested_properties) {
@@ -5036,3 +5472,138 @@ export class Frame_exprContext extends antlr.ParserRuleContext {
5036
5472
  }
5037
5473
  }
5038
5474
  }
5475
+ export class If_exprContext extends antlr.ParserRuleContext {
5476
+ constructor(parent, invokingState) {
5477
+ super(parent, invokingState);
5478
+ }
5479
+ If() {
5480
+ return this.getToken(CircuitScriptParser.If, 0);
5481
+ }
5482
+ data_expr() {
5483
+ return this.getRuleContext(0, Data_exprContext);
5484
+ }
5485
+ NEWLINE(i) {
5486
+ if (i === undefined) {
5487
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5488
+ }
5489
+ else {
5490
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5491
+ }
5492
+ }
5493
+ INDENT() {
5494
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5495
+ }
5496
+ DEDENT() {
5497
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5498
+ }
5499
+ expression(i) {
5500
+ if (i === undefined) {
5501
+ return this.getRuleContexts(ExpressionContext);
5502
+ }
5503
+ return this.getRuleContext(i, ExpressionContext);
5504
+ }
5505
+ if_inner_expr(i) {
5506
+ if (i === undefined) {
5507
+ return this.getRuleContexts(If_inner_exprContext);
5508
+ }
5509
+ return this.getRuleContext(i, If_inner_exprContext);
5510
+ }
5511
+ else_expr() {
5512
+ return this.getRuleContext(0, Else_exprContext);
5513
+ }
5514
+ get ruleIndex() {
5515
+ return CircuitScriptParser.RULE_if_expr;
5516
+ }
5517
+ accept(visitor) {
5518
+ if (visitor.visitIf_expr) {
5519
+ return visitor.visitIf_expr(this);
5520
+ }
5521
+ else {
5522
+ return visitor.visitChildren(this);
5523
+ }
5524
+ }
5525
+ }
5526
+ export class If_inner_exprContext extends antlr.ParserRuleContext {
5527
+ constructor(parent, invokingState) {
5528
+ super(parent, invokingState);
5529
+ }
5530
+ Else() {
5531
+ return this.getToken(CircuitScriptParser.Else, 0);
5532
+ }
5533
+ If() {
5534
+ return this.getToken(CircuitScriptParser.If, 0);
5535
+ }
5536
+ data_expr() {
5537
+ return this.getRuleContext(0, Data_exprContext);
5538
+ }
5539
+ NEWLINE(i) {
5540
+ if (i === undefined) {
5541
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5542
+ }
5543
+ else {
5544
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5545
+ }
5546
+ }
5547
+ INDENT() {
5548
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5549
+ }
5550
+ DEDENT() {
5551
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5552
+ }
5553
+ expression(i) {
5554
+ if (i === undefined) {
5555
+ return this.getRuleContexts(ExpressionContext);
5556
+ }
5557
+ return this.getRuleContext(i, ExpressionContext);
5558
+ }
5559
+ get ruleIndex() {
5560
+ return CircuitScriptParser.RULE_if_inner_expr;
5561
+ }
5562
+ accept(visitor) {
5563
+ if (visitor.visitIf_inner_expr) {
5564
+ return visitor.visitIf_inner_expr(this);
5565
+ }
5566
+ else {
5567
+ return visitor.visitChildren(this);
5568
+ }
5569
+ }
5570
+ }
5571
+ export class Else_exprContext extends antlr.ParserRuleContext {
5572
+ constructor(parent, invokingState) {
5573
+ super(parent, invokingState);
5574
+ }
5575
+ Else() {
5576
+ return this.getToken(CircuitScriptParser.Else, 0);
5577
+ }
5578
+ NEWLINE(i) {
5579
+ if (i === undefined) {
5580
+ return this.getTokens(CircuitScriptParser.NEWLINE);
5581
+ }
5582
+ else {
5583
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
5584
+ }
5585
+ }
5586
+ INDENT() {
5587
+ return this.getToken(CircuitScriptParser.INDENT, 0);
5588
+ }
5589
+ DEDENT() {
5590
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
5591
+ }
5592
+ expression(i) {
5593
+ if (i === undefined) {
5594
+ return this.getRuleContexts(ExpressionContext);
5595
+ }
5596
+ return this.getRuleContext(i, ExpressionContext);
5597
+ }
5598
+ get ruleIndex() {
5599
+ return CircuitScriptParser.RULE_else_expr;
5600
+ }
5601
+ accept(visitor) {
5602
+ if (visitor.visitElse_expr) {
5603
+ return visitor.visitElse_expr(this);
5604
+ }
5605
+ else {
5606
+ return visitor.visitChildren(this);
5607
+ }
5608
+ }
5609
+ }