circuitscript 0.0.37 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/BaseVisitor.js +56 -38
  2. package/dist/cjs/SymbolValidatorVisitor.js +1 -1
  3. package/dist/cjs/antlr/CircuitScriptLexer.js +95 -90
  4. package/dist/cjs/antlr/CircuitScriptParser.js +350 -325
  5. package/dist/cjs/builtinMethods.js +5 -2
  6. package/dist/cjs/draw_symbols.js +63 -45
  7. package/dist/cjs/execute.js +29 -16
  8. package/dist/cjs/globals.js +2 -1
  9. package/dist/cjs/layout.js +14 -26
  10. package/dist/cjs/objects/Frame.js +2 -0
  11. package/dist/cjs/objects/types.js +41 -0
  12. package/dist/cjs/render.js +1 -0
  13. package/dist/cjs/utils.js +25 -1
  14. package/dist/cjs/visitor.js +73 -35
  15. package/dist/esm/BaseVisitor.mjs +56 -38
  16. package/dist/esm/SymbolValidatorVisitor.mjs +1 -1
  17. package/dist/esm/antlr/CircuitScriptLexer.mjs +95 -90
  18. package/dist/esm/antlr/CircuitScriptParser.mjs +350 -325
  19. package/dist/esm/builtinMethods.mjs +5 -2
  20. package/dist/esm/draw_symbols.mjs +67 -47
  21. package/dist/esm/execute.mjs +29 -16
  22. package/dist/esm/globals.mjs +1 -0
  23. package/dist/esm/layout.mjs +13 -26
  24. package/dist/esm/objects/Frame.mjs +2 -0
  25. package/dist/esm/objects/types.mjs +42 -0
  26. package/dist/esm/render.mjs +2 -1
  27. package/dist/esm/utils.mjs +22 -0
  28. package/dist/esm/visitor.mjs +74 -36
  29. package/dist/types/BaseVisitor.d.ts +2 -1
  30. package/dist/types/antlr/CircuitScriptParser.d.ts +3 -0
  31. package/dist/types/draw_symbols.d.ts +11 -5
  32. package/dist/types/execute.d.ts +1 -1
  33. package/dist/types/globals.d.ts +1 -0
  34. package/dist/types/layout.d.ts +1 -0
  35. package/dist/types/objects/Frame.d.ts +3 -1
  36. package/dist/types/objects/types.d.ts +7 -2
  37. package/dist/types/utils.d.ts +3 -0
  38. package/dist/types/visitor.d.ts +1 -0
  39. package/libs/lib.cst +88 -30
  40. package/package.json +1 -1
@@ -13,6 +13,7 @@ const PinTypes_1 = require("./objects/PinTypes");
13
13
  const types_1 = require("./objects/types");
14
14
  const globals_1 = require("./globals");
15
15
  const builtinMethods_1 = require("./builtinMethods");
16
+ const utils_1 = require("./utils");
16
17
  class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
17
18
  constructor(silent = false, onErrorHandler = null, currentDirectory, defaultLibsPath) {
18
19
  super();
@@ -56,18 +57,21 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
56
57
  tmpComponent.instanceName = reference.name;
57
58
  instances.delete(oldName);
58
59
  instances.set(reference.name, tmpComponent);
59
- this.getExecutor().log(`assigned '${reference.name}' to ClassComponent`);
60
+ this.log2(`assigned '${reference.name}' to ClassComponent`);
60
61
  }
61
62
  else {
62
63
  this.getExecutor().scope.variables.set(reference.name, value);
64
+ this.log2(`assigned variable ${reference.name} to ${value}`);
63
65
  }
64
66
  }
65
67
  else {
66
- if (reference.value instanceof ClassComponent_1.ClassComponent) {
67
- this.setInstanceParam(reference.value, trailers, value);
68
+ if (reference.parentValue instanceof ClassComponent_1.ClassComponent) {
69
+ this.setInstanceParam(reference.parentValue, trailers, value);
70
+ this.log2(`assigned component param ${reference.parentValue} trailers: ${trailers} value: ${value}`);
68
71
  }
69
- else if (reference.value instanceof Object) {
70
- reference.value[trailers.join('.')] = value;
72
+ else if (reference.parentValue instanceof Object) {
73
+ reference.parentValue[trailers.join('.')] = value;
74
+ this.log2(`assigned object ${reference.parentValue} trailers: ${trailers} value: ${value}`);
71
75
  }
72
76
  }
73
77
  this.setResult(ctx, value);
@@ -78,7 +82,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
78
82
  this.visit(ctxDataExpr);
79
83
  const value = this.getResult(ctxDataExpr);
80
84
  if (!reference.found) {
81
- throw 'Undefined reference: ' + reference.name;
85
+ this.throwWithContext(ctx, 'Undefined reference: ' + reference.name);
82
86
  }
83
87
  const trailers = reference.trailers ?? [];
84
88
  let currentValue = null;
@@ -94,7 +98,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
94
98
  }
95
99
  }
96
100
  if (currentValue === null) {
97
- throw 'Operator assignment failed: could not get value';
101
+ this.throwWithContext(ctx, 'Operator assignment failed: could not get value');
98
102
  }
99
103
  let newValue = 0;
100
104
  if (ctx.AdditionAssign()) {
@@ -113,7 +117,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
113
117
  newValue = currentValue % value;
114
118
  }
115
119
  else {
116
- throw 'Operator assignment failed: could not perform operator';
120
+ this.throwWithContext(ctx, 'Operator assignment failed: could not perform operator');
117
121
  }
118
122
  if (trailers.length === 0) {
119
123
  this.getExecutor().scope.variables.set(reference.name, newValue);
@@ -133,6 +137,14 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
133
137
  const firstId = ctx.ID(0);
134
138
  const atomId = firstId.getText();
135
139
  let currentReference;
140
+ const idTrailers = [];
141
+ if (ctx.ID().length > 1) {
142
+ const idLength = ctx.ID().length;
143
+ for (let i = 1; i < idLength; i++) {
144
+ const tmpCtx = ctx.ID(i);
145
+ idTrailers.push(tmpCtx.getText());
146
+ }
147
+ }
136
148
  if (this.pinTypesList.indexOf(atomId) !== -1) {
137
149
  currentReference = {
138
150
  found: true,
@@ -141,26 +153,17 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
141
153
  };
142
154
  }
143
155
  else {
144
- currentReference = executor.resolveVariable(this.executionStack, atomId);
145
- }
146
- const idTrailers = [];
147
- if (ctx.ID().length > 1) {
148
- const idLength = ctx.ID().length;
149
- for (let i = 1; i < idLength; i++) {
150
- const tmpCtx = ctx.ID(i);
151
- idTrailers.push(tmpCtx.getText());
152
- }
156
+ currentReference = executor.resolveVariable(this.executionStack, atomId, idTrailers);
153
157
  }
154
- currentReference.trailers = idTrailers;
155
- if (currentReference.found && currentReference.type === 'instance') {
158
+ if (currentReference.found && currentReference.type === 'instance' && idTrailers.length === 0) {
156
159
  const tmpComponent = currentReference.value;
157
160
  for (const [pinId, net] of tmpComponent.pinNets) {
158
161
  executor.scope.setNet(tmpComponent, pinId, net);
159
162
  }
160
163
  }
161
- this.getExecutor().log('atomId:', atomId, currentReference);
164
+ this.log2(`atomId: ${atomId} ${currentReference}`);
162
165
  if (ctx.parent instanceof CircuitScriptParser_1.ExpressionContext && !currentReference.found) {
163
- throw "Unknown symbol: " + atomId;
166
+ this.throwWithContext(ctx, "Unknown symbol: " + atomId);
164
167
  }
165
168
  this.setResult(ctx, currentReference);
166
169
  };
@@ -182,7 +185,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
182
185
  let currentReference = executor.resolveVariable(this.executionStack, atomId);
183
186
  if (ctx.trailer_expr().length > 0) {
184
187
  if (!currentReference.found) {
185
- throw "Unknown function name: " + atomId;
188
+ this.throwWithContext(ctx, "Unknown function name: " + atomId);
186
189
  }
187
190
  currentReference.trailers = [];
188
191
  ctx.trailer_expr().forEach(item => {
@@ -195,13 +198,18 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
195
198
  parameters = this.getResult(ctxParameters);
196
199
  }
197
200
  const useNetNamespace = this.getNetNamespace(executor.netNamespace, passedNetNamespace);
198
- const [, functionResult] = executor.callFunction(currentReference.name, parameters, this.executionStack, useNetNamespace);
199
- currentReference = {
200
- found: true,
201
- value: functionResult,
202
- type: (functionResult instanceof ClassComponent_1.ClassComponent) ?
203
- 'instance' : 'value',
204
- };
201
+ try {
202
+ const [, functionResult] = executor.callFunction(currentReference.name, parameters, this.executionStack, useNetNamespace);
203
+ currentReference = {
204
+ found: true,
205
+ value: functionResult,
206
+ type: (functionResult instanceof ClassComponent_1.ClassComponent) ?
207
+ 'instance' : 'value',
208
+ };
209
+ }
210
+ catch (err) {
211
+ this.throwWithContext(ctx, err);
212
+ }
205
213
  }
206
214
  else {
207
215
  currentReference.trailers.push(itemValue);
@@ -233,7 +241,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
233
241
  }
234
242
  else {
235
243
  if (sign === -1) {
236
- throw "Invalid value!";
244
+ this.throwWithContext(ctx, "Invalid value");
237
245
  }
238
246
  }
239
247
  if (ctxBooleanValue) {
@@ -320,7 +328,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
320
328
  this.visitImport_expr = (ctx) => {
321
329
  const ID = ctx.ID().toString();
322
330
  this.log('import', ID);
323
- this.handleImportFile(ID, true);
331
+ this.handleImportFile(ID, true, ctx);
324
332
  this.log('done import', ID);
325
333
  };
326
334
  this.visitFunction_return_expr = (ctx) => {
@@ -420,12 +428,15 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
420
428
  getReference(ctx) {
421
429
  const atomStr = ctx.getText();
422
430
  if (atomStr.indexOf('(') !== -1 || atomStr.indexOf(')') !== -1) {
423
- throw "Invalid assignment expression!";
431
+ this.throwWithContext(ctx, "Invalid assignment expression!");
424
432
  }
425
433
  this.visit(ctx);
426
434
  const reference = this.getResult(ctx);
427
- if (!reference.found && reference.trailers && reference.trailers.length > 0) {
428
- throw 'Undefined reference: ' + reference.name + '.' + reference.trailers.join('.');
435
+ const { trailers = [] } = reference;
436
+ const undefinedParentWithTrailers = trailers.length > 0
437
+ && reference.parentValue === undefined;
438
+ if (undefinedParentWithTrailers) {
439
+ this.throwWithContext(ctx, 'Undefined reference: ' + reference.name + '.' + trailers.join('.'));
429
440
  }
430
441
  return reference;
431
442
  }
@@ -435,7 +446,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
435
446
  getResult(ctx) {
436
447
  return this.resultData.get(ctx);
437
448
  }
438
- handleImportFile(name, throwErrors = true) {
449
+ handleImportFile(name, throwErrors = true, ctx = null) {
439
450
  let hasError = false;
440
451
  let hasParseError = false;
441
452
  let pathExists = false;
@@ -470,14 +481,18 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
470
481
  catch (err) {
471
482
  this.log('Failed to import file: ', err.message);
472
483
  }
484
+ let errorMessage = null;
473
485
  if (throwErrors && (hasError || hasParseError || !pathExists)) {
474
486
  if (!pathExists) {
475
- throw `File does not exist: ${name}`;
487
+ errorMessage = `File does not exist: ${name}`;
476
488
  }
477
489
  else {
478
- throw `Failed to import: ${name}`;
490
+ errorMessage = `Failed to import: ${name}`;
479
491
  }
480
492
  }
493
+ if (errorMessage !== null && ctx) {
494
+ this.throwWithContext(ctx, errorMessage);
495
+ }
481
496
  return {
482
497
  hasError,
483
498
  hasParseError,
@@ -559,7 +574,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
559
574
  setInstanceParam(object, trailers, value) {
560
575
  const paramName = trailers[0];
561
576
  object.setParam(paramName, value);
562
- this.getExecutor().log(`set instance ${object.instanceName} param ${paramName} to ${value}`);
577
+ this.log2(`set instance ${object.instanceName} param ${paramName} to ${value}`);
563
578
  }
564
579
  getInstanceParam(object, trailers) {
565
580
  const paramName = trailers[0];
@@ -580,5 +595,8 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
580
595
  prepareStringValue(value) {
581
596
  return value.slice(1, value.length - 1);
582
597
  }
598
+ throwWithContext(context, message) {
599
+ (0, utils_1.throwWithContext)(context, message);
600
+ }
583
601
  }
584
602
  exports.BaseVisitor = BaseVisitor;
@@ -9,7 +9,7 @@ class SymbolValidatorVisitor extends BaseVisitor_js_1.BaseVisitor {
9
9
  this.symbolTable = new SymbolTable();
10
10
  this.visitImport_expr = (ctx) => {
11
11
  const ID = ctx.ID().toString();
12
- const { pathExists } = this.handleImportFile(ID, false);
12
+ const { pathExists } = this.handleImportFile(ID, false, ctx);
13
13
  if (!pathExists) {
14
14
  this.symbolTable.addUndefined(this.getExecutor(), ID, ctx.ID());
15
15
  }
@@ -155,8 +155,8 @@ CircuitScriptLexer.literalNames = [
155
155
  "'branch'", "'create'", "'component'", "'graphic'", "'module'",
156
156
  "'wire'", "'pin'", "'add'", "'at'", "'to'", "'point'", "'join'",
157
157
  "'parallel'", "'return'", "'def'", "'import'", "'for'", "'in'",
158
- "'while'", "'continue'", "'if'", "'else'", "'!'", "'frame'", "'sheet'",
159
- "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", "'&&'", "'||'", "'+'",
158
+ "'while'", "'continue'", "'if'", "'else'", null, "'frame'", "'sheet'",
159
+ "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", null, null, "'+'",
160
160
  "'-'", "'/'", "'*'", "'%'", "'+='", "'-='", "'/='", "'*='", "'%='",
161
161
  "'('", "')'"
162
162
  ];
@@ -191,7 +191,7 @@ CircuitScriptLexer.ruleNames = [
191
191
  "COMMENT_FRAGMENT", "COMMENT",
192
192
  ];
193
193
  CircuitScriptLexer._serializedATN = [
194
- 4, 0, 65, 479, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5,
194
+ 4, 0, 65, 490, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5,
195
195
  2, 6, 7, 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,
196
196
  13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7,
197
197
  19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2,
@@ -212,24 +212,25 @@ CircuitScriptLexer._serializedATN = [
212
212
  1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24,
213
213
  1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27,
214
214
  1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29,
215
- 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32,
216
- 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36,
217
- 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40,
218
- 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46,
219
- 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51,
220
- 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 356, 8, 53, 1, 54,
221
- 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 367, 8, 54, 1, 55, 1, 55,
222
- 5, 55, 371, 8, 55, 10, 55, 12, 55, 374, 9, 55, 1, 56, 1, 56, 1, 56, 5, 56, 379, 8, 56,
223
- 10, 56, 12, 56, 382, 9, 56, 3, 56, 384, 8, 56, 1, 57, 4, 57, 387, 8, 57, 11, 57, 12, 57,
224
- 388, 1, 57, 5, 57, 392, 8, 57, 10, 57, 12, 57, 395, 9, 57, 1, 57, 3, 57, 398, 8, 57, 1,
225
- 58, 1, 58, 1, 58, 1, 58, 5, 58, 404, 8, 58, 10, 58, 12, 58, 407, 9, 58, 1, 59, 1, 59, 3,
226
- 59, 411, 8, 59, 1, 59, 3, 59, 414, 8, 59, 1, 60, 1, 60, 5, 60, 418, 8, 60, 10, 60, 12,
227
- 60, 421, 9, 60, 1, 60, 1, 60, 1, 61, 4, 61, 426, 8, 61, 11, 61, 12, 61, 427, 1, 61, 5,
228
- 61, 431, 8, 61, 10, 61, 12, 61, 434, 9, 61, 1, 61, 1, 61, 1, 62, 4, 62, 439, 8, 62, 11,
229
- 62, 12, 62, 440, 1, 63, 4, 63, 444, 8, 63, 11, 63, 12, 63, 445, 1, 63, 1, 63, 1, 64, 3,
230
- 64, 451, 8, 64, 1, 64, 1, 64, 3, 64, 455, 8, 64, 1, 64, 3, 64, 458, 8, 64, 1, 64, 1, 64,
231
- 1, 65, 4, 65, 463, 8, 65, 11, 65, 12, 65, 464, 1, 66, 1, 66, 5, 66, 469, 8, 66, 10, 66,
232
- 12, 66, 472, 9, 66, 1, 67, 1, 67, 3, 67, 476, 8, 67, 1, 67, 1, 67, 1, 419, 0, 68, 1, 1,
215
+ 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 289, 8, 30, 1, 31, 1, 31, 1, 31,
216
+ 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34,
217
+ 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39,
218
+ 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 324, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 330, 8,
219
+ 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1,
220
+ 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1,
221
+ 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 367, 8, 53, 1,
222
+ 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 378, 8, 54, 1, 55, 1,
223
+ 55, 5, 55, 382, 8, 55, 10, 55, 12, 55, 385, 9, 55, 1, 56, 1, 56, 1, 56, 5, 56, 390, 8,
224
+ 56, 10, 56, 12, 56, 393, 9, 56, 3, 56, 395, 8, 56, 1, 57, 4, 57, 398, 8, 57, 11, 57, 12,
225
+ 57, 399, 1, 57, 5, 57, 403, 8, 57, 10, 57, 12, 57, 406, 9, 57, 1, 57, 3, 57, 409, 8, 57,
226
+ 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 415, 8, 58, 10, 58, 12, 58, 418, 9, 58, 1, 59, 1, 59,
227
+ 3, 59, 422, 8, 59, 1, 59, 3, 59, 425, 8, 59, 1, 60, 1, 60, 5, 60, 429, 8, 60, 10, 60, 12,
228
+ 60, 432, 9, 60, 1, 60, 1, 60, 1, 61, 4, 61, 437, 8, 61, 11, 61, 12, 61, 438, 1, 61, 5,
229
+ 61, 442, 8, 61, 10, 61, 12, 61, 445, 9, 61, 1, 61, 1, 61, 1, 62, 4, 62, 450, 8, 62, 11,
230
+ 62, 12, 62, 451, 1, 63, 4, 63, 455, 8, 63, 11, 63, 12, 63, 456, 1, 63, 1, 63, 1, 64, 3,
231
+ 64, 462, 8, 64, 1, 64, 1, 64, 3, 64, 466, 8, 64, 1, 64, 3, 64, 469, 8, 64, 1, 64, 1, 64,
232
+ 1, 65, 4, 65, 474, 8, 65, 11, 65, 12, 65, 475, 1, 66, 1, 66, 5, 66, 480, 8, 66, 10, 66,
233
+ 12, 66, 483, 9, 66, 1, 67, 1, 67, 3, 67, 487, 8, 67, 1, 67, 1, 67, 1, 430, 0, 68, 1, 1,
233
234
  3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14,
234
235
  29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25,
235
236
  51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36,
@@ -239,7 +240,7 @@ CircuitScriptLexer._serializedATN = [
239
240
  133, 0, 135, 65, 1, 0, 10, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95,
240
241
  97, 122, 1, 0, 49, 57, 2, 0, 48, 57, 95, 95, 1, 0, 48, 57, 1, 0, 48, 48, 5, 0, 77, 77, 107,
241
242
  107, 109, 110, 112, 112, 117, 117, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 9, 9, 32, 32,
242
- 2, 0, 10, 10, 12, 13, 497, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0,
243
+ 2, 0, 10, 10, 12, 13, 511, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0,
243
244
  0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0,
244
245
  0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0,
245
246
  0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0,
@@ -259,16 +260,16 @@ CircuitScriptLexer._serializedATN = [
259
260
  206, 1, 0, 0, 0, 33, 210, 1, 0, 0, 0, 35, 213, 1, 0, 0, 0, 37, 216, 1, 0, 0, 0, 39, 222,
260
261
  1, 0, 0, 0, 41, 227, 1, 0, 0, 0, 43, 236, 1, 0, 0, 0, 45, 243, 1, 0, 0, 0, 47, 247, 1, 0,
261
262
  0, 0, 49, 254, 1, 0, 0, 0, 51, 258, 1, 0, 0, 0, 53, 261, 1, 0, 0, 0, 55, 267, 1, 0, 0, 0,
262
- 57, 276, 1, 0, 0, 0, 59, 279, 1, 0, 0, 0, 61, 284, 1, 0, 0, 0, 63, 286, 1, 0, 0, 0, 65, 292,
263
- 1, 0, 0, 0, 67, 298, 1, 0, 0, 0, 69, 301, 1, 0, 0, 0, 71, 304, 1, 0, 0, 0, 73, 306, 1, 0,
264
- 0, 0, 75, 309, 1, 0, 0, 0, 77, 311, 1, 0, 0, 0, 79, 314, 1, 0, 0, 0, 81, 317, 1, 0, 0, 0,
265
- 83, 320, 1, 0, 0, 0, 85, 322, 1, 0, 0, 0, 87, 324, 1, 0, 0, 0, 89, 326, 1, 0, 0, 0, 91, 328,
266
- 1, 0, 0, 0, 93, 330, 1, 0, 0, 0, 95, 333, 1, 0, 0, 0, 97, 336, 1, 0, 0, 0, 99, 339, 1, 0,
267
- 0, 0, 101, 342, 1, 0, 0, 0, 103, 345, 1, 0, 0, 0, 105, 348, 1, 0, 0, 0, 107, 355, 1, 0,
268
- 0, 0, 109, 366, 1, 0, 0, 0, 111, 368, 1, 0, 0, 0, 113, 383, 1, 0, 0, 0, 115, 397, 1, 0,
269
- 0, 0, 117, 399, 1, 0, 0, 0, 119, 410, 1, 0, 0, 0, 121, 415, 1, 0, 0, 0, 123, 425, 1, 0,
270
- 0, 0, 125, 438, 1, 0, 0, 0, 127, 443, 1, 0, 0, 0, 129, 454, 1, 0, 0, 0, 131, 462, 1, 0,
271
- 0, 0, 133, 466, 1, 0, 0, 0, 135, 475, 1, 0, 0, 0, 137, 138, 5, 58, 0, 0, 138, 2, 1, 0, 0,
263
+ 57, 276, 1, 0, 0, 0, 59, 279, 1, 0, 0, 0, 61, 288, 1, 0, 0, 0, 63, 290, 1, 0, 0, 0, 65, 296,
264
+ 1, 0, 0, 0, 67, 302, 1, 0, 0, 0, 69, 305, 1, 0, 0, 0, 71, 308, 1, 0, 0, 0, 73, 310, 1, 0,
265
+ 0, 0, 75, 313, 1, 0, 0, 0, 77, 315, 1, 0, 0, 0, 79, 323, 1, 0, 0, 0, 81, 329, 1, 0, 0, 0,
266
+ 83, 331, 1, 0, 0, 0, 85, 333, 1, 0, 0, 0, 87, 335, 1, 0, 0, 0, 89, 337, 1, 0, 0, 0, 91, 339,
267
+ 1, 0, 0, 0, 93, 341, 1, 0, 0, 0, 95, 344, 1, 0, 0, 0, 97, 347, 1, 0, 0, 0, 99, 350, 1, 0,
268
+ 0, 0, 101, 353, 1, 0, 0, 0, 103, 356, 1, 0, 0, 0, 105, 359, 1, 0, 0, 0, 107, 366, 1, 0,
269
+ 0, 0, 109, 377, 1, 0, 0, 0, 111, 379, 1, 0, 0, 0, 113, 394, 1, 0, 0, 0, 115, 408, 1, 0,
270
+ 0, 0, 117, 410, 1, 0, 0, 0, 119, 421, 1, 0, 0, 0, 121, 426, 1, 0, 0, 0, 123, 436, 1, 0,
271
+ 0, 0, 125, 449, 1, 0, 0, 0, 127, 454, 1, 0, 0, 0, 129, 465, 1, 0, 0, 0, 131, 473, 1, 0,
272
+ 0, 0, 133, 477, 1, 0, 0, 0, 135, 486, 1, 0, 0, 0, 137, 138, 5, 58, 0, 0, 138, 2, 1, 0, 0,
272
273
  0, 139, 140, 5, 44, 0, 0, 140, 4, 1, 0, 0, 0, 141, 142, 5, 61, 0, 0, 142, 6, 1, 0, 0, 0,
273
274
  143, 144, 5, 46, 0, 0, 144, 145, 5, 46, 0, 0, 145, 8, 1, 0, 0, 0, 146, 147, 5, 46, 0, 0,
274
275
  147, 10, 1, 0, 0, 0, 148, 149, 5, 91, 0, 0, 149, 12, 1, 0, 0, 0, 150, 151, 5, 93, 0, 0,
@@ -307,64 +308,68 @@ CircuitScriptLexer._serializedATN = [
307
308
  0, 271, 272, 5, 105, 0, 0, 272, 273, 5, 110, 0, 0, 273, 274, 5, 117, 0, 0, 274, 275,
308
309
  5, 101, 0, 0, 275, 56, 1, 0, 0, 0, 276, 277, 5, 105, 0, 0, 277, 278, 5, 102, 0, 0, 278,
309
310
  58, 1, 0, 0, 0, 279, 280, 5, 101, 0, 0, 280, 281, 5, 108, 0, 0, 281, 282, 5, 115, 0, 0,
310
- 282, 283, 5, 101, 0, 0, 283, 60, 1, 0, 0, 0, 284, 285, 5, 33, 0, 0, 285, 62, 1, 0, 0, 0,
311
- 286, 287, 5, 102, 0, 0, 287, 288, 5, 114, 0, 0, 288, 289, 5, 97, 0, 0, 289, 290, 5, 109,
312
- 0, 0, 290, 291, 5, 101, 0, 0, 291, 64, 1, 0, 0, 0, 292, 293, 5, 115, 0, 0, 293, 294, 5,
313
- 104, 0, 0, 294, 295, 5, 101, 0, 0, 295, 296, 5, 101, 0, 0, 296, 297, 5, 116, 0, 0, 297,
314
- 66, 1, 0, 0, 0, 298, 299, 5, 61, 0, 0, 299, 300, 5, 61, 0, 0, 300, 68, 1, 0, 0, 0, 301,
315
- 302, 5, 33, 0, 0, 302, 303, 5, 61, 0, 0, 303, 70, 1, 0, 0, 0, 304, 305, 5, 62, 0, 0, 305,
316
- 72, 1, 0, 0, 0, 306, 307, 5, 62, 0, 0, 307, 308, 5, 61, 0, 0, 308, 74, 1, 0, 0, 0, 309,
317
- 310, 5, 60, 0, 0, 310, 76, 1, 0, 0, 0, 311, 312, 5, 60, 0, 0, 312, 313, 5, 61, 0, 0, 313,
318
- 78, 1, 0, 0, 0, 314, 315, 5, 38, 0, 0, 315, 316, 5, 38, 0, 0, 316, 80, 1, 0, 0, 0, 317,
319
- 318, 5, 124, 0, 0, 318, 319, 5, 124, 0, 0, 319, 82, 1, 0, 0, 0, 320, 321, 5, 43, 0, 0,
320
- 321, 84, 1, 0, 0, 0, 322, 323, 5, 45, 0, 0, 323, 86, 1, 0, 0, 0, 324, 325, 5, 47, 0, 0,
321
- 325, 88, 1, 0, 0, 0, 326, 327, 5, 42, 0, 0, 327, 90, 1, 0, 0, 0, 328, 329, 5, 37, 0, 0,
322
- 329, 92, 1, 0, 0, 0, 330, 331, 5, 43, 0, 0, 331, 332, 5, 61, 0, 0, 332, 94, 1, 0, 0, 0,
323
- 333, 334, 5, 45, 0, 0, 334, 335, 5, 61, 0, 0, 335, 96, 1, 0, 0, 0, 336, 337, 5, 47, 0,
324
- 0, 337, 338, 5, 61, 0, 0, 338, 98, 1, 0, 0, 0, 339, 340, 5, 42, 0, 0, 340, 341, 5, 61,
325
- 0, 0, 341, 100, 1, 0, 0, 0, 342, 343, 5, 37, 0, 0, 343, 344, 5, 61, 0, 0, 344, 102, 1,
326
- 0, 0, 0, 345, 346, 5, 40, 0, 0, 346, 347, 6, 51, 0, 0, 347, 104, 1, 0, 0, 0, 348, 349,
327
- 5, 41, 0, 0, 349, 350, 6, 52, 1, 0, 350, 106, 1, 0, 0, 0, 351, 352, 5, 110, 0, 0, 352,
328
- 356, 5, 99, 0, 0, 353, 354, 5, 78, 0, 0, 354, 356, 5, 67, 0, 0, 355, 351, 1, 0, 0, 0, 355,
329
- 353, 1, 0, 0, 0, 356, 108, 1, 0, 0, 0, 357, 358, 5, 116, 0, 0, 358, 359, 5, 114, 0, 0,
330
- 359, 360, 5, 117, 0, 0, 360, 367, 5, 101, 0, 0, 361, 362, 5, 102, 0, 0, 362, 363, 5,
331
- 97, 0, 0, 363, 364, 5, 108, 0, 0, 364, 365, 5, 115, 0, 0, 365, 367, 5, 101, 0, 0, 366,
332
- 357, 1, 0, 0, 0, 366, 361, 1, 0, 0, 0, 367, 110, 1, 0, 0, 0, 368, 372, 7, 0, 0, 0, 369,
333
- 371, 7, 1, 0, 0, 370, 369, 1, 0, 0, 0, 371, 374, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 372,
334
- 373, 1, 0, 0, 0, 373, 112, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 375, 384, 5, 48, 0, 0, 376,
335
- 380, 7, 2, 0, 0, 377, 379, 7, 3, 0, 0, 378, 377, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380,
336
- 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 384, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383,
337
- 375, 1, 0, 0, 0, 383, 376, 1, 0, 0, 0, 384, 114, 1, 0, 0, 0, 385, 387, 7, 2, 0, 0, 386,
338
- 385, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389,
339
- 393, 1, 0, 0, 0, 390, 392, 7, 4, 0, 0, 391, 390, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393,
340
- 391, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 396,
341
- 398, 7, 5, 0, 0, 397, 386, 1, 0, 0, 0, 397, 396, 1, 0, 0, 0, 398, 116, 1, 0, 0, 0, 399,
342
- 400, 3, 113, 56, 0, 400, 401, 5, 46, 0, 0, 401, 405, 7, 4, 0, 0, 402, 404, 7, 3, 0, 0,
343
- 403, 402, 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0,
344
- 406, 118, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 408, 411, 3, 115, 57, 0, 409, 411, 3, 117,
345
- 58, 0, 410, 408, 1, 0, 0, 0, 410, 409, 1, 0, 0, 0, 411, 413, 1, 0, 0, 0, 412, 414, 7, 6,
346
- 0, 0, 413, 412, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 120, 1, 0, 0, 0, 415, 419, 5, 34,
347
- 0, 0, 416, 418, 9, 0, 0, 0, 417, 416, 1, 0, 0, 0, 418, 421, 1, 0, 0, 0, 419, 420, 1, 0,
348
- 0, 0, 419, 417, 1, 0, 0, 0, 420, 422, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 422, 423, 5, 34,
349
- 0, 0, 423, 122, 1, 0, 0, 0, 424, 426, 7, 2, 0, 0, 425, 424, 1, 0, 0, 0, 426, 427, 1, 0,
350
- 0, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 432, 1, 0, 0, 0, 429, 431, 7, 4,
351
- 0, 0, 430, 429, 1, 0, 0, 0, 431, 434, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 432, 433, 1, 0,
352
- 0, 0, 433, 435, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 435, 436, 5, 37, 0, 0, 436, 124, 1, 0,
353
- 0, 0, 437, 439, 7, 7, 0, 0, 438, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 438, 1, 0,
354
- 0, 0, 440, 441, 1, 0, 0, 0, 441, 126, 1, 0, 0, 0, 442, 444, 7, 8, 0, 0, 443, 442, 1, 0,
355
- 0, 0, 444, 445, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 1, 0,
356
- 0, 0, 447, 448, 6, 63, 2, 0, 448, 128, 1, 0, 0, 0, 449, 451, 5, 13, 0, 0, 450, 449, 1,
357
- 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 455, 5, 10, 0, 0, 453, 455, 2,
358
- 12, 13, 0, 454, 450, 1, 0, 0, 0, 454, 453, 1, 0, 0, 0, 455, 457, 1, 0, 0, 0, 456, 458,
359
- 3, 131, 65, 0, 457, 456, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 460,
360
- 6, 64, 3, 0, 460, 130, 1, 0, 0, 0, 461, 463, 7, 8, 0, 0, 462, 461, 1, 0, 0, 0, 463, 464,
361
- 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 132, 1, 0, 0, 0, 466, 470,
362
- 5, 35, 0, 0, 467, 469, 8, 9, 0, 0, 468, 467, 1, 0, 0, 0, 469, 472, 1, 0, 0, 0, 470, 468,
363
- 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 134, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 473, 476,
364
- 3, 127, 63, 0, 474, 476, 3, 133, 66, 0, 475, 473, 1, 0, 0, 0, 475, 474, 1, 0, 0, 0, 476,
365
- 477, 1, 0, 0, 0, 477, 478, 6, 67, 4, 0, 478, 136, 1, 0, 0, 0, 23, 0, 355, 366, 372, 380,
366
- 383, 388, 393, 397, 405, 410, 413, 419, 427, 432, 440, 445, 450, 454, 457, 464,
367
- 470, 475, 5, 1, 51, 0, 1, 52, 1, 6, 0, 0, 1, 64, 2, 0, 2, 0
311
+ 282, 283, 5, 101, 0, 0, 283, 60, 1, 0, 0, 0, 284, 289, 5, 33, 0, 0, 285, 286, 5, 110,
312
+ 0, 0, 286, 287, 5, 111, 0, 0, 287, 289, 5, 116, 0, 0, 288, 284, 1, 0, 0, 0, 288, 285,
313
+ 1, 0, 0, 0, 289, 62, 1, 0, 0, 0, 290, 291, 5, 102, 0, 0, 291, 292, 5, 114, 0, 0, 292, 293,
314
+ 5, 97, 0, 0, 293, 294, 5, 109, 0, 0, 294, 295, 5, 101, 0, 0, 295, 64, 1, 0, 0, 0, 296,
315
+ 297, 5, 115, 0, 0, 297, 298, 5, 104, 0, 0, 298, 299, 5, 101, 0, 0, 299, 300, 5, 101,
316
+ 0, 0, 300, 301, 5, 116, 0, 0, 301, 66, 1, 0, 0, 0, 302, 303, 5, 61, 0, 0, 303, 304, 5,
317
+ 61, 0, 0, 304, 68, 1, 0, 0, 0, 305, 306, 5, 33, 0, 0, 306, 307, 5, 61, 0, 0, 307, 70, 1,
318
+ 0, 0, 0, 308, 309, 5, 62, 0, 0, 309, 72, 1, 0, 0, 0, 310, 311, 5, 62, 0, 0, 311, 312, 5,
319
+ 61, 0, 0, 312, 74, 1, 0, 0, 0, 313, 314, 5, 60, 0, 0, 314, 76, 1, 0, 0, 0, 315, 316, 5,
320
+ 60, 0, 0, 316, 317, 5, 61, 0, 0, 317, 78, 1, 0, 0, 0, 318, 319, 5, 38, 0, 0, 319, 324,
321
+ 5, 38, 0, 0, 320, 321, 5, 97, 0, 0, 321, 322, 5, 110, 0, 0, 322, 324, 5, 100, 0, 0, 323,
322
+ 318, 1, 0, 0, 0, 323, 320, 1, 0, 0, 0, 324, 80, 1, 0, 0, 0, 325, 326, 5, 124, 0, 0, 326,
323
+ 330, 5, 124, 0, 0, 327, 328, 5, 111, 0, 0, 328, 330, 5, 114, 0, 0, 329, 325, 1, 0, 0,
324
+ 0, 329, 327, 1, 0, 0, 0, 330, 82, 1, 0, 0, 0, 331, 332, 5, 43, 0, 0, 332, 84, 1, 0, 0, 0,
325
+ 333, 334, 5, 45, 0, 0, 334, 86, 1, 0, 0, 0, 335, 336, 5, 47, 0, 0, 336, 88, 1, 0, 0, 0,
326
+ 337, 338, 5, 42, 0, 0, 338, 90, 1, 0, 0, 0, 339, 340, 5, 37, 0, 0, 340, 92, 1, 0, 0, 0,
327
+ 341, 342, 5, 43, 0, 0, 342, 343, 5, 61, 0, 0, 343, 94, 1, 0, 0, 0, 344, 345, 5, 45, 0,
328
+ 0, 345, 346, 5, 61, 0, 0, 346, 96, 1, 0, 0, 0, 347, 348, 5, 47, 0, 0, 348, 349, 5, 61,
329
+ 0, 0, 349, 98, 1, 0, 0, 0, 350, 351, 5, 42, 0, 0, 351, 352, 5, 61, 0, 0, 352, 100, 1, 0,
330
+ 0, 0, 353, 354, 5, 37, 0, 0, 354, 355, 5, 61, 0, 0, 355, 102, 1, 0, 0, 0, 356, 357, 5,
331
+ 40, 0, 0, 357, 358, 6, 51, 0, 0, 358, 104, 1, 0, 0, 0, 359, 360, 5, 41, 0, 0, 360, 361,
332
+ 6, 52, 1, 0, 361, 106, 1, 0, 0, 0, 362, 363, 5, 110, 0, 0, 363, 367, 5, 99, 0, 0, 364,
333
+ 365, 5, 78, 0, 0, 365, 367, 5, 67, 0, 0, 366, 362, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 367,
334
+ 108, 1, 0, 0, 0, 368, 369, 5, 116, 0, 0, 369, 370, 5, 114, 0, 0, 370, 371, 5, 117, 0,
335
+ 0, 371, 378, 5, 101, 0, 0, 372, 373, 5, 102, 0, 0, 373, 374, 5, 97, 0, 0, 374, 375, 5,
336
+ 108, 0, 0, 375, 376, 5, 115, 0, 0, 376, 378, 5, 101, 0, 0, 377, 368, 1, 0, 0, 0, 377,
337
+ 372, 1, 0, 0, 0, 378, 110, 1, 0, 0, 0, 379, 383, 7, 0, 0, 0, 380, 382, 7, 1, 0, 0, 381,
338
+ 380, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384,
339
+ 112, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 395, 5, 48, 0, 0, 387, 391, 7, 2, 0, 0, 388,
340
+ 390, 7, 3, 0, 0, 389, 388, 1, 0, 0, 0, 390, 393, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 391,
341
+ 392, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 394, 386, 1, 0, 0, 0, 394,
342
+ 387, 1, 0, 0, 0, 395, 114, 1, 0, 0, 0, 396, 398, 7, 2, 0, 0, 397, 396, 1, 0, 0, 0, 398,
343
+ 399, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 404, 1, 0, 0, 0, 401,
344
+ 403, 7, 4, 0, 0, 402, 401, 1, 0, 0, 0, 403, 406, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 404,
345
+ 405, 1, 0, 0, 0, 405, 409, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 407, 409, 7, 5, 0, 0, 408,
346
+ 397, 1, 0, 0, 0, 408, 407, 1, 0, 0, 0, 409, 116, 1, 0, 0, 0, 410, 411, 3, 113, 56, 0, 411,
347
+ 412, 5, 46, 0, 0, 412, 416, 7, 4, 0, 0, 413, 415, 7, 3, 0, 0, 414, 413, 1, 0, 0, 0, 415,
348
+ 418, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 118, 1, 0, 0, 0, 418,
349
+ 416, 1, 0, 0, 0, 419, 422, 3, 115, 57, 0, 420, 422, 3, 117, 58, 0, 421, 419, 1, 0, 0,
350
+ 0, 421, 420, 1, 0, 0, 0, 422, 424, 1, 0, 0, 0, 423, 425, 7, 6, 0, 0, 424, 423, 1, 0, 0,
351
+ 0, 424, 425, 1, 0, 0, 0, 425, 120, 1, 0, 0, 0, 426, 430, 5, 34, 0, 0, 427, 429, 9, 0, 0,
352
+ 0, 428, 427, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 430, 428, 1, 0, 0,
353
+ 0, 431, 433, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 434, 5, 34, 0, 0, 434, 122, 1, 0, 0,
354
+ 0, 435, 437, 7, 2, 0, 0, 436, 435, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 436, 1, 0, 0,
355
+ 0, 438, 439, 1, 0, 0, 0, 439, 443, 1, 0, 0, 0, 440, 442, 7, 4, 0, 0, 441, 440, 1, 0, 0,
356
+ 0, 442, 445, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 446, 1, 0, 0,
357
+ 0, 445, 443, 1, 0, 0, 0, 446, 447, 5, 37, 0, 0, 447, 124, 1, 0, 0, 0, 448, 450, 7, 7, 0,
358
+ 0, 449, 448, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0,
359
+ 0, 452, 126, 1, 0, 0, 0, 453, 455, 7, 8, 0, 0, 454, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0,
360
+ 0, 456, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 6, 63, 2,
361
+ 0, 459, 128, 1, 0, 0, 0, 460, 462, 5, 13, 0, 0, 461, 460, 1, 0, 0, 0, 461, 462, 1, 0, 0,
362
+ 0, 462, 463, 1, 0, 0, 0, 463, 466, 5, 10, 0, 0, 464, 466, 2, 12, 13, 0, 465, 461, 1, 0,
363
+ 0, 0, 465, 464, 1, 0, 0, 0, 466, 468, 1, 0, 0, 0, 467, 469, 3, 131, 65, 0, 468, 467, 1,
364
+ 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 6, 64, 3, 0, 471, 130, 1,
365
+ 0, 0, 0, 472, 474, 7, 8, 0, 0, 473, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 473, 1,
366
+ 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 132, 1, 0, 0, 0, 477, 481, 5, 35, 0, 0, 478, 480, 8,
367
+ 9, 0, 0, 479, 478, 1, 0, 0, 0, 480, 483, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1,
368
+ 0, 0, 0, 482, 134, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 484, 487, 3, 127, 63, 0, 485, 487,
369
+ 3, 133, 66, 0, 486, 484, 1, 0, 0, 0, 486, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 489,
370
+ 6, 67, 4, 0, 489, 136, 1, 0, 0, 0, 26, 0, 288, 323, 329, 366, 377, 383, 391, 394, 399,
371
+ 404, 408, 416, 421, 424, 430, 438, 443, 451, 456, 461, 465, 468, 475, 481, 486,
372
+ 5, 1, 51, 0, 1, 52, 1, 6, 0, 0, 1, 64, 2, 0, 2, 0
368
373
  ];
369
374
  CircuitScriptLexer.vocabulary = new antlr.Vocabulary(CircuitScriptLexer.literalNames, CircuitScriptLexer.symbolicNames, []);
370
375
  CircuitScriptLexer.decisionsToDFA = CircuitScriptLexer._ATN.decisionToState.map((ds, index) => new antlr.DFA(ds, index));