simple-graph-query 2.8.1 → 3.0.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.
- package/README.md +85 -0
- package/dist/ForgeExprEvaluator.d.ts +41 -0
- package/dist/ForgeExprStaticAnalyzer.d.ts +25 -1
- package/dist/forge-antlr/ForgeLexer.d.ts +1 -1
- package/dist/forge-antlr/ForgeParser.d.ts +4 -3
- package/dist/index.d.ts +21 -1
- package/dist/simple-graph-query.bundle.js +1327 -921
- package/package.json +1 -1
|
@@ -48438,6 +48438,7 @@ module.exports = function whichTypedArray(value) {
|
|
|
48438
48438
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
48439
48439
|
exports.NameNotFoundError = exports.ForgeExprEvaluator = exports.SUPPORTED_BUILTINS = void 0;
|
|
48440
48440
|
exports.areTupleArraysEqual = areTupleArraysEqual;
|
|
48441
|
+
exports.unquoteStringLiteral = unquoteStringLiteral;
|
|
48441
48442
|
const AbstractParseTreeVisitor_1 = __webpack_require__(/*! antlr4ts/tree/AbstractParseTreeVisitor */ "./node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js");
|
|
48442
48443
|
const utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
48443
48444
|
const lodash_1 = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
|
|
@@ -48475,17 +48476,72 @@ function extractNumber(val) {
|
|
|
48475
48476
|
function isString(value) {
|
|
48476
48477
|
return typeof value === "string";
|
|
48477
48478
|
}
|
|
48478
|
-
// Helper to create a string key from a tuple for fast lookup
|
|
48479
|
+
// Helper to create a string key from a tuple for fast lookup.
|
|
48480
|
+
//
|
|
48481
|
+
// The key is JSON.stringify because it is type-preserving: the atom 1 and the
|
|
48482
|
+
// atom "1" must not collide (buildRelationCache coerces numeric-looking atoms
|
|
48483
|
+
// to numbers). Measurement also showed V8's stringify outruns hand-rolled
|
|
48484
|
+
// delimiter keys, so there is nothing to gain from a custom key function.
|
|
48479
48485
|
function tupleToKey(tuple) {
|
|
48480
48486
|
return JSON.stringify(tuple);
|
|
48481
48487
|
}
|
|
48488
|
+
// Canonical-key side-channel: relationKeys maps a RELATION VALUE (an outer
|
|
48489
|
+
// Tuple[] array) to its tuples' canonical keys, index-aligned. Keys are
|
|
48490
|
+
// computed at most once per relation value; set operations (union,
|
|
48491
|
+
// intersection, difference, dedup, subset) then reuse them instead of
|
|
48492
|
+
// re-serializing every tuple on every operation.
|
|
48493
|
+
//
|
|
48494
|
+
// This is keyed on the outer array -- NOT per tuple -- deliberately:
|
|
48495
|
+
// * Relation values are immutable-after-creation in this evaluator (every
|
|
48496
|
+
// operator returns a fresh array; nothing splices/pushes into a result it
|
|
48497
|
+
// has handed out), so an array's keys can never go stale.
|
|
48498
|
+
// * Live entries number in the dozens (base relations + recent
|
|
48499
|
+
// intermediates), so GC ephemeron processing stays trivially cheap. A
|
|
48500
|
+
// per-TUPLE WeakMap memo was measured to be catastrophically slower
|
|
48501
|
+
// (100k+ high-churn entries make major GCs ~10x more expensive).
|
|
48502
|
+
// * The WeakMap drops entries automatically when intermediate results die,
|
|
48503
|
+
// so this adds no leak, and nothing user-visible is attached to tuples.
|
|
48504
|
+
const relationKeys = new WeakMap();
|
|
48505
|
+
// Only relation values at least this large get registered in relationKeys.
|
|
48506
|
+
// Tiny relations (e.g. the singleton sets compared thousands of times inside
|
|
48507
|
+
// quantifier loops) are cheaper to re-serialize than to churn through
|
|
48508
|
+
// WeakMap.set; the side-channel exists to amortize keying of BULK relations.
|
|
48509
|
+
const KEY_REGISTER_MIN = 16;
|
|
48510
|
+
// Get the canonical keys for a relation value, computing (and, for bulk
|
|
48511
|
+
// relations, registering) them on first use. First use costs one stringify
|
|
48512
|
+
// per tuple (exactly what a single set operation used to cost); every later
|
|
48513
|
+
// operation on the same registered relation value gets its keys for free.
|
|
48514
|
+
function ensureKeys(tuples) {
|
|
48515
|
+
let keys = relationKeys.get(tuples);
|
|
48516
|
+
if (keys === undefined) {
|
|
48517
|
+
keys = tuples.map((t) => JSON.stringify(t));
|
|
48518
|
+
if (tuples.length >= KEY_REGISTER_MIN) {
|
|
48519
|
+
relationKeys.set(tuples, keys);
|
|
48520
|
+
}
|
|
48521
|
+
}
|
|
48522
|
+
return keys;
|
|
48523
|
+
}
|
|
48482
48524
|
function areTuplesEqual(a, b) {
|
|
48483
48525
|
return a.length === b.length && a.every((val, i) => val === b[i]);
|
|
48484
48526
|
}
|
|
48485
48527
|
function isTupleArraySubset(a, b) {
|
|
48528
|
+
// Tiny operands (e.g. the singleton comparisons quantifier loops make
|
|
48529
|
+
// thousands of times) can never be registered in relationKeys, so the key
|
|
48530
|
+
// side-channel is pure overhead for them -- compare directly, with the
|
|
48531
|
+
// short-circuit the direct path allows.
|
|
48532
|
+
if (a.length < KEY_REGISTER_MIN && b.length < KEY_REGISTER_MIN) {
|
|
48533
|
+
const bSet = new Set(b.map(tupleToKey));
|
|
48534
|
+
return a.every((tupleA) => bSet.has(tupleToKey(tupleA)));
|
|
48535
|
+
}
|
|
48486
48536
|
// Optimize using Set for O(n) lookup instead of O(n²)
|
|
48487
|
-
const bSet = new Set(b
|
|
48488
|
-
|
|
48537
|
+
const bSet = new Set(ensureKeys(b));
|
|
48538
|
+
const aKeys = ensureKeys(a);
|
|
48539
|
+
for (let i = 0; i < a.length; i++) {
|
|
48540
|
+
if (!bSet.has(aKeys[i])) {
|
|
48541
|
+
return false;
|
|
48542
|
+
}
|
|
48543
|
+
}
|
|
48544
|
+
return true;
|
|
48489
48545
|
}
|
|
48490
48546
|
function areTupleArraysEqual(a, b) {
|
|
48491
48547
|
if (a.length !== b.length) {
|
|
@@ -48493,19 +48549,38 @@ function areTupleArraysEqual(a, b) {
|
|
|
48493
48549
|
}
|
|
48494
48550
|
return isTupleArraySubset(a, b) && isTupleArraySubset(b, a);
|
|
48495
48551
|
}
|
|
48496
|
-
|
|
48497
|
-
|
|
48552
|
+
// Deduplicate the concatenation of several tuple arrays (set semantics),
|
|
48553
|
+
// reusing each part's registered keys when available and registering the
|
|
48554
|
+
// result's keys so downstream operations get them for free.
|
|
48555
|
+
function deduplicateConcat(parts) {
|
|
48498
48556
|
const seen = new Set();
|
|
48499
48557
|
const result = [];
|
|
48500
|
-
|
|
48501
|
-
|
|
48502
|
-
|
|
48503
|
-
|
|
48504
|
-
|
|
48505
|
-
|
|
48558
|
+
const resultKeys = [];
|
|
48559
|
+
for (const part of parts) {
|
|
48560
|
+
// Bulk parts go through ensureKeys so their keys are REGISTERED, not just
|
|
48561
|
+
// consumed -- otherwise a relation reaching dedup via union would be
|
|
48562
|
+
// re-serialized on every union until some other op registered it.
|
|
48563
|
+
// Arrays below KEY_REGISTER_MIN are never registered, so skip the WeakMap
|
|
48564
|
+
// machinery for them entirely -- this helper is called once per join
|
|
48565
|
+
// inside quantifier loops, where even the probe is measurable overhead.
|
|
48566
|
+
const partKeys = part.length >= KEY_REGISTER_MIN ? ensureKeys(part) : undefined;
|
|
48567
|
+
for (let i = 0; i < part.length; i++) {
|
|
48568
|
+
const key = partKeys !== undefined ? partKeys[i] : JSON.stringify(part[i]);
|
|
48569
|
+
if (!seen.has(key)) {
|
|
48570
|
+
seen.add(key);
|
|
48571
|
+
result.push(part[i]);
|
|
48572
|
+
resultKeys.push(key);
|
|
48573
|
+
}
|
|
48574
|
+
}
|
|
48575
|
+
}
|
|
48576
|
+
if (result.length >= KEY_REGISTER_MIN) {
|
|
48577
|
+
relationKeys.set(result, resultKeys);
|
|
48506
48578
|
}
|
|
48507
48579
|
return result;
|
|
48508
48580
|
}
|
|
48581
|
+
function deduplicateTuples(tuples) {
|
|
48582
|
+
return deduplicateConcat([tuples]);
|
|
48583
|
+
}
|
|
48509
48584
|
function getCombinations(arrays) {
|
|
48510
48585
|
// first, turn each string[][] into a string[] by flattening
|
|
48511
48586
|
const valueSets = arrays.map((tuple) => tuple.flat());
|
|
@@ -48545,10 +48620,11 @@ function transitiveClosure(pairs) {
|
|
|
48545
48620
|
graph.get(from).add(to);
|
|
48546
48621
|
}
|
|
48547
48622
|
// Use more efficient BFS with index-based queue to avoid O(n) shift() operations
|
|
48548
|
-
// NOTE:
|
|
48549
|
-
//
|
|
48550
|
-
//
|
|
48551
|
-
|
|
48623
|
+
// NOTE: no dedup set is needed here -- within one `start`, the `visited`
|
|
48624
|
+
// check guarantees each `current` is emitted at most once, and pairs from
|
|
48625
|
+
// different starts differ in their first element. So we can emit real
|
|
48626
|
+
// tuples directly instead of round-tripping through JSON.stringify/parse.
|
|
48627
|
+
const result = [];
|
|
48552
48628
|
for (const start of graph.keys()) {
|
|
48553
48629
|
const visited = new Set();
|
|
48554
48630
|
const queue = [...(graph.get(start) ?? [])];
|
|
@@ -48558,7 +48634,7 @@ function transitiveClosure(pairs) {
|
|
|
48558
48634
|
if (visited.has(current))
|
|
48559
48635
|
continue;
|
|
48560
48636
|
visited.add(current);
|
|
48561
|
-
|
|
48637
|
+
result.push([start, current]);
|
|
48562
48638
|
const neighbors = graph.get(current);
|
|
48563
48639
|
if (neighbors) {
|
|
48564
48640
|
for (const neighbor of neighbors) {
|
|
@@ -48569,8 +48645,7 @@ function transitiveClosure(pairs) {
|
|
|
48569
48645
|
}
|
|
48570
48646
|
}
|
|
48571
48647
|
}
|
|
48572
|
-
|
|
48573
|
-
return Array.from(transitiveClosureSet).map((pair) => JSON.parse(pair));
|
|
48648
|
+
return result;
|
|
48574
48649
|
}
|
|
48575
48650
|
function bitwidthWraparound(value, bitwidth) {
|
|
48576
48651
|
const modulus = Math.pow(2, bitwidth); // total number of Int values
|
|
@@ -48593,6 +48668,74 @@ const SUPPORTED_BINARY_BUILTINS = ["add", "subtract", "multiply", "divide", "rem
|
|
|
48593
48668
|
const SUPPORTED_UNARY_BUILTINS = ["abs", "sign", "floor", "ceil"];
|
|
48594
48669
|
const SUPPORTED_SET_BUILTINS = ["min", "max"];
|
|
48595
48670
|
exports.SUPPORTED_BUILTINS = SUPPORTED_BINARY_BUILTINS.concat(SUPPORTED_UNARY_BUILTINS, SUPPORTED_SET_BUILTINS);
|
|
48671
|
+
/**
|
|
48672
|
+
* Levenshtein distance, abandoned early once it provably exceeds `limit`.
|
|
48673
|
+
* Returns `limit + 1` in that case, which callers treat as "too far".
|
|
48674
|
+
*/
|
|
48675
|
+
function editDistance(a, b, limit) {
|
|
48676
|
+
if (Math.abs(a.length - b.length) > limit) {
|
|
48677
|
+
return limit + 1;
|
|
48678
|
+
}
|
|
48679
|
+
let previous = Array.from({ length: b.length + 1 }, (_, i) => i);
|
|
48680
|
+
for (let i = 1; i <= a.length; i++) {
|
|
48681
|
+
const current = [i];
|
|
48682
|
+
let rowMin = i;
|
|
48683
|
+
for (let j = 1; j <= b.length; j++) {
|
|
48684
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
48685
|
+
const value = Math.min(previous[j] + 1, // deletion
|
|
48686
|
+
current[j - 1] + 1, // insertion
|
|
48687
|
+
previous[j - 1] + cost // substitution
|
|
48688
|
+
);
|
|
48689
|
+
current.push(value);
|
|
48690
|
+
rowMin = Math.min(rowMin, value);
|
|
48691
|
+
}
|
|
48692
|
+
if (rowMin > limit) {
|
|
48693
|
+
return limit + 1; // no completion of this row can come back under the limit
|
|
48694
|
+
}
|
|
48695
|
+
previous = current;
|
|
48696
|
+
}
|
|
48697
|
+
return previous[b.length];
|
|
48698
|
+
}
|
|
48699
|
+
/**
|
|
48700
|
+
* Strip the surrounding double quotes from a STRING_TOK and resolve its escape
|
|
48701
|
+
* sequences. The lexer rule is `'"' (~["\\] | '\\' .)* '"'`, so a backslash
|
|
48702
|
+
* always consumes exactly one following character.
|
|
48703
|
+
*/
|
|
48704
|
+
function unquoteStringLiteral(text) {
|
|
48705
|
+
const body = text.slice(1, -1);
|
|
48706
|
+
// Overwhelmingly the common case, and the only one worth optimizing: with no
|
|
48707
|
+
// backslash there is nothing to resolve, so skip the scan entirely.
|
|
48708
|
+
if (body.indexOf("\\") === -1) {
|
|
48709
|
+
return body;
|
|
48710
|
+
}
|
|
48711
|
+
let out = "";
|
|
48712
|
+
for (let i = 0; i < body.length; i++) {
|
|
48713
|
+
if (body[i] !== "\\") {
|
|
48714
|
+
out += body[i];
|
|
48715
|
+
continue;
|
|
48716
|
+
}
|
|
48717
|
+
const escaped = body[++i];
|
|
48718
|
+
switch (escaped) {
|
|
48719
|
+
case "n":
|
|
48720
|
+
out += "\n";
|
|
48721
|
+
break;
|
|
48722
|
+
case "t":
|
|
48723
|
+
out += "\t";
|
|
48724
|
+
break;
|
|
48725
|
+
case "r":
|
|
48726
|
+
out += "\r";
|
|
48727
|
+
break;
|
|
48728
|
+
case "0":
|
|
48729
|
+
out += "\0";
|
|
48730
|
+
break;
|
|
48731
|
+
// `\"`, `\\`, and anything else stand for the character itself.
|
|
48732
|
+
default:
|
|
48733
|
+
out += escaped;
|
|
48734
|
+
break;
|
|
48735
|
+
}
|
|
48736
|
+
}
|
|
48737
|
+
return out;
|
|
48738
|
+
}
|
|
48596
48739
|
/**
|
|
48597
48740
|
* A recursive evaluator for Forge expressions.
|
|
48598
48741
|
* This visitor walks the parse tree and prints the type of operation encountered.
|
|
@@ -48608,11 +48751,77 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
48608
48751
|
// Index for relations: Map<relationName, Map<firstElement, Tuple[]>>
|
|
48609
48752
|
// This allows O(1) lookup for patterns like atom.field
|
|
48610
48753
|
this.relationIndexCache = null;
|
|
48754
|
+
// Diagnostics accumulated during the current evaluation, keyed by name so a
|
|
48755
|
+
// name referenced many times (e.g. inside a comprehension body) reports once.
|
|
48756
|
+
this.diagnostics = new Map();
|
|
48611
48757
|
this.instanceData = datum;
|
|
48612
48758
|
this.environmentStack = [];
|
|
48613
48759
|
this.freeVariableFinder = new ForgeExprFreeVariableFinder_1.ForgeExprFreeVariableFinder(datum);
|
|
48614
48760
|
this.freeVariables = new Map();
|
|
48615
48761
|
}
|
|
48762
|
+
/** Diagnostics recorded since the last `resetDiagnostics()`. */
|
|
48763
|
+
getDiagnostics() {
|
|
48764
|
+
return Array.from(this.diagnostics.values());
|
|
48765
|
+
}
|
|
48766
|
+
/** Clear diagnostics. Callers that reuse an evaluator must call this per evaluation. */
|
|
48767
|
+
resetDiagnostics() {
|
|
48768
|
+
this.diagnostics.clear();
|
|
48769
|
+
}
|
|
48770
|
+
/**
|
|
48771
|
+
* Record a name that could not be resolved against this instance.
|
|
48772
|
+
*
|
|
48773
|
+
* This is deliberately a warning rather than an error. The instance format
|
|
48774
|
+
* carries only populated types and relations, so a sig with no atoms in this
|
|
48775
|
+
* instance is indistinguishable from a typo — and a sig can empty out between
|
|
48776
|
+
* frames of the same trace. Failing hard would break working selectors at
|
|
48777
|
+
* exactly the frames where a set happens to be empty.
|
|
48778
|
+
*/
|
|
48779
|
+
reportUnresolvedName(name) {
|
|
48780
|
+
if (this.diagnostics.has(name)) {
|
|
48781
|
+
return;
|
|
48782
|
+
}
|
|
48783
|
+
const suggestion = this.suggestName(name);
|
|
48784
|
+
this.diagnostics.set(name, {
|
|
48785
|
+
kind: "unresolved-name",
|
|
48786
|
+
severity: "warning",
|
|
48787
|
+
name,
|
|
48788
|
+
message: `'${name}' does not name a type, relation, or atom in this instance; ` +
|
|
48789
|
+
`it evaluates to the empty set.` +
|
|
48790
|
+
(suggestion ? ` Did you mean '${suggestion}'?` : "") +
|
|
48791
|
+
` If you meant the string "${name}", write it in double quotes.`,
|
|
48792
|
+
...(suggestion !== undefined ? { suggestion } : {}),
|
|
48793
|
+
});
|
|
48794
|
+
}
|
|
48795
|
+
/** Closest name in this instance within a small edit distance, if any. */
|
|
48796
|
+
suggestName(name) {
|
|
48797
|
+
this.buildRelationCache();
|
|
48798
|
+
const candidates = new Set();
|
|
48799
|
+
for (const t of this.instanceData.getTypes()) {
|
|
48800
|
+
candidates.add(t.id);
|
|
48801
|
+
}
|
|
48802
|
+
for (const relationName of this.relationCache.keys()) {
|
|
48803
|
+
candidates.add(relationName);
|
|
48804
|
+
}
|
|
48805
|
+
for (const atom of this.instanceData.getAtoms()) {
|
|
48806
|
+
candidates.add(atom.id);
|
|
48807
|
+
}
|
|
48808
|
+
// Allow one edit for short names, two for longer ones. Without this bound
|
|
48809
|
+
// every unresolved name would get a nonsense suggestion.
|
|
48810
|
+
const maxDistance = name.length <= 4 ? 1 : 2;
|
|
48811
|
+
let best;
|
|
48812
|
+
let bestDistance = maxDistance + 1;
|
|
48813
|
+
for (const candidate of candidates) {
|
|
48814
|
+
if (Math.abs(candidate.length - name.length) >= bestDistance) {
|
|
48815
|
+
continue; // length alone rules it out
|
|
48816
|
+
}
|
|
48817
|
+
const distance = editDistance(name, candidate, bestDistance);
|
|
48818
|
+
if (distance < bestDistance) {
|
|
48819
|
+
bestDistance = distance;
|
|
48820
|
+
best = candidate;
|
|
48821
|
+
}
|
|
48822
|
+
}
|
|
48823
|
+
return best;
|
|
48824
|
+
}
|
|
48616
48825
|
// helper function to build relation cache and indexes
|
|
48617
48826
|
buildRelationCache() {
|
|
48618
48827
|
if (this.relationCache !== null) {
|
|
@@ -48622,10 +48831,18 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
48622
48831
|
this.relationIndexCache = new Map();
|
|
48623
48832
|
const relations = this.instanceData.getRelations();
|
|
48624
48833
|
for (const relation of relations) {
|
|
48625
|
-
|
|
48626
|
-
//
|
|
48627
|
-
|
|
48628
|
-
|
|
48834
|
+
// Convert numeric and boolean strings to their actual types, in a
|
|
48835
|
+
// single pass (one fresh tuple array per tuple, not one per coercion).
|
|
48836
|
+
// Numeric-vs-boolean order matches the old two-pass behavior: the two
|
|
48837
|
+
// predicates are disjoint (Number("true") is NaN), so checking numeric
|
|
48838
|
+
// first is equivalent.
|
|
48839
|
+
const relationAtoms = relation.tuples.map((tuple) => tuple.atoms.map((value) => {
|
|
48840
|
+
if (this.isConvertibleToNumber(value))
|
|
48841
|
+
return Number(value);
|
|
48842
|
+
if (this.isConvertibleToBoolean(value))
|
|
48843
|
+
return this.convertToBoolean(value);
|
|
48844
|
+
return value;
|
|
48845
|
+
}));
|
|
48629
48846
|
// Relation NAMES are not unique — only the qualified id (`Sig<:label`) is.
|
|
48630
48847
|
// e.g. `open util/ordering[A]` and `open util/ordering[B]` both expose a field
|
|
48631
48848
|
// named `Next` (`A/Ord<:Next` and `B/Ord<:Next`). A bare-name reference must
|
|
@@ -48694,8 +48911,8 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
48694
48911
|
return atom.label !== undefined ? atom.label : atom.id;
|
|
48695
48912
|
}
|
|
48696
48913
|
}
|
|
48697
|
-
//
|
|
48698
|
-
|
|
48914
|
+
// Not an atom id. This is the normal case for a string literal — the label
|
|
48915
|
+
// of `"Black"` is just `Black` — so it is not worth reporting.
|
|
48699
48916
|
return value;
|
|
48700
48917
|
}
|
|
48701
48918
|
// helper function to get the label as string (used for @: and @str: operators)
|
|
@@ -48818,11 +49035,16 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
48818
49035
|
return deduplicateTuples(result);
|
|
48819
49036
|
}
|
|
48820
49037
|
// helper function
|
|
48821
|
-
cacheResult(ctx, freeVarsKey, result) {
|
|
49038
|
+
cacheResult(ctx, freeVarsKey, result, diagnosticsBefore) {
|
|
48822
49039
|
if (!this.cachedResults.has(ctx)) {
|
|
48823
49040
|
this.cachedResults.set(ctx, new Map());
|
|
48824
49041
|
}
|
|
48825
|
-
this
|
|
49042
|
+
// Diagnostics raised while evaluating this subtree are cached with the
|
|
49043
|
+
// result. Without this, evaluating the same expression twice would report
|
|
49044
|
+
// an unresolved name only the first time, because the second call is a
|
|
49045
|
+
// cache hit and never reaches visitName.
|
|
49046
|
+
const diagnostics = Array.from(this.diagnostics.values()).filter((d) => !diagnosticsBefore.has(d.name));
|
|
49047
|
+
this.cachedResults.get(ctx).set(freeVarsKey, { result, diagnostics });
|
|
48826
49048
|
}
|
|
48827
49049
|
// helper function
|
|
48828
49050
|
getIden() {
|
|
@@ -48945,11 +49167,20 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
48945
49167
|
const freeVarsKey = this.constructFreeVariableKey(freeVarValues);
|
|
48946
49168
|
// check in the cache
|
|
48947
49169
|
if (foundAllVars && this.cachedResults.has(ctx)) {
|
|
48948
|
-
|
|
48949
|
-
|
|
48950
|
-
|
|
49170
|
+
const cached = this.cachedResults.get(ctx).get(freeVarsKey);
|
|
49171
|
+
if (cached !== undefined) {
|
|
49172
|
+
// cache hit! Replay the diagnostics this subtree produced, so a repeat
|
|
49173
|
+
// evaluation reports the same warnings as the first one.
|
|
49174
|
+
for (const diagnostic of cached.diagnostics) {
|
|
49175
|
+
if (!this.diagnostics.has(diagnostic.name)) {
|
|
49176
|
+
this.diagnostics.set(diagnostic.name, diagnostic);
|
|
49177
|
+
}
|
|
49178
|
+
}
|
|
49179
|
+
return cached.result;
|
|
48951
49180
|
}
|
|
48952
49181
|
}
|
|
49182
|
+
// Snapshot so we can attribute newly-raised diagnostics to this subtree.
|
|
49183
|
+
const diagnosticsBefore = new Set(this.diagnostics.keys());
|
|
48953
49184
|
// cache miss! compute results and store the result in the cache before
|
|
48954
49185
|
// returning. Store the result only for this context node (not for the
|
|
48955
49186
|
// children) to manage the cache size
|
|
@@ -49024,13 +49255,22 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49024
49255
|
total += bodyNumber;
|
|
49025
49256
|
}
|
|
49026
49257
|
this.environmentStack.pop();
|
|
49027
|
-
this.cacheResult(ctx, freeVarsKey, total);
|
|
49258
|
+
this.cacheResult(ctx, freeVarsKey, total, diagnosticsBefore);
|
|
49028
49259
|
return total;
|
|
49029
49260
|
}
|
|
49030
|
-
// Try to optimize numeric comparisons
|
|
49261
|
+
// Try to optimize numeric comparisons.
|
|
49262
|
+
//
|
|
49263
|
+
// The optimizer generates ONLY the bindings that satisfy the comparison
|
|
49264
|
+
// and marks each as true (skipping body evaluation). That is sound for
|
|
49265
|
+
// quantifiers whose result depends on the *satisfying* bindings --
|
|
49266
|
+
// `some`/`no`/`one`/`two`/`lone` (which count them) -- but NOT for `all`,
|
|
49267
|
+
// whose result depends on the existence of a *falsifying* binding. If we
|
|
49268
|
+
// discard the falsifying bindings, `all` never sees a counterexample and
|
|
49269
|
+
// returns `!foundFalse === true` unconditionally. So exclude `all`.
|
|
49031
49270
|
let product;
|
|
49032
49271
|
let useOptimizedPath = false;
|
|
49033
|
-
|
|
49272
|
+
const isAllQuantifier = ctx.quant().ALL_TOK() !== undefined;
|
|
49273
|
+
if (!isDisjoint && !isAllQuantifier && varNames.length >= 2 && (0, NumericConstraintOptimizer_1.areAllNumericSets)(quantifiedSets)) {
|
|
49034
49274
|
// Try to detect and optimize numeric comparison patterns
|
|
49035
49275
|
const pattern = (0, NumericConstraintOptimizer_1.detectNumericComparisonPattern)(barExpr, varNames);
|
|
49036
49276
|
if (pattern && pattern.type !== 'none') {
|
|
@@ -49102,13 +49342,13 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49102
49342
|
if (ctx.quant().ALL_TOK() && foundFalse) {
|
|
49103
49343
|
this.environmentStack.pop();
|
|
49104
49344
|
const value = false;
|
|
49105
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49345
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49106
49346
|
return value;
|
|
49107
49347
|
}
|
|
49108
49348
|
if (ctx.quant().NO_TOK() && foundTrue) {
|
|
49109
49349
|
this.environmentStack.pop();
|
|
49110
49350
|
const value = false;
|
|
49111
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49351
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49112
49352
|
return value;
|
|
49113
49353
|
}
|
|
49114
49354
|
if (ctx.quant().mult()) {
|
|
@@ -49116,25 +49356,25 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49116
49356
|
if (multExpr.LONE_TOK() && result.length > 1) {
|
|
49117
49357
|
this.environmentStack.pop();
|
|
49118
49358
|
const value = false;
|
|
49119
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49359
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49120
49360
|
return value;
|
|
49121
49361
|
}
|
|
49122
49362
|
if (multExpr.SOME_TOK() && foundTrue) {
|
|
49123
49363
|
this.environmentStack.pop();
|
|
49124
49364
|
const value = true;
|
|
49125
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49365
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49126
49366
|
return value;
|
|
49127
49367
|
}
|
|
49128
49368
|
if (multExpr.ONE_TOK() && result.length > 1) {
|
|
49129
49369
|
this.environmentStack.pop();
|
|
49130
49370
|
const value = false;
|
|
49131
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49371
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49132
49372
|
return value;
|
|
49133
49373
|
}
|
|
49134
49374
|
if (multExpr.TWO_TOK() && result.length > 2) {
|
|
49135
49375
|
this.environmentStack.pop();
|
|
49136
49376
|
const value = false;
|
|
49137
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49377
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49138
49378
|
return value;
|
|
49139
49379
|
}
|
|
49140
49380
|
}
|
|
@@ -49142,34 +49382,34 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49142
49382
|
this.environmentStack.pop();
|
|
49143
49383
|
if (ctx.quant().ALL_TOK()) {
|
|
49144
49384
|
const value = !foundFalse;
|
|
49145
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49385
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49146
49386
|
return value;
|
|
49147
49387
|
}
|
|
49148
49388
|
else if (ctx.quant().NO_TOK()) {
|
|
49149
49389
|
const value = !foundTrue;
|
|
49150
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49390
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49151
49391
|
return value;
|
|
49152
49392
|
}
|
|
49153
49393
|
else if (ctx.quant().mult()) {
|
|
49154
49394
|
const multExpr = ctx.quant().mult();
|
|
49155
49395
|
if (multExpr.LONE_TOK()) {
|
|
49156
49396
|
const value = result.length <= 1;
|
|
49157
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49397
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49158
49398
|
return value;
|
|
49159
49399
|
}
|
|
49160
49400
|
else if (multExpr.SOME_TOK()) {
|
|
49161
49401
|
const value = foundTrue;
|
|
49162
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49402
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49163
49403
|
return value;
|
|
49164
49404
|
}
|
|
49165
49405
|
else if (multExpr.ONE_TOK()) {
|
|
49166
49406
|
const value = result.length === 1;
|
|
49167
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49407
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49168
49408
|
return value;
|
|
49169
49409
|
}
|
|
49170
49410
|
else if (multExpr.TWO_TOK()) {
|
|
49171
49411
|
const value = result.length === 2;
|
|
49172
|
-
this.cacheResult(ctx, freeVarsKey, value);
|
|
49412
|
+
this.cacheResult(ctx, freeVarsKey, value, diagnosticsBefore);
|
|
49173
49413
|
return value;
|
|
49174
49414
|
}
|
|
49175
49415
|
}
|
|
@@ -49181,7 +49421,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49181
49421
|
//console.log('childrenResults in expr:', childrenResults);
|
|
49182
49422
|
if (results === undefined) {
|
|
49183
49423
|
//console.log('returning childrenResults in expr:', childrenResults);
|
|
49184
|
-
this.cacheResult(ctx, freeVarsKey, childrenResults);
|
|
49424
|
+
this.cacheResult(ctx, freeVarsKey, childrenResults, diagnosticsBefore);
|
|
49185
49425
|
return childrenResults;
|
|
49186
49426
|
}
|
|
49187
49427
|
if (isSingleValue(results)) {
|
|
@@ -49194,7 +49434,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49194
49434
|
results = results.concat(childrenResults);
|
|
49195
49435
|
}
|
|
49196
49436
|
//console.log('results being returned in expr:', results);
|
|
49197
|
-
this.cacheResult(ctx, freeVarsKey, results);
|
|
49437
|
+
this.cacheResult(ctx, freeVarsKey, results, diagnosticsBefore);
|
|
49198
49438
|
return results;
|
|
49199
49439
|
}
|
|
49200
49440
|
visitExpr1(ctx) {
|
|
@@ -49502,25 +49742,21 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49502
49742
|
break;
|
|
49503
49743
|
case "in":
|
|
49504
49744
|
case "ni": {
|
|
49505
|
-
|
|
49506
|
-
//
|
|
49507
|
-
//
|
|
49508
|
-
|
|
49509
|
-
|
|
49510
|
-
|
|
49511
|
-
|
|
49512
|
-
|
|
49513
|
-
|
|
49514
|
-
|
|
49515
|
-
|
|
49516
|
-
|
|
49517
|
-
|
|
49518
|
-
|
|
49519
|
-
|
|
49520
|
-
else {
|
|
49521
|
-
// left is a tuple array but right is a single value, so false
|
|
49522
|
-
membershipResult = false;
|
|
49523
|
-
}
|
|
49745
|
+
// In Alloy/Forge everything is a relation, and a scalar is just a
|
|
49746
|
+
// singleton set. Lift any scalar operand to a singleton tuple so `in`
|
|
49747
|
+
// is uniformly subset:
|
|
49748
|
+
// a in b ({a} ⊆ {b}) -> equality when both are scalars
|
|
49749
|
+
// a in {..} ({a} ⊆ set) -> membership
|
|
49750
|
+
// {..} in b (set ⊆ {b}) -> subset of a singleton
|
|
49751
|
+
// isTupleArraySubset already returns true for equal sets and for an
|
|
49752
|
+
// empty left-hand set, so a single subset check covers every case.
|
|
49753
|
+
const leftSet = isSingleValue(leftChildValue)
|
|
49754
|
+
? [[leftChildValue]]
|
|
49755
|
+
: leftChildValue;
|
|
49756
|
+
const rightSet = isSingleValue(rightChildValue)
|
|
49757
|
+
? [[rightChildValue]]
|
|
49758
|
+
: rightChildValue;
|
|
49759
|
+
const membershipResult = isTupleArraySubset(leftSet, rightSet);
|
|
49524
49760
|
results = ctx.compareOp()?.text === "ni" ? !membershipResult : membershipResult;
|
|
49525
49761
|
break;
|
|
49526
49762
|
}
|
|
@@ -49550,20 +49786,34 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49550
49786
|
if (ctx.SET_TOK()) {
|
|
49551
49787
|
return childrenResults;
|
|
49552
49788
|
}
|
|
49553
|
-
|
|
49554
|
-
|
|
49555
|
-
|
|
49556
|
-
if (ctx.
|
|
49557
|
-
|
|
49558
|
-
|
|
49559
|
-
|
|
49560
|
-
|
|
49561
|
-
|
|
49562
|
-
|
|
49563
|
-
|
|
49564
|
-
|
|
49565
|
-
|
|
49566
|
-
|
|
49789
|
+
// For the multiplicity checks, a bare scalar (atom or int) is a singleton
|
|
49790
|
+
// set of size 1. A boolean is not a set, so it gets size -1 and every
|
|
49791
|
+
// multiplicity below is false (matching the previous behavior).
|
|
49792
|
+
if (ctx.ONE_TOK() ||
|
|
49793
|
+
ctx.TWO_TOK() ||
|
|
49794
|
+
ctx.NO_TOK() ||
|
|
49795
|
+
ctx.SOME_TOK() ||
|
|
49796
|
+
ctx.LONE_TOK()) {
|
|
49797
|
+
const setSize = isTupleArray(childrenResults)
|
|
49798
|
+
? childrenResults.length
|
|
49799
|
+
: isString(childrenResults) || isNumber(childrenResults)
|
|
49800
|
+
? 1
|
|
49801
|
+
: -1;
|
|
49802
|
+
if (ctx.ONE_TOK()) {
|
|
49803
|
+
return setSize === 1;
|
|
49804
|
+
}
|
|
49805
|
+
if (ctx.TWO_TOK()) {
|
|
49806
|
+
return setSize === 2;
|
|
49807
|
+
}
|
|
49808
|
+
if (ctx.NO_TOK()) {
|
|
49809
|
+
return setSize === 0;
|
|
49810
|
+
}
|
|
49811
|
+
if (ctx.SOME_TOK()) {
|
|
49812
|
+
return setSize > 0;
|
|
49813
|
+
}
|
|
49814
|
+
if (ctx.LONE_TOK()) {
|
|
49815
|
+
return setSize === 0 || setSize === 1;
|
|
49816
|
+
}
|
|
49567
49817
|
}
|
|
49568
49818
|
return childrenResults;
|
|
49569
49819
|
}
|
|
@@ -49574,6 +49824,10 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49574
49824
|
const rightChildValue = this.visit(ctx.expr10());
|
|
49575
49825
|
// should only work if arities are the same
|
|
49576
49826
|
if (isSingleValue(leftChildValue) && isSingleValue(rightChildValue)) {
|
|
49827
|
+
// Union has set semantics: two equal scalars collapse to one element.
|
|
49828
|
+
if (leftChildValue === rightChildValue) {
|
|
49829
|
+
return [[leftChildValue]];
|
|
49830
|
+
}
|
|
49577
49831
|
return [[leftChildValue], [rightChildValue]];
|
|
49578
49832
|
}
|
|
49579
49833
|
else if (isSingleValue(leftChildValue) && isTupleArray(rightChildValue)) {
|
|
@@ -49581,7 +49835,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49581
49835
|
return leftChildValue;
|
|
49582
49836
|
}
|
|
49583
49837
|
if (rightChildValue[0].length === 1) {
|
|
49584
|
-
return
|
|
49838
|
+
return deduplicateConcat([[[leftChildValue]], rightChildValue]);
|
|
49585
49839
|
}
|
|
49586
49840
|
throw new Error("arity mismatch in set union!");
|
|
49587
49841
|
}
|
|
@@ -49590,7 +49844,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49590
49844
|
return rightChildValue;
|
|
49591
49845
|
}
|
|
49592
49846
|
if (leftChildValue[0].length === 1) {
|
|
49593
|
-
return
|
|
49847
|
+
return deduplicateConcat([leftChildValue, [[rightChildValue]]]);
|
|
49594
49848
|
}
|
|
49595
49849
|
throw new Error("arity mismatch in set union!");
|
|
49596
49850
|
}
|
|
@@ -49605,7 +49859,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49605
49859
|
return leftChildValue;
|
|
49606
49860
|
}
|
|
49607
49861
|
if (leftChildValue[0].length === rightChildValue[0].length) {
|
|
49608
|
-
return
|
|
49862
|
+
return deduplicateConcat([leftChildValue, rightChildValue]);
|
|
49609
49863
|
}
|
|
49610
49864
|
}
|
|
49611
49865
|
else {
|
|
@@ -49651,9 +49905,22 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49651
49905
|
return leftChildValue;
|
|
49652
49906
|
}
|
|
49653
49907
|
if (leftChildValue[0].length === rightChildValue[0].length) {
|
|
49654
|
-
// Optimize set difference using Set for O(n+m) instead of O(n*m)
|
|
49655
|
-
|
|
49656
|
-
|
|
49908
|
+
// Optimize set difference using Set for O(n+m) instead of O(n*m),
|
|
49909
|
+
// reusing canonical keys instead of re-serializing each side.
|
|
49910
|
+
const rightSet = new Set(ensureKeys(rightChildValue));
|
|
49911
|
+
const leftKeys = ensureKeys(leftChildValue);
|
|
49912
|
+
const result = [];
|
|
49913
|
+
const resultKeys = [];
|
|
49914
|
+
for (let i = 0; i < leftChildValue.length; i++) {
|
|
49915
|
+
if (!rightSet.has(leftKeys[i])) {
|
|
49916
|
+
result.push(leftChildValue[i]);
|
|
49917
|
+
resultKeys.push(leftKeys[i]);
|
|
49918
|
+
}
|
|
49919
|
+
}
|
|
49920
|
+
if (result.length >= KEY_REGISTER_MIN) {
|
|
49921
|
+
relationKeys.set(result, resultKeys);
|
|
49922
|
+
}
|
|
49923
|
+
return result;
|
|
49657
49924
|
}
|
|
49658
49925
|
}
|
|
49659
49926
|
else {
|
|
@@ -49667,10 +49934,15 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49667
49934
|
const childrenResults = this.visitChildren(ctx);
|
|
49668
49935
|
//console.log('childrenResults in expr9:', childrenResults);
|
|
49669
49936
|
if (ctx.CARD_TOK()) {
|
|
49670
|
-
if (
|
|
49671
|
-
|
|
49937
|
+
if (isTupleArray(childrenResults)) {
|
|
49938
|
+
return childrenResults.length;
|
|
49939
|
+
}
|
|
49940
|
+
// A scalar atom or int is a singleton set (cardinality 1). Booleans are
|
|
49941
|
+
// formulas, not sets, so they remain an error.
|
|
49942
|
+
if (isString(childrenResults) || isNumber(childrenResults)) {
|
|
49943
|
+
return 1;
|
|
49672
49944
|
}
|
|
49673
|
-
|
|
49945
|
+
throw new Error("The cardinal operator must be applied to a set of tuples!");
|
|
49674
49946
|
}
|
|
49675
49947
|
return childrenResults;
|
|
49676
49948
|
}
|
|
@@ -49726,9 +49998,22 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49726
49998
|
return [];
|
|
49727
49999
|
}
|
|
49728
50000
|
if (leftChildValue[0].length === rightChildValue[0].length) {
|
|
49729
|
-
// Optimize set intersection using Set for O(n+m) instead of O(n*m)
|
|
49730
|
-
|
|
49731
|
-
|
|
50001
|
+
// Optimize set intersection using Set for O(n+m) instead of O(n*m),
|
|
50002
|
+
// reusing canonical keys instead of re-serializing each side.
|
|
50003
|
+
const rightSet = new Set(ensureKeys(rightChildValue));
|
|
50004
|
+
const leftKeys = ensureKeys(leftChildValue);
|
|
50005
|
+
const result = [];
|
|
50006
|
+
const resultKeys = [];
|
|
50007
|
+
for (let i = 0; i < leftChildValue.length; i++) {
|
|
50008
|
+
if (rightSet.has(leftKeys[i])) {
|
|
50009
|
+
result.push(leftChildValue[i]);
|
|
50010
|
+
resultKeys.push(leftKeys[i]);
|
|
50011
|
+
}
|
|
50012
|
+
}
|
|
50013
|
+
if (result.length >= KEY_REGISTER_MIN) {
|
|
50014
|
+
relationKeys.set(result, resultKeys);
|
|
50015
|
+
}
|
|
50016
|
+
return result;
|
|
49732
50017
|
}
|
|
49733
50018
|
}
|
|
49734
50019
|
else {
|
|
@@ -49889,63 +50174,36 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49889
50174
|
else {
|
|
49890
50175
|
throw new Error("Unknown label operator");
|
|
49891
50176
|
}
|
|
49892
|
-
|
|
49893
|
-
|
|
49894
|
-
|
|
49895
|
-
|
|
49896
|
-
|
|
49897
|
-
|
|
49898
|
-
|
|
49899
|
-
|
|
49900
|
-
text = text.slice(1, -1);
|
|
49901
|
-
}
|
|
49902
|
-
try {
|
|
49903
|
-
return convertFunction(text);
|
|
49904
|
-
}
|
|
49905
|
-
catch (error) {
|
|
49906
|
-
// If conversion fails, fall back to string for unknown identifiers
|
|
49907
|
-
return text;
|
|
49908
|
-
}
|
|
49909
|
-
}
|
|
49910
|
-
if (isSingleValue(innerResult)) {
|
|
49911
|
-
return convertFunction(innerResult);
|
|
49912
|
-
}
|
|
49913
|
-
else if (isTupleArray(innerResult)) {
|
|
49914
|
-
// For single-element tuple arrays, return the converted label of the element
|
|
49915
|
-
if (innerResult.length === 1 && innerResult[0].length === 1) {
|
|
49916
|
-
return convertFunction(innerResult[0][0]);
|
|
49917
|
-
}
|
|
49918
|
-
// For multi-element cases, apply conversion to each tuple element
|
|
49919
|
-
return innerResult.map((tuple) => tuple.map((value) => convertFunction(value)));
|
|
49920
|
-
}
|
|
49921
|
-
throw new Error(`${operatorName} operator can only be applied to single values or tuple arrays`);
|
|
49922
|
-
}
|
|
49923
|
-
catch (error) {
|
|
49924
|
-
// If evaluation fails due to unknown identifier, use the text as the label
|
|
49925
|
-
if (error instanceof NameNotFoundError) {
|
|
49926
|
-
// Extract the identifier from the inner expression
|
|
49927
|
-
let identifierText = innerExpr.text;
|
|
49928
|
-
if (identifierText.startsWith('(') && identifierText.endsWith(')')) {
|
|
49929
|
-
identifierText = identifierText.slice(1, -1);
|
|
49930
|
-
}
|
|
49931
|
-
try {
|
|
49932
|
-
return convertFunction(identifierText);
|
|
49933
|
-
}
|
|
49934
|
-
catch (conversionError) {
|
|
49935
|
-
// If conversion fails, fall back to string for unknown identifiers
|
|
49936
|
-
return identifierText;
|
|
49937
|
-
}
|
|
50177
|
+
const innerResult = this.visit(innerExpr);
|
|
50178
|
+
if (isSingleValue(innerResult)) {
|
|
50179
|
+
return convertFunction(innerResult);
|
|
50180
|
+
}
|
|
50181
|
+
else if (isTupleArray(innerResult)) {
|
|
50182
|
+
// For single-element tuple arrays, return the converted label of the element
|
|
50183
|
+
if (innerResult.length === 1 && innerResult[0].length === 1) {
|
|
50184
|
+
return convertFunction(innerResult[0][0]);
|
|
49938
50185
|
}
|
|
49939
|
-
|
|
50186
|
+
// Otherwise convert elementwise. An empty operand yields an empty
|
|
50187
|
+
// result — the operand evaluated fine, it just denotes nothing.
|
|
50188
|
+
return innerResult.map((tuple) => tuple.map((value) => convertFunction(value)));
|
|
49940
50189
|
}
|
|
50190
|
+
throw new Error(`${operatorName} operator can only be applied to single values or tuple arrays`);
|
|
49941
50191
|
}
|
|
49942
50192
|
const childrenResults = this.visitChildren(ctx);
|
|
49943
50193
|
//console.log('visitChildren result for', ctx.text, ':', childrenResults);
|
|
49944
50194
|
if (ctx.TILDE_TOK()) {
|
|
49945
50195
|
// this flips the order of the elements in the tuples of a relation if
|
|
49946
50196
|
// the relation has arity 2
|
|
49947
|
-
if (isTupleArray(childrenResults)
|
|
49948
|
-
|
|
50197
|
+
if (isTupleArray(childrenResults)) {
|
|
50198
|
+
// The transpose of the empty relation is the empty relation. Guarding
|
|
50199
|
+
// only on `length > 0` made `~<empty>` throw (e.g. `~(left - left)`),
|
|
50200
|
+
// even though `^`/`*` handle the empty relation fine.
|
|
50201
|
+
if (childrenResults.length === 0) {
|
|
50202
|
+
return [];
|
|
50203
|
+
}
|
|
50204
|
+
if (childrenResults[0].length === 2) {
|
|
50205
|
+
return childrenResults.map((tuple) => [tuple[1], tuple[0]]);
|
|
50206
|
+
}
|
|
49949
50207
|
}
|
|
49950
50208
|
throw new Error("expected the expression provided to ~ to have arity 2; bad arity received!");
|
|
49951
50209
|
}
|
|
@@ -49959,15 +50217,9 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49959
50217
|
if (isTupleArray(childrenResults)) {
|
|
49960
50218
|
const transitiveClosureResult = transitiveClosure(childrenResults);
|
|
49961
50219
|
const idenResult = this.getIden();
|
|
49962
|
-
//
|
|
49963
|
-
|
|
49964
|
-
|
|
49965
|
-
resultSet.add(tupleToKey(tuple));
|
|
49966
|
-
}
|
|
49967
|
-
for (const tuple of transitiveClosureResult) {
|
|
49968
|
-
resultSet.add(tupleToKey(tuple));
|
|
49969
|
-
}
|
|
49970
|
-
return Array.from(resultSet).map(key => JSON.parse(key));
|
|
50220
|
+
// Dedup while preserving the original tuple objects (and their
|
|
50221
|
+
// memoized keys) -- avoids re-materializing every tuple via JSON.parse.
|
|
50222
|
+
return deduplicateTuples(idenResult.concat(transitiveClosureResult));
|
|
49971
50223
|
}
|
|
49972
50224
|
}
|
|
49973
50225
|
return childrenResults;
|
|
@@ -50041,6 +50293,14 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50041
50293
|
// }
|
|
50042
50294
|
return value;
|
|
50043
50295
|
}
|
|
50296
|
+
// Handle none (the empty relation). Without this, `none` falls through to
|
|
50297
|
+
// the string-literal branch below and evaluates to the string "none",
|
|
50298
|
+
// which then pollutes every set operation it touches (e.g.
|
|
50299
|
+
// `S + none` gains a spurious `["none"]` element and `#none` throws).
|
|
50300
|
+
// The static analyzer already treats `none` as the empty set.
|
|
50301
|
+
if (constant.NONE_TOK() !== undefined) {
|
|
50302
|
+
return [];
|
|
50303
|
+
}
|
|
50044
50304
|
// Handle iden (identity relation)
|
|
50045
50305
|
if (constant.IDEN_TOK() !== undefined) {
|
|
50046
50306
|
// The identity relation contains tuples (x, x) for every atom x in the universe
|
|
@@ -50077,6 +50337,12 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50077
50337
|
}
|
|
50078
50338
|
return univRelation;
|
|
50079
50339
|
}
|
|
50340
|
+
// A double-quoted string literal. This is the ONLY way to write a string,
|
|
50341
|
+
// so `"Black"` is a string regardless of whether the instance happens to
|
|
50342
|
+
// contain a sig or atom named Black.
|
|
50343
|
+
if (constant.STRING_TOK() !== undefined) {
|
|
50344
|
+
return unquoteStringLiteral(constant.STRING_TOK().text);
|
|
50345
|
+
}
|
|
50080
50346
|
// Handle boolean constants
|
|
50081
50347
|
if (constant.text === 'true') {
|
|
50082
50348
|
return true;
|
|
@@ -50323,15 +50589,15 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50323
50589
|
if (exports.SUPPORTED_BUILTINS.includes(identifier)) {
|
|
50324
50590
|
return identifier;
|
|
50325
50591
|
}
|
|
50326
|
-
//
|
|
50327
|
-
//
|
|
50328
|
-
//
|
|
50329
|
-
//
|
|
50330
|
-
|
|
50331
|
-
|
|
50332
|
-
|
|
50333
|
-
|
|
50334
|
-
|
|
50592
|
+
// Nothing in this instance answers to this name. Report it and evaluate to
|
|
50593
|
+
// the empty relation rather than throwing: a selector is authored against a
|
|
50594
|
+
// model but run against instances that vary, and a sig that is empty in this
|
|
50595
|
+
// instance is absent from the instance data entirely. See
|
|
50596
|
+
// `reportUnresolvedName`.
|
|
50597
|
+
//
|
|
50598
|
+
// Note this is NOT how string literals are written — use `"..."`.
|
|
50599
|
+
this.reportUnresolvedName(identifier);
|
|
50600
|
+
return [];
|
|
50335
50601
|
}
|
|
50336
50602
|
visitQualName(ctx) {
|
|
50337
50603
|
// NOTE: this currently only supports Int; doesn't support other branches
|
|
@@ -50872,6 +51138,7 @@ exports.ForgeExprStaticAnalyzer = void 0;
|
|
|
50872
51138
|
const AbstractParseTreeVisitor_1 = __webpack_require__(/*! antlr4ts/tree/AbstractParseTreeVisitor */ "./node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js");
|
|
50873
51139
|
const ForgeParser_1 = __webpack_require__(/*! ./forge-antlr/ForgeParser */ "./src/forge-antlr/ForgeParser.ts");
|
|
50874
51140
|
const utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
51141
|
+
const ForgeExprEvaluator_1 = __webpack_require__(/*! ./ForgeExprEvaluator */ "./src/ForgeExprEvaluator.ts");
|
|
50875
51142
|
const UNKNOWN = { kind: "unknown" };
|
|
50876
51143
|
// Helper that wraps the schema with O(1) lookups and lattice queries.
|
|
50877
51144
|
class SchemaInfo {
|
|
@@ -51004,9 +51271,28 @@ function negationOperandText(ctx) {
|
|
|
51004
51271
|
class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor {
|
|
51005
51272
|
constructor(schema) {
|
|
51006
51273
|
super();
|
|
51274
|
+
// Variables bound by enclosing quantifiers / comprehensions. Consulted only
|
|
51275
|
+
// for unresolved-name reporting, so a binder variable is not mistaken for a
|
|
51276
|
+
// missing schema entity.
|
|
51277
|
+
this.boundScopes = [];
|
|
51278
|
+
// Names that resolve to nothing in the schema, in first-seen order.
|
|
51279
|
+
this.unresolved = new Set();
|
|
51007
51280
|
if (schema)
|
|
51008
51281
|
this.schema = new SchemaInfo(schema);
|
|
51009
51282
|
}
|
|
51283
|
+
isBound(name) {
|
|
51284
|
+
return this.boundScopes.some((scope) => scope.has(name));
|
|
51285
|
+
}
|
|
51286
|
+
/** Run `body` with `names` treated as bound. */
|
|
51287
|
+
withBoundScope(names, body) {
|
|
51288
|
+
this.boundScopes.push(names);
|
|
51289
|
+
try {
|
|
51290
|
+
return body();
|
|
51291
|
+
}
|
|
51292
|
+
finally {
|
|
51293
|
+
this.boundScopes.pop();
|
|
51294
|
+
}
|
|
51295
|
+
}
|
|
51010
51296
|
// Walk a nameList (`a, b, c`) and accumulate identifiers into `out`.
|
|
51011
51297
|
collectNamesFromList(ctx, out) {
|
|
51012
51298
|
out.add((0, utils_1.getIdentifierName)(ctx.name()));
|
|
@@ -51040,19 +51326,28 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51040
51326
|
}
|
|
51041
51327
|
// Public entry: convert internal lattice value to a verdict + reason.
|
|
51042
51328
|
analyze(ctx) {
|
|
51329
|
+
this.unresolved.clear();
|
|
51330
|
+
this.boundScopes.length = 0;
|
|
51043
51331
|
const v = this.visit(ctx);
|
|
51332
|
+
// Collected separately from the fold, which short-circuits. See
|
|
51333
|
+
// `collectUnresolvedNames`.
|
|
51334
|
+
this.boundScopes.length = 0;
|
|
51335
|
+
this.collectUnresolvedNames(ctx);
|
|
51336
|
+
const names = this.unresolved.size > 0
|
|
51337
|
+
? { unresolvedNames: Array.from(this.unresolved) }
|
|
51338
|
+
: {};
|
|
51044
51339
|
if (v.kind === "bool") {
|
|
51045
51340
|
return v.value
|
|
51046
|
-
? { status: "tautology", reason: "expression folds to literal true" }
|
|
51047
|
-
: { status: "unsat", reason: "expression folds to literal false" };
|
|
51341
|
+
? { status: "tautology", reason: "expression folds to literal true", ...names }
|
|
51342
|
+
: { status: "unsat", reason: "expression folds to literal false", ...names };
|
|
51048
51343
|
}
|
|
51049
51344
|
if (v.kind === "empty") {
|
|
51050
|
-
return { status: "empty", reason: "expression is provably the empty set" };
|
|
51345
|
+
return { status: "empty", reason: "expression is provably the empty set", ...names };
|
|
51051
51346
|
}
|
|
51052
51347
|
if (v.kind === "ill-typed") {
|
|
51053
|
-
return { status: "ill-typed", reason: v.reason };
|
|
51348
|
+
return { status: "ill-typed", reason: v.reason, ...names };
|
|
51054
51349
|
}
|
|
51055
|
-
return { status: "unknown" };
|
|
51350
|
+
return { status: "unknown", ...names };
|
|
51056
51351
|
}
|
|
51057
51352
|
// Arity of an Abstract when known; -1 means "not determinable".
|
|
51058
51353
|
static arityOf(v) {
|
|
@@ -51110,8 +51405,8 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51110
51405
|
// Reserved-name check at the binder: under a schema, type/relation names
|
|
51111
51406
|
// cannot be reused as quantified variables.
|
|
51112
51407
|
const declListTop = ctx.quantDeclList();
|
|
51408
|
+
const boundHere = new Set();
|
|
51113
51409
|
if (declListTop) {
|
|
51114
|
-
const boundHere = new Set();
|
|
51115
51410
|
this.collectBoundNames(declListTop, boundHere);
|
|
51116
51411
|
const reservedError = this.illTypedIfBindsReservedName(boundHere);
|
|
51117
51412
|
if (reservedError)
|
|
@@ -51138,7 +51433,7 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51138
51433
|
// and would need the binding to be meaningful).
|
|
51139
51434
|
let body = UNKNOWN;
|
|
51140
51435
|
if (blockOrBar.BAR_TOK() && blockOrBar.expr()) {
|
|
51141
|
-
body = this.visit(blockOrBar.expr());
|
|
51436
|
+
body = this.withBoundScope(boundHere, () => this.visit(blockOrBar.expr()));
|
|
51142
51437
|
}
|
|
51143
51438
|
const mult = quant.mult();
|
|
51144
51439
|
const isAll = quant.ALL_TOK() !== undefined;
|
|
@@ -51781,7 +52076,7 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51781
52076
|
return reservedError;
|
|
51782
52077
|
const blockOrBar = ctx.blockOrBar();
|
|
51783
52078
|
if (blockOrBar && blockOrBar.BAR_TOK() && blockOrBar.expr()) {
|
|
51784
|
-
const body = this.visit(blockOrBar.expr());
|
|
52079
|
+
const body = this.withBoundScope(boundHere, () => this.visit(blockOrBar.expr()));
|
|
51785
52080
|
if (body.kind === "ill-typed")
|
|
51786
52081
|
return body;
|
|
51787
52082
|
if (body.kind === "bool" && !body.value)
|
|
@@ -51828,10 +52123,75 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51828
52123
|
? { kind: "typed", arity, columnTypes: cols }
|
|
51829
52124
|
: { kind: "typed", arity };
|
|
51830
52125
|
}
|
|
52126
|
+
return UNKNOWN;
|
|
51831
52127
|
}
|
|
51832
52128
|
}
|
|
51833
52129
|
return UNKNOWN;
|
|
51834
52130
|
}
|
|
52131
|
+
// ---------------------------------------------------------------------
|
|
52132
|
+
// Unresolved-name collection
|
|
52133
|
+
//
|
|
52134
|
+
// This is a separate traversal rather than a side effect of the folding
|
|
52135
|
+
// visitor above. Folding short-circuits — it returns as soon as one child
|
|
52136
|
+
// settles the verdict — so names in the subtrees it skipped would never be
|
|
52137
|
+
// seen. `{x : none, y : Playr | Foo = Foo}` folds to `empty` at the first
|
|
52138
|
+
// decl and never looks at `Playr` or `Foo`. Reporting has to be complete
|
|
52139
|
+
// regardless of how quickly the verdict is decided.
|
|
52140
|
+
// ---------------------------------------------------------------------
|
|
52141
|
+
/** Walk the whole tree, recording every name the schema does not declare. */
|
|
52142
|
+
collectUnresolvedNames(node) {
|
|
52143
|
+
if (!this.schema)
|
|
52144
|
+
return;
|
|
52145
|
+
if (node instanceof ForgeParser_1.NameContext) {
|
|
52146
|
+
this.recordIfUnresolved((0, utils_1.getIdentifierName)(node));
|
|
52147
|
+
return;
|
|
52148
|
+
}
|
|
52149
|
+
// A binder scopes its variables over the body but not over the domains it
|
|
52150
|
+
// binds them from, and its declared names are binding occurrences rather
|
|
52151
|
+
// than references — so neither is walked generically.
|
|
52152
|
+
const binder = this.asBinder(node);
|
|
52153
|
+
if (binder) {
|
|
52154
|
+
const bound = new Set();
|
|
52155
|
+
let decl = binder.declList;
|
|
52156
|
+
while (decl) {
|
|
52157
|
+
this.collectUnresolvedNames(decl.quantDecl().expr());
|
|
52158
|
+
this.collectNamesFromList(decl.quantDecl().nameList(), bound);
|
|
52159
|
+
decl = decl.quantDeclList();
|
|
52160
|
+
}
|
|
52161
|
+
if (binder.body) {
|
|
52162
|
+
this.withBoundScope(bound, () => this.collectUnresolvedNames(binder.body));
|
|
52163
|
+
}
|
|
52164
|
+
return;
|
|
52165
|
+
}
|
|
52166
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
52167
|
+
this.collectUnresolvedNames(node.getChild(i));
|
|
52168
|
+
}
|
|
52169
|
+
}
|
|
52170
|
+
/** The binder parts of a quantifier or set comprehension, if this node is one. */
|
|
52171
|
+
asBinder(node) {
|
|
52172
|
+
const isQuantifier = node instanceof ForgeParser_1.ExprContext && node.quant() !== undefined;
|
|
52173
|
+
const isComprehension = node instanceof ForgeParser_1.Expr18Context && node.LEFT_CURLY_TOK() !== undefined;
|
|
52174
|
+
if (!isQuantifier && !isComprehension)
|
|
52175
|
+
return undefined;
|
|
52176
|
+
const ctx = node;
|
|
52177
|
+
const declList = ctx.quantDeclList();
|
|
52178
|
+
if (!declList)
|
|
52179
|
+
return undefined;
|
|
52180
|
+
return { declList, body: ctx.blockOrBar() };
|
|
52181
|
+
}
|
|
52182
|
+
recordIfUnresolved(id) {
|
|
52183
|
+
if (id === "true" || id === "false")
|
|
52184
|
+
return;
|
|
52185
|
+
if (this.isBound(id) || ForgeExprEvaluator_1.SUPPORTED_BUILTINS.includes(id))
|
|
52186
|
+
return;
|
|
52187
|
+
// Nothing in the schema answers to this name. Unlike the evaluator — which
|
|
52188
|
+
// sees one instance and cannot tell a typo from a sig that is empty in this
|
|
52189
|
+
// frame — a schema lists every declared entity, so this really is a name
|
|
52190
|
+
// that does not exist.
|
|
52191
|
+
if (this.schema.getType(id) || this.schema.getRelations(id).length > 0)
|
|
52192
|
+
return;
|
|
52193
|
+
this.unresolved.add(id);
|
|
52194
|
+
}
|
|
51835
52195
|
}
|
|
51836
52196
|
exports.ForgeExprStaticAnalyzer = ForgeExprStaticAnalyzer;
|
|
51837
52197
|
|
|
@@ -52722,7 +53082,7 @@ ForgeLexer.OPEN_TOK = 1;
|
|
|
52722
53082
|
ForgeLexer.LEFT_SQUARE_TOK = 2;
|
|
52723
53083
|
ForgeLexer.RIGHT_SQUARE_TOK = 3;
|
|
52724
53084
|
ForgeLexer.AS_TOK = 4;
|
|
52725
|
-
ForgeLexer.
|
|
53085
|
+
ForgeLexer.STRING_TOK = 5;
|
|
52726
53086
|
ForgeLexer.VAR_TOK = 6;
|
|
52727
53087
|
ForgeLexer.ABSTRACT_TOK = 7;
|
|
52728
53088
|
ForgeLexer.SIG_TOK = 8;
|
|
@@ -52841,7 +53201,7 @@ ForgeLexer.modeNames = [
|
|
|
52841
53201
|
"DEFAULT_MODE",
|
|
52842
53202
|
];
|
|
52843
53203
|
ForgeLexer.ruleNames = [
|
|
52844
|
-
"OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK", "
|
|
53204
|
+
"OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK", "STRING_TOK",
|
|
52845
53205
|
"VAR_TOK", "ABSTRACT_TOK", "SIG_TOK", "LEFT_CURLY_TOK", "RIGHT_CURLY_TOK",
|
|
52846
53206
|
"EXTENDS_TOK", "IN_TOK", "PLUS_TOK", "LONE_TOK", "SOME_TOK", "ONE_TOK",
|
|
52847
53207
|
"TWO_TOK", "SET_TOK", "FUNC_TOK", "PFUNC_TOK", "DISJ_TOK", "COLON_TOK",
|
|
@@ -52881,7 +53241,7 @@ ForgeLexer._LITERAL_NAMES = [
|
|
|
52881
53241
|
];
|
|
52882
53242
|
ForgeLexer._SYMBOLIC_NAMES = [
|
|
52883
53243
|
undefined, "OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK",
|
|
52884
|
-
"
|
|
53244
|
+
"STRING_TOK", "VAR_TOK", "ABSTRACT_TOK", "SIG_TOK", "LEFT_CURLY_TOK",
|
|
52885
53245
|
"RIGHT_CURLY_TOK", "EXTENDS_TOK", "IN_TOK", "PLUS_TOK", "LONE_TOK", "SOME_TOK",
|
|
52886
53246
|
"ONE_TOK", "TWO_TOK", "SET_TOK", "FUNC_TOK", "PFUNC_TOK", "DISJ_TOK",
|
|
52887
53247
|
"COLON_TOK", "WHEAT_TOK", "PRED_TOK", "DOT_TOK", "FUN_TOK", "LEFT_PAREN_TOK",
|
|
@@ -53894,7 +54254,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53894
54254
|
this.state = 220;
|
|
53895
54255
|
this.match(ForgeParser.OPEN_TOK);
|
|
53896
54256
|
this.state = 221;
|
|
53897
|
-
this.match(ForgeParser.
|
|
54257
|
+
this.match(ForgeParser.STRING_TOK);
|
|
53898
54258
|
this.state = 224;
|
|
53899
54259
|
this._errHandler.sync(this);
|
|
53900
54260
|
_la = this._input.LA(1);
|
|
@@ -55037,7 +55397,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55037
55397
|
this.enterRule(_localctx, 46, ForgeParser.RULE_const);
|
|
55038
55398
|
let _la;
|
|
55039
55399
|
try {
|
|
55040
|
-
this.state =
|
|
55400
|
+
this.state = 433;
|
|
55041
55401
|
this._errHandler.sync(this);
|
|
55042
55402
|
switch (this._input.LA(1)) {
|
|
55043
55403
|
case ForgeParser.NONE_TOK:
|
|
@@ -55078,6 +55438,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55078
55438
|
this.number();
|
|
55079
55439
|
}
|
|
55080
55440
|
break;
|
|
55441
|
+
case ForgeParser.STRING_TOK:
|
|
55442
|
+
this.enterOuterAlt(_localctx, 5);
|
|
55443
|
+
{
|
|
55444
|
+
this.state = 432;
|
|
55445
|
+
this.match(ForgeParser.STRING_TOK);
|
|
55446
|
+
}
|
|
55447
|
+
break;
|
|
55081
55448
|
default:
|
|
55082
55449
|
throw new NoViableAltException_1.NoViableAltException(this);
|
|
55083
55450
|
}
|
|
@@ -55105,13 +55472,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55105
55472
|
try {
|
|
55106
55473
|
this.enterOuterAlt(_localctx, 1);
|
|
55107
55474
|
{
|
|
55108
|
-
this.state = 434;
|
|
55109
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55110
55475
|
this.state = 435;
|
|
55111
|
-
this.
|
|
55476
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55112
55477
|
this.state = 436;
|
|
55113
|
-
this.
|
|
55478
|
+
this.expr();
|
|
55114
55479
|
this.state = 437;
|
|
55480
|
+
this.match(ForgeParser.IS_TOK);
|
|
55481
|
+
this.state = 438;
|
|
55115
55482
|
_la = this._input.LA(1);
|
|
55116
55483
|
if (!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & ((1 << (ForgeParser.SAT_TOK - 40)) | (1 << (ForgeParser.UNSAT_TOK - 40)) | (1 << (ForgeParser.FORGE_ERROR_TOK - 40)))) !== 0))) {
|
|
55117
55484
|
this._errHandler.recoverInline(this);
|
|
@@ -55123,24 +55490,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55123
55490
|
this._errHandler.reportMatch(this);
|
|
55124
55491
|
this.consume();
|
|
55125
55492
|
}
|
|
55126
|
-
this.state =
|
|
55493
|
+
this.state = 440;
|
|
55127
55494
|
this._errHandler.sync(this);
|
|
55128
55495
|
switch (this.interpreter.adaptivePredict(this._input, 48, this._ctx)) {
|
|
55129
55496
|
case 1:
|
|
55130
55497
|
{
|
|
55131
|
-
this.state =
|
|
55498
|
+
this.state = 439;
|
|
55132
55499
|
this.scope();
|
|
55133
55500
|
}
|
|
55134
55501
|
break;
|
|
55135
55502
|
}
|
|
55136
|
-
this.state =
|
|
55503
|
+
this.state = 444;
|
|
55137
55504
|
this._errHandler.sync(this);
|
|
55138
55505
|
_la = this._input.LA(1);
|
|
55139
55506
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55140
55507
|
{
|
|
55141
|
-
this.state = 441;
|
|
55142
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55143
55508
|
this.state = 442;
|
|
55509
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55510
|
+
this.state = 443;
|
|
55144
55511
|
this.bounds();
|
|
55145
55512
|
}
|
|
55146
55513
|
}
|
|
@@ -55169,29 +55536,29 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55169
55536
|
try {
|
|
55170
55537
|
this.enterOuterAlt(_localctx, 1);
|
|
55171
55538
|
{
|
|
55172
|
-
this.state = 445;
|
|
55173
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55174
55539
|
this.state = 446;
|
|
55540
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55541
|
+
this.state = 447;
|
|
55175
55542
|
this.match(ForgeParser.ALL_TOK);
|
|
55176
|
-
this.state =
|
|
55543
|
+
this.state = 449;
|
|
55177
55544
|
this._errHandler.sync(this);
|
|
55178
55545
|
switch (this.interpreter.adaptivePredict(this._input, 50, this._ctx)) {
|
|
55179
55546
|
case 1:
|
|
55180
55547
|
{
|
|
55181
|
-
this.state =
|
|
55548
|
+
this.state = 448;
|
|
55182
55549
|
this.match(ForgeParser.DISJ_TOK);
|
|
55183
55550
|
}
|
|
55184
55551
|
break;
|
|
55185
55552
|
}
|
|
55186
|
-
this.state = 450;
|
|
55187
|
-
this.quantDeclList();
|
|
55188
55553
|
this.state = 451;
|
|
55189
|
-
this.
|
|
55554
|
+
this.quantDeclList();
|
|
55190
55555
|
this.state = 452;
|
|
55191
|
-
this.
|
|
55556
|
+
this.match(ForgeParser.BAR_TOK);
|
|
55192
55557
|
this.state = 453;
|
|
55193
|
-
this.
|
|
55558
|
+
this.expr();
|
|
55194
55559
|
this.state = 454;
|
|
55560
|
+
this.match(ForgeParser.IS_TOK);
|
|
55561
|
+
this.state = 455;
|
|
55195
55562
|
_la = this._input.LA(1);
|
|
55196
55563
|
if (!(_la === ForgeParser.SUFFICIENT_TOK || _la === ForgeParser.NECESSARY_TOK)) {
|
|
55197
55564
|
this._errHandler.recoverInline(this);
|
|
@@ -55203,41 +55570,41 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55203
55570
|
this._errHandler.reportMatch(this);
|
|
55204
55571
|
this.consume();
|
|
55205
55572
|
}
|
|
55206
|
-
this.state = 455;
|
|
55207
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55208
55573
|
this.state = 456;
|
|
55574
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55575
|
+
this.state = 457;
|
|
55209
55576
|
this.name();
|
|
55210
|
-
this.state =
|
|
55577
|
+
this.state = 462;
|
|
55211
55578
|
this._errHandler.sync(this);
|
|
55212
55579
|
_la = this._input.LA(1);
|
|
55213
55580
|
if (_la === ForgeParser.LEFT_SQUARE_TOK) {
|
|
55214
55581
|
{
|
|
55215
|
-
this.state = 457;
|
|
55216
|
-
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
55217
55582
|
this.state = 458;
|
|
55218
|
-
this.
|
|
55583
|
+
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
55219
55584
|
this.state = 459;
|
|
55585
|
+
this.exprList();
|
|
55586
|
+
this.state = 460;
|
|
55220
55587
|
this.match(ForgeParser.RIGHT_SQUARE_TOK);
|
|
55221
55588
|
}
|
|
55222
55589
|
}
|
|
55223
|
-
this.state =
|
|
55590
|
+
this.state = 465;
|
|
55224
55591
|
this._errHandler.sync(this);
|
|
55225
55592
|
switch (this.interpreter.adaptivePredict(this._input, 52, this._ctx)) {
|
|
55226
55593
|
case 1:
|
|
55227
55594
|
{
|
|
55228
|
-
this.state =
|
|
55595
|
+
this.state = 464;
|
|
55229
55596
|
this.scope();
|
|
55230
55597
|
}
|
|
55231
55598
|
break;
|
|
55232
55599
|
}
|
|
55233
|
-
this.state =
|
|
55600
|
+
this.state = 469;
|
|
55234
55601
|
this._errHandler.sync(this);
|
|
55235
55602
|
_la = this._input.LA(1);
|
|
55236
55603
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55237
55604
|
{
|
|
55238
|
-
this.state = 466;
|
|
55239
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55240
55605
|
this.state = 467;
|
|
55606
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55607
|
+
this.state = 468;
|
|
55241
55608
|
this.bounds();
|
|
55242
55609
|
}
|
|
55243
55610
|
}
|
|
@@ -55266,13 +55633,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55266
55633
|
try {
|
|
55267
55634
|
this.enterOuterAlt(_localctx, 1);
|
|
55268
55635
|
{
|
|
55269
|
-
this.state = 470;
|
|
55270
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55271
55636
|
this.state = 471;
|
|
55272
|
-
this.
|
|
55637
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55273
55638
|
this.state = 472;
|
|
55274
|
-
this.
|
|
55639
|
+
this.expr();
|
|
55275
55640
|
this.state = 473;
|
|
55641
|
+
this.match(ForgeParser.IS_TOK);
|
|
55642
|
+
this.state = 474;
|
|
55276
55643
|
_la = this._input.LA(1);
|
|
55277
55644
|
if (!(_la === ForgeParser.SUFFICIENT_TOK || _la === ForgeParser.NECESSARY_TOK)) {
|
|
55278
55645
|
this._errHandler.recoverInline(this);
|
|
@@ -55284,28 +55651,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55284
55651
|
this._errHandler.reportMatch(this);
|
|
55285
55652
|
this.consume();
|
|
55286
55653
|
}
|
|
55287
|
-
this.state = 474;
|
|
55288
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55289
55654
|
this.state = 475;
|
|
55655
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55656
|
+
this.state = 476;
|
|
55290
55657
|
this.name();
|
|
55291
|
-
this.state =
|
|
55658
|
+
this.state = 478;
|
|
55292
55659
|
this._errHandler.sync(this);
|
|
55293
55660
|
switch (this.interpreter.adaptivePredict(this._input, 54, this._ctx)) {
|
|
55294
55661
|
case 1:
|
|
55295
55662
|
{
|
|
55296
|
-
this.state =
|
|
55663
|
+
this.state = 477;
|
|
55297
55664
|
this.scope();
|
|
55298
55665
|
}
|
|
55299
55666
|
break;
|
|
55300
55667
|
}
|
|
55301
|
-
this.state =
|
|
55668
|
+
this.state = 482;
|
|
55302
55669
|
this._errHandler.sync(this);
|
|
55303
55670
|
_la = this._input.LA(1);
|
|
55304
55671
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55305
55672
|
{
|
|
55306
|
-
this.state = 479;
|
|
55307
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55308
55673
|
this.state = 480;
|
|
55674
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55675
|
+
this.state = 481;
|
|
55309
55676
|
this.bounds();
|
|
55310
55677
|
}
|
|
55311
55678
|
}
|
|
@@ -55334,13 +55701,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55334
55701
|
try {
|
|
55335
55702
|
this.enterOuterAlt(_localctx, 1);
|
|
55336
55703
|
{
|
|
55337
|
-
this.state = 483;
|
|
55338
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55339
55704
|
this.state = 484;
|
|
55340
|
-
this.
|
|
55705
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55341
55706
|
this.state = 485;
|
|
55342
|
-
this.
|
|
55707
|
+
this.expr();
|
|
55343
55708
|
this.state = 486;
|
|
55709
|
+
this.match(ForgeParser.IS_TOK);
|
|
55710
|
+
this.state = 487;
|
|
55344
55711
|
_la = this._input.LA(1);
|
|
55345
55712
|
if (!(_la === ForgeParser.CONSISTENT_TOK || _la === ForgeParser.INCONSISTENT_TOK)) {
|
|
55346
55713
|
this._errHandler.recoverInline(this);
|
|
@@ -55352,28 +55719,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55352
55719
|
this._errHandler.reportMatch(this);
|
|
55353
55720
|
this.consume();
|
|
55354
55721
|
}
|
|
55355
|
-
this.state = 487;
|
|
55356
|
-
this.match(ForgeParser.WITH_TOK);
|
|
55357
55722
|
this.state = 488;
|
|
55723
|
+
this.match(ForgeParser.WITH_TOK);
|
|
55724
|
+
this.state = 489;
|
|
55358
55725
|
this.name();
|
|
55359
|
-
this.state =
|
|
55726
|
+
this.state = 491;
|
|
55360
55727
|
this._errHandler.sync(this);
|
|
55361
55728
|
switch (this.interpreter.adaptivePredict(this._input, 56, this._ctx)) {
|
|
55362
55729
|
case 1:
|
|
55363
55730
|
{
|
|
55364
|
-
this.state =
|
|
55731
|
+
this.state = 490;
|
|
55365
55732
|
this.scope();
|
|
55366
55733
|
}
|
|
55367
55734
|
break;
|
|
55368
55735
|
}
|
|
55369
|
-
this.state =
|
|
55736
|
+
this.state = 495;
|
|
55370
55737
|
this._errHandler.sync(this);
|
|
55371
55738
|
_la = this._input.LA(1);
|
|
55372
55739
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55373
55740
|
{
|
|
55374
|
-
this.state = 492;
|
|
55375
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55376
55741
|
this.state = 493;
|
|
55742
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55743
|
+
this.state = 494;
|
|
55377
55744
|
this.bounds();
|
|
55378
55745
|
}
|
|
55379
55746
|
}
|
|
@@ -55402,31 +55769,31 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55402
55769
|
try {
|
|
55403
55770
|
this.enterOuterAlt(_localctx, 1);
|
|
55404
55771
|
{
|
|
55405
|
-
this.state = 496;
|
|
55406
|
-
this.match(ForgeParser.TEST_TOK);
|
|
55407
55772
|
this.state = 497;
|
|
55408
|
-
this.match(ForgeParser.
|
|
55773
|
+
this.match(ForgeParser.TEST_TOK);
|
|
55409
55774
|
this.state = 498;
|
|
55410
|
-
this.match(ForgeParser.
|
|
55775
|
+
this.match(ForgeParser.SUITE_TOK);
|
|
55411
55776
|
this.state = 499;
|
|
55412
|
-
this.
|
|
55777
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55413
55778
|
this.state = 500;
|
|
55779
|
+
this.name();
|
|
55780
|
+
this.state = 501;
|
|
55414
55781
|
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
55415
|
-
this.state =
|
|
55782
|
+
this.state = 505;
|
|
55416
55783
|
this._errHandler.sync(this);
|
|
55417
55784
|
_la = this._input.LA(1);
|
|
55418
55785
|
while (((((_la - 29)) & ~0x1F) === 0 && ((1 << (_la - 29)) & ((1 << (ForgeParser.ASSERT_TOK - 29)) | (1 << (ForgeParser.TEST_TOK - 29)) | (1 << (ForgeParser.EXPECT_TOK - 29)))) !== 0) || _la === ForgeParser.EXAMPLE_TOK) {
|
|
55419
55786
|
{
|
|
55420
55787
|
{
|
|
55421
|
-
this.state =
|
|
55788
|
+
this.state = 502;
|
|
55422
55789
|
this.testConstruct();
|
|
55423
55790
|
}
|
|
55424
55791
|
}
|
|
55425
|
-
this.state =
|
|
55792
|
+
this.state = 507;
|
|
55426
55793
|
this._errHandler.sync(this);
|
|
55427
55794
|
_la = this._input.LA(1);
|
|
55428
55795
|
}
|
|
55429
|
-
this.state =
|
|
55796
|
+
this.state = 508;
|
|
55430
55797
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
55431
55798
|
}
|
|
55432
55799
|
}
|
|
@@ -55450,48 +55817,48 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55450
55817
|
let _localctx = new TestConstructContext(this._ctx, this.state);
|
|
55451
55818
|
this.enterRule(_localctx, 58, ForgeParser.RULE_testConstruct);
|
|
55452
55819
|
try {
|
|
55453
|
-
this.state =
|
|
55820
|
+
this.state = 516;
|
|
55454
55821
|
this._errHandler.sync(this);
|
|
55455
55822
|
switch (this.interpreter.adaptivePredict(this._input, 59, this._ctx)) {
|
|
55456
55823
|
case 1:
|
|
55457
55824
|
this.enterOuterAlt(_localctx, 1);
|
|
55458
55825
|
{
|
|
55459
|
-
this.state =
|
|
55826
|
+
this.state = 510;
|
|
55460
55827
|
this.exampleDecl();
|
|
55461
55828
|
}
|
|
55462
55829
|
break;
|
|
55463
55830
|
case 2:
|
|
55464
55831
|
this.enterOuterAlt(_localctx, 2);
|
|
55465
55832
|
{
|
|
55466
|
-
this.state =
|
|
55833
|
+
this.state = 511;
|
|
55467
55834
|
this.testExpectDecl();
|
|
55468
55835
|
}
|
|
55469
55836
|
break;
|
|
55470
55837
|
case 3:
|
|
55471
55838
|
this.enterOuterAlt(_localctx, 3);
|
|
55472
55839
|
{
|
|
55473
|
-
this.state =
|
|
55840
|
+
this.state = 512;
|
|
55474
55841
|
this.quantifiedPropertyDecl();
|
|
55475
55842
|
}
|
|
55476
55843
|
break;
|
|
55477
55844
|
case 4:
|
|
55478
55845
|
this.enterOuterAlt(_localctx, 4);
|
|
55479
55846
|
{
|
|
55480
|
-
this.state =
|
|
55847
|
+
this.state = 513;
|
|
55481
55848
|
this.propertyDecl();
|
|
55482
55849
|
}
|
|
55483
55850
|
break;
|
|
55484
55851
|
case 5:
|
|
55485
55852
|
this.enterOuterAlt(_localctx, 5);
|
|
55486
55853
|
{
|
|
55487
|
-
this.state =
|
|
55854
|
+
this.state = 514;
|
|
55488
55855
|
this.satisfiabilityDecl();
|
|
55489
55856
|
}
|
|
55490
55857
|
break;
|
|
55491
55858
|
case 6:
|
|
55492
55859
|
this.enterOuterAlt(_localctx, 6);
|
|
55493
55860
|
{
|
|
55494
|
-
this.state =
|
|
55861
|
+
this.state = 515;
|
|
55495
55862
|
this.consistencyDecl();
|
|
55496
55863
|
}
|
|
55497
55864
|
break;
|
|
@@ -55519,7 +55886,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55519
55886
|
try {
|
|
55520
55887
|
this.enterOuterAlt(_localctx, 1);
|
|
55521
55888
|
{
|
|
55522
|
-
this.state =
|
|
55889
|
+
this.state = 520;
|
|
55523
55890
|
this._errHandler.sync(this);
|
|
55524
55891
|
switch (this._input.LA(1)) {
|
|
55525
55892
|
case ForgeParser.LONE_TOK:
|
|
@@ -55527,13 +55894,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55527
55894
|
case ForgeParser.ONE_TOK:
|
|
55528
55895
|
case ForgeParser.TWO_TOK:
|
|
55529
55896
|
{
|
|
55530
|
-
this.state =
|
|
55897
|
+
this.state = 518;
|
|
55531
55898
|
this.mult();
|
|
55532
55899
|
}
|
|
55533
55900
|
break;
|
|
55534
55901
|
case ForgeParser.SET_TOK:
|
|
55535
55902
|
{
|
|
55536
|
-
this.state =
|
|
55903
|
+
this.state = 519;
|
|
55537
55904
|
this.match(ForgeParser.SET_TOK);
|
|
55538
55905
|
}
|
|
55539
55906
|
break;
|
|
@@ -55542,9 +55909,9 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55542
55909
|
default:
|
|
55543
55910
|
break;
|
|
55544
55911
|
}
|
|
55545
|
-
this.state =
|
|
55912
|
+
this.state = 522;
|
|
55546
55913
|
this.match(ForgeParser.ARROW_TOK);
|
|
55547
|
-
this.state =
|
|
55914
|
+
this.state = 525;
|
|
55548
55915
|
this._errHandler.sync(this);
|
|
55549
55916
|
switch (this._input.LA(1)) {
|
|
55550
55917
|
case ForgeParser.LONE_TOK:
|
|
@@ -55552,16 +55919,17 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55552
55919
|
case ForgeParser.ONE_TOK:
|
|
55553
55920
|
case ForgeParser.TWO_TOK:
|
|
55554
55921
|
{
|
|
55555
|
-
this.state =
|
|
55922
|
+
this.state = 523;
|
|
55556
55923
|
this.mult();
|
|
55557
55924
|
}
|
|
55558
55925
|
break;
|
|
55559
55926
|
case ForgeParser.SET_TOK:
|
|
55560
55927
|
{
|
|
55561
|
-
this.state =
|
|
55928
|
+
this.state = 524;
|
|
55562
55929
|
this.match(ForgeParser.SET_TOK);
|
|
55563
55930
|
}
|
|
55564
55931
|
break;
|
|
55932
|
+
case ForgeParser.STRING_TOK:
|
|
55565
55933
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
55566
55934
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
55567
55935
|
case ForgeParser.NONE_TOK:
|
|
@@ -55613,7 +55981,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55613
55981
|
try {
|
|
55614
55982
|
this.enterOuterAlt(_localctx, 1);
|
|
55615
55983
|
{
|
|
55616
|
-
this.state =
|
|
55984
|
+
this.state = 527;
|
|
55617
55985
|
_la = this._input.LA(1);
|
|
55618
55986
|
if (!(_la === ForgeParser.IN_TOK || _la === ForgeParser.IS_TOK || ((((_la - 95)) & ~0x1F) === 0 && ((1 << (_la - 95)) & ((1 << (ForgeParser.EQ_TOK - 95)) | (1 << (ForgeParser.LT_TOK - 95)) | (1 << (ForgeParser.GT_TOK - 95)) | (1 << (ForgeParser.LEQ_TOK - 95)) | (1 << (ForgeParser.GEQ_TOK - 95)) | (1 << (ForgeParser.NI_TOK - 95)))) !== 0))) {
|
|
55619
55987
|
this._errHandler.recoverInline(this);
|
|
@@ -55649,11 +56017,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55649
56017
|
try {
|
|
55650
56018
|
this.enterOuterAlt(_localctx, 1);
|
|
55651
56019
|
{
|
|
55652
|
-
this.state = 528;
|
|
55653
|
-
this.name();
|
|
55654
56020
|
this.state = 529;
|
|
55655
|
-
this.
|
|
56021
|
+
this.name();
|
|
55656
56022
|
this.state = 530;
|
|
56023
|
+
this.match(ForgeParser.EQ_TOK);
|
|
56024
|
+
this.state = 531;
|
|
55657
56025
|
this.expr();
|
|
55658
56026
|
}
|
|
55659
56027
|
}
|
|
@@ -55680,23 +56048,23 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55680
56048
|
try {
|
|
55681
56049
|
this.enterOuterAlt(_localctx, 1);
|
|
55682
56050
|
{
|
|
55683
|
-
this.state =
|
|
56051
|
+
this.state = 533;
|
|
55684
56052
|
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
55685
|
-
this.state =
|
|
56053
|
+
this.state = 537;
|
|
55686
56054
|
this._errHandler.sync(this);
|
|
55687
56055
|
_la = this._input.LA(1);
|
|
55688
|
-
while ((((
|
|
56056
|
+
while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ForgeParser.STRING_TOK) | (1 << ForgeParser.LEFT_CURLY_TOK) | (1 << ForgeParser.LONE_TOK) | (1 << ForgeParser.SOME_TOK) | (1 << ForgeParser.ONE_TOK) | (1 << ForgeParser.TWO_TOK) | (1 << ForgeParser.SET_TOK) | (1 << ForgeParser.LEFT_PAREN_TOK))) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & ((1 << (ForgeParser.NONE_TOK - 35)) | (1 << (ForgeParser.UNIV_TOK - 35)) | (1 << (ForgeParser.IDEN_TOK - 35)) | (1 << (ForgeParser.MINUS_TOK - 35)) | (1 << (ForgeParser.ALL_TOK - 35)) | (1 << (ForgeParser.LET_TOK - 35)) | (1 << (ForgeParser.BIND_TOK - 35)))) !== 0) || ((((_la - 67)) & ~0x1F) === 0 && ((1 << (_la - 67)) & ((1 << (ForgeParser.NEG_TOK - 67)) | (1 << (ForgeParser.ALWAYS_TOK - 67)) | (1 << (ForgeParser.EVENTUALLY_TOK - 67)) | (1 << (ForgeParser.AFTER_TOK - 67)) | (1 << (ForgeParser.BEFORE_TOK - 67)) | (1 << (ForgeParser.ONCE_TOK - 67)) | (1 << (ForgeParser.HISTORICALLY_TOK - 67)) | (1 << (ForgeParser.CARD_TOK - 67)) | (1 << (ForgeParser.TILDE_TOK - 67)) | (1 << (ForgeParser.EXP_TOK - 67)) | (1 << (ForgeParser.STAR_TOK - 67)) | (1 << (ForgeParser.AT_TOK - 67)) | (1 << (ForgeParser.BACKQUOTE_TOK - 67)) | (1 << (ForgeParser.THIS_TOK - 67)) | (1 << (ForgeParser.SEXPR_TOK - 67)) | (1 << (ForgeParser.GET_LABEL_TOK - 67)) | (1 << (ForgeParser.GET_LABEL_STR_TOK - 67)) | (1 << (ForgeParser.GET_LABEL_BOOL_TOK - 67)) | (1 << (ForgeParser.GET_LABEL_NUM_TOK - 67)))) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (ForgeParser.NO_TOK - 101)) | (1 << (ForgeParser.SUM_TOK - 101)) | (1 << (ForgeParser.INT_TOK - 101)) | (1 << (ForgeParser.NUM_CONST_TOK - 101)) | (1 << (ForgeParser.QUOTED_IDENTIFIER_TOK - 101)) | (1 << (ForgeParser.IDENTIFIER_TOK - 101)))) !== 0)) {
|
|
55689
56057
|
{
|
|
55690
56058
|
{
|
|
55691
|
-
this.state =
|
|
56059
|
+
this.state = 534;
|
|
55692
56060
|
this.expr();
|
|
55693
56061
|
}
|
|
55694
56062
|
}
|
|
55695
|
-
this.state =
|
|
56063
|
+
this.state = 539;
|
|
55696
56064
|
this._errHandler.sync(this);
|
|
55697
56065
|
_la = this._input.LA(1);
|
|
55698
56066
|
}
|
|
55699
|
-
this.state =
|
|
56067
|
+
this.state = 540;
|
|
55700
56068
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
55701
56069
|
}
|
|
55702
56070
|
}
|
|
@@ -55720,22 +56088,22 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55720
56088
|
let _localctx = new BlockOrBarContext(this._ctx, this.state);
|
|
55721
56089
|
this.enterRule(_localctx, 68, ForgeParser.RULE_blockOrBar);
|
|
55722
56090
|
try {
|
|
55723
|
-
this.state =
|
|
56091
|
+
this.state = 545;
|
|
55724
56092
|
this._errHandler.sync(this);
|
|
55725
56093
|
switch (this._input.LA(1)) {
|
|
55726
56094
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
55727
56095
|
this.enterOuterAlt(_localctx, 1);
|
|
55728
56096
|
{
|
|
55729
|
-
this.state =
|
|
56097
|
+
this.state = 542;
|
|
55730
56098
|
this.block();
|
|
55731
56099
|
}
|
|
55732
56100
|
break;
|
|
55733
56101
|
case ForgeParser.BAR_TOK:
|
|
55734
56102
|
this.enterOuterAlt(_localctx, 2);
|
|
55735
56103
|
{
|
|
55736
|
-
this.state = 542;
|
|
55737
|
-
this.match(ForgeParser.BAR_TOK);
|
|
55738
56104
|
this.state = 543;
|
|
56105
|
+
this.match(ForgeParser.BAR_TOK);
|
|
56106
|
+
this.state = 544;
|
|
55739
56107
|
this.expr();
|
|
55740
56108
|
}
|
|
55741
56109
|
break;
|
|
@@ -55763,27 +56131,27 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55763
56131
|
let _localctx = new QuantContext(this._ctx, this.state);
|
|
55764
56132
|
this.enterRule(_localctx, 70, ForgeParser.RULE_quant);
|
|
55765
56133
|
try {
|
|
55766
|
-
this.state =
|
|
56134
|
+
this.state = 551;
|
|
55767
56135
|
this._errHandler.sync(this);
|
|
55768
56136
|
switch (this._input.LA(1)) {
|
|
55769
56137
|
case ForgeParser.ALL_TOK:
|
|
55770
56138
|
this.enterOuterAlt(_localctx, 1);
|
|
55771
56139
|
{
|
|
55772
|
-
this.state =
|
|
56140
|
+
this.state = 547;
|
|
55773
56141
|
this.match(ForgeParser.ALL_TOK);
|
|
55774
56142
|
}
|
|
55775
56143
|
break;
|
|
55776
56144
|
case ForgeParser.NO_TOK:
|
|
55777
56145
|
this.enterOuterAlt(_localctx, 2);
|
|
55778
56146
|
{
|
|
55779
|
-
this.state =
|
|
56147
|
+
this.state = 548;
|
|
55780
56148
|
this.match(ForgeParser.NO_TOK);
|
|
55781
56149
|
}
|
|
55782
56150
|
break;
|
|
55783
56151
|
case ForgeParser.SUM_TOK:
|
|
55784
56152
|
this.enterOuterAlt(_localctx, 3);
|
|
55785
56153
|
{
|
|
55786
|
-
this.state =
|
|
56154
|
+
this.state = 549;
|
|
55787
56155
|
this.match(ForgeParser.SUM_TOK);
|
|
55788
56156
|
}
|
|
55789
56157
|
break;
|
|
@@ -55793,7 +56161,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55793
56161
|
case ForgeParser.TWO_TOK:
|
|
55794
56162
|
this.enterOuterAlt(_localctx, 4);
|
|
55795
56163
|
{
|
|
55796
|
-
this.state =
|
|
56164
|
+
this.state = 550;
|
|
55797
56165
|
this.mult();
|
|
55798
56166
|
}
|
|
55799
56167
|
break;
|
|
@@ -55823,7 +56191,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55823
56191
|
let _la;
|
|
55824
56192
|
try {
|
|
55825
56193
|
let _alt;
|
|
55826
|
-
this.state =
|
|
56194
|
+
this.state = 568;
|
|
55827
56195
|
this._errHandler.sync(this);
|
|
55828
56196
|
switch (this._input.LA(1)) {
|
|
55829
56197
|
case ForgeParser.THIS_TOK:
|
|
@@ -55831,50 +56199,50 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55831
56199
|
case ForgeParser.IDENTIFIER_TOK:
|
|
55832
56200
|
this.enterOuterAlt(_localctx, 1);
|
|
55833
56201
|
{
|
|
55834
|
-
this.state =
|
|
56202
|
+
this.state = 555;
|
|
55835
56203
|
this._errHandler.sync(this);
|
|
55836
56204
|
_la = this._input.LA(1);
|
|
55837
56205
|
if (_la === ForgeParser.THIS_TOK) {
|
|
55838
56206
|
{
|
|
55839
|
-
this.state = 552;
|
|
55840
|
-
this.match(ForgeParser.THIS_TOK);
|
|
55841
56207
|
this.state = 553;
|
|
56208
|
+
this.match(ForgeParser.THIS_TOK);
|
|
56209
|
+
this.state = 554;
|
|
55842
56210
|
this.match(ForgeParser.SLASH_TOK);
|
|
55843
56211
|
}
|
|
55844
56212
|
}
|
|
55845
|
-
this.state =
|
|
56213
|
+
this.state = 562;
|
|
55846
56214
|
this._errHandler.sync(this);
|
|
55847
56215
|
_alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx);
|
|
55848
56216
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
55849
56217
|
if (_alt === 1) {
|
|
55850
56218
|
{
|
|
55851
56219
|
{
|
|
55852
|
-
this.state = 556;
|
|
55853
|
-
this.name();
|
|
55854
56220
|
this.state = 557;
|
|
56221
|
+
this.name();
|
|
56222
|
+
this.state = 558;
|
|
55855
56223
|
this.match(ForgeParser.SLASH_TOK);
|
|
55856
56224
|
}
|
|
55857
56225
|
}
|
|
55858
56226
|
}
|
|
55859
|
-
this.state =
|
|
56227
|
+
this.state = 564;
|
|
55860
56228
|
this._errHandler.sync(this);
|
|
55861
56229
|
_alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx);
|
|
55862
56230
|
}
|
|
55863
|
-
this.state =
|
|
56231
|
+
this.state = 565;
|
|
55864
56232
|
this.name();
|
|
55865
56233
|
}
|
|
55866
56234
|
break;
|
|
55867
56235
|
case ForgeParser.INT_TOK:
|
|
55868
56236
|
this.enterOuterAlt(_localctx, 2);
|
|
55869
56237
|
{
|
|
55870
|
-
this.state =
|
|
56238
|
+
this.state = 566;
|
|
55871
56239
|
this.match(ForgeParser.INT_TOK);
|
|
55872
56240
|
}
|
|
55873
56241
|
break;
|
|
55874
56242
|
case ForgeParser.SUM_TOK:
|
|
55875
56243
|
this.enterOuterAlt(_localctx, 3);
|
|
55876
56244
|
{
|
|
55877
|
-
this.state =
|
|
56245
|
+
this.state = 567;
|
|
55878
56246
|
this.match(ForgeParser.SUM_TOK);
|
|
55879
56247
|
}
|
|
55880
56248
|
break;
|
|
@@ -55905,11 +56273,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55905
56273
|
try {
|
|
55906
56274
|
this.enterOuterAlt(_localctx, 1);
|
|
55907
56275
|
{
|
|
55908
|
-
this.state = 569;
|
|
55909
|
-
this.match(ForgeParser.OPTION_TOK);
|
|
55910
56276
|
this.state = 570;
|
|
56277
|
+
this.match(ForgeParser.OPTION_TOK);
|
|
56278
|
+
this.state = 571;
|
|
55911
56279
|
this.qualName();
|
|
55912
|
-
this.state =
|
|
56280
|
+
this.state = 578;
|
|
55913
56281
|
this._errHandler.sync(this);
|
|
55914
56282
|
switch (this._input.LA(1)) {
|
|
55915
56283
|
case ForgeParser.THIS_TOK:
|
|
@@ -55918,29 +56286,29 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55918
56286
|
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
55919
56287
|
case ForgeParser.IDENTIFIER_TOK:
|
|
55920
56288
|
{
|
|
55921
|
-
this.state =
|
|
56289
|
+
this.state = 572;
|
|
55922
56290
|
this.qualName();
|
|
55923
56291
|
}
|
|
55924
56292
|
break;
|
|
55925
|
-
case ForgeParser.
|
|
56293
|
+
case ForgeParser.STRING_TOK:
|
|
55926
56294
|
{
|
|
55927
|
-
this.state =
|
|
55928
|
-
this.match(ForgeParser.
|
|
56295
|
+
this.state = 573;
|
|
56296
|
+
this.match(ForgeParser.STRING_TOK);
|
|
55929
56297
|
}
|
|
55930
56298
|
break;
|
|
55931
56299
|
case ForgeParser.MINUS_TOK:
|
|
55932
56300
|
case ForgeParser.NUM_CONST_TOK:
|
|
55933
56301
|
{
|
|
55934
|
-
this.state =
|
|
56302
|
+
this.state = 575;
|
|
55935
56303
|
this._errHandler.sync(this);
|
|
55936
56304
|
_la = this._input.LA(1);
|
|
55937
56305
|
if (_la === ForgeParser.MINUS_TOK) {
|
|
55938
56306
|
{
|
|
55939
|
-
this.state =
|
|
56307
|
+
this.state = 574;
|
|
55940
56308
|
this.match(ForgeParser.MINUS_TOK);
|
|
55941
56309
|
}
|
|
55942
56310
|
}
|
|
55943
|
-
this.state =
|
|
56311
|
+
this.state = 577;
|
|
55944
56312
|
this.number();
|
|
55945
56313
|
}
|
|
55946
56314
|
break;
|
|
@@ -55972,7 +56340,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55972
56340
|
try {
|
|
55973
56341
|
this.enterOuterAlt(_localctx, 1);
|
|
55974
56342
|
{
|
|
55975
|
-
this.state =
|
|
56343
|
+
this.state = 580;
|
|
55976
56344
|
_la = this._input.LA(1);
|
|
55977
56345
|
if (!(_la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK)) {
|
|
55978
56346
|
this._errHandler.recoverInline(this);
|
|
@@ -56006,24 +56374,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56006
56374
|
let _localctx = new NameListContext(this._ctx, this.state);
|
|
56007
56375
|
this.enterRule(_localctx, 78, ForgeParser.RULE_nameList);
|
|
56008
56376
|
try {
|
|
56009
|
-
this.state =
|
|
56377
|
+
this.state = 587;
|
|
56010
56378
|
this._errHandler.sync(this);
|
|
56011
56379
|
switch (this.interpreter.adaptivePredict(this._input, 70, this._ctx)) {
|
|
56012
56380
|
case 1:
|
|
56013
56381
|
this.enterOuterAlt(_localctx, 1);
|
|
56014
56382
|
{
|
|
56015
|
-
this.state =
|
|
56383
|
+
this.state = 582;
|
|
56016
56384
|
this.name();
|
|
56017
56385
|
}
|
|
56018
56386
|
break;
|
|
56019
56387
|
case 2:
|
|
56020
56388
|
this.enterOuterAlt(_localctx, 2);
|
|
56021
56389
|
{
|
|
56022
|
-
this.state = 582;
|
|
56023
|
-
this.name();
|
|
56024
56390
|
this.state = 583;
|
|
56025
|
-
this.
|
|
56391
|
+
this.name();
|
|
56026
56392
|
this.state = 584;
|
|
56393
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56394
|
+
this.state = 585;
|
|
56027
56395
|
this.nameList();
|
|
56028
56396
|
}
|
|
56029
56397
|
break;
|
|
@@ -56049,24 +56417,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56049
56417
|
let _localctx = new QualNameListContext(this._ctx, this.state);
|
|
56050
56418
|
this.enterRule(_localctx, 80, ForgeParser.RULE_qualNameList);
|
|
56051
56419
|
try {
|
|
56052
|
-
this.state =
|
|
56420
|
+
this.state = 594;
|
|
56053
56421
|
this._errHandler.sync(this);
|
|
56054
56422
|
switch (this.interpreter.adaptivePredict(this._input, 71, this._ctx)) {
|
|
56055
56423
|
case 1:
|
|
56056
56424
|
this.enterOuterAlt(_localctx, 1);
|
|
56057
56425
|
{
|
|
56058
|
-
this.state =
|
|
56426
|
+
this.state = 589;
|
|
56059
56427
|
this.qualName();
|
|
56060
56428
|
}
|
|
56061
56429
|
break;
|
|
56062
56430
|
case 2:
|
|
56063
56431
|
this.enterOuterAlt(_localctx, 2);
|
|
56064
56432
|
{
|
|
56065
|
-
this.state = 589;
|
|
56066
|
-
this.qualName();
|
|
56067
56433
|
this.state = 590;
|
|
56068
|
-
this.
|
|
56434
|
+
this.qualName();
|
|
56069
56435
|
this.state = 591;
|
|
56436
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56437
|
+
this.state = 592;
|
|
56070
56438
|
this.qualNameList();
|
|
56071
56439
|
}
|
|
56072
56440
|
break;
|
|
@@ -56092,24 +56460,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56092
56460
|
let _localctx = new ParaDeclListContext(this._ctx, this.state);
|
|
56093
56461
|
this.enterRule(_localctx, 82, ForgeParser.RULE_paraDeclList);
|
|
56094
56462
|
try {
|
|
56095
|
-
this.state =
|
|
56463
|
+
this.state = 601;
|
|
56096
56464
|
this._errHandler.sync(this);
|
|
56097
56465
|
switch (this.interpreter.adaptivePredict(this._input, 72, this._ctx)) {
|
|
56098
56466
|
case 1:
|
|
56099
56467
|
this.enterOuterAlt(_localctx, 1);
|
|
56100
56468
|
{
|
|
56101
|
-
this.state =
|
|
56469
|
+
this.state = 596;
|
|
56102
56470
|
this.paraDecl();
|
|
56103
56471
|
}
|
|
56104
56472
|
break;
|
|
56105
56473
|
case 2:
|
|
56106
56474
|
this.enterOuterAlt(_localctx, 2);
|
|
56107
56475
|
{
|
|
56108
|
-
this.state = 596;
|
|
56109
|
-
this.paraDecl();
|
|
56110
56476
|
this.state = 597;
|
|
56111
|
-
this.
|
|
56477
|
+
this.paraDecl();
|
|
56112
56478
|
this.state = 598;
|
|
56479
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56480
|
+
this.state = 599;
|
|
56113
56481
|
this.paraDeclList();
|
|
56114
56482
|
}
|
|
56115
56483
|
break;
|
|
@@ -56135,24 +56503,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56135
56503
|
let _localctx = new QuantDeclListContext(this._ctx, this.state);
|
|
56136
56504
|
this.enterRule(_localctx, 84, ForgeParser.RULE_quantDeclList);
|
|
56137
56505
|
try {
|
|
56138
|
-
this.state =
|
|
56506
|
+
this.state = 608;
|
|
56139
56507
|
this._errHandler.sync(this);
|
|
56140
56508
|
switch (this.interpreter.adaptivePredict(this._input, 73, this._ctx)) {
|
|
56141
56509
|
case 1:
|
|
56142
56510
|
this.enterOuterAlt(_localctx, 1);
|
|
56143
56511
|
{
|
|
56144
|
-
this.state =
|
|
56512
|
+
this.state = 603;
|
|
56145
56513
|
this.quantDecl();
|
|
56146
56514
|
}
|
|
56147
56515
|
break;
|
|
56148
56516
|
case 2:
|
|
56149
56517
|
this.enterOuterAlt(_localctx, 2);
|
|
56150
56518
|
{
|
|
56151
|
-
this.state = 603;
|
|
56152
|
-
this.quantDecl();
|
|
56153
56519
|
this.state = 604;
|
|
56154
|
-
this.
|
|
56520
|
+
this.quantDecl();
|
|
56155
56521
|
this.state = 605;
|
|
56522
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56523
|
+
this.state = 606;
|
|
56156
56524
|
this.quantDeclList();
|
|
56157
56525
|
}
|
|
56158
56526
|
break;
|
|
@@ -56178,24 +56546,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56178
56546
|
let _localctx = new ArrowDeclListContext(this._ctx, this.state);
|
|
56179
56547
|
this.enterRule(_localctx, 86, ForgeParser.RULE_arrowDeclList);
|
|
56180
56548
|
try {
|
|
56181
|
-
this.state =
|
|
56549
|
+
this.state = 615;
|
|
56182
56550
|
this._errHandler.sync(this);
|
|
56183
56551
|
switch (this.interpreter.adaptivePredict(this._input, 74, this._ctx)) {
|
|
56184
56552
|
case 1:
|
|
56185
56553
|
this.enterOuterAlt(_localctx, 1);
|
|
56186
56554
|
{
|
|
56187
|
-
this.state =
|
|
56555
|
+
this.state = 610;
|
|
56188
56556
|
this.arrowDecl();
|
|
56189
56557
|
}
|
|
56190
56558
|
break;
|
|
56191
56559
|
case 2:
|
|
56192
56560
|
this.enterOuterAlt(_localctx, 2);
|
|
56193
56561
|
{
|
|
56194
|
-
this.state = 610;
|
|
56195
|
-
this.arrowDecl();
|
|
56196
56562
|
this.state = 611;
|
|
56197
|
-
this.
|
|
56563
|
+
this.arrowDecl();
|
|
56198
56564
|
this.state = 612;
|
|
56565
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56566
|
+
this.state = 613;
|
|
56199
56567
|
this.arrowDeclList();
|
|
56200
56568
|
}
|
|
56201
56569
|
break;
|
|
@@ -56221,24 +56589,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56221
56589
|
let _localctx = new LetDeclListContext(this._ctx, this.state);
|
|
56222
56590
|
this.enterRule(_localctx, 88, ForgeParser.RULE_letDeclList);
|
|
56223
56591
|
try {
|
|
56224
|
-
this.state =
|
|
56592
|
+
this.state = 622;
|
|
56225
56593
|
this._errHandler.sync(this);
|
|
56226
56594
|
switch (this.interpreter.adaptivePredict(this._input, 75, this._ctx)) {
|
|
56227
56595
|
case 1:
|
|
56228
56596
|
this.enterOuterAlt(_localctx, 1);
|
|
56229
56597
|
{
|
|
56230
|
-
this.state =
|
|
56598
|
+
this.state = 617;
|
|
56231
56599
|
this.letDecl();
|
|
56232
56600
|
}
|
|
56233
56601
|
break;
|
|
56234
56602
|
case 2:
|
|
56235
56603
|
this.enterOuterAlt(_localctx, 2);
|
|
56236
56604
|
{
|
|
56237
|
-
this.state = 617;
|
|
56238
|
-
this.letDecl();
|
|
56239
56605
|
this.state = 618;
|
|
56240
|
-
this.
|
|
56606
|
+
this.letDecl();
|
|
56241
56607
|
this.state = 619;
|
|
56608
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56609
|
+
this.state = 620;
|
|
56242
56610
|
this.letDeclList();
|
|
56243
56611
|
}
|
|
56244
56612
|
break;
|
|
@@ -56264,24 +56632,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56264
56632
|
let _localctx = new TypescopeListContext(this._ctx, this.state);
|
|
56265
56633
|
this.enterRule(_localctx, 90, ForgeParser.RULE_typescopeList);
|
|
56266
56634
|
try {
|
|
56267
|
-
this.state =
|
|
56635
|
+
this.state = 629;
|
|
56268
56636
|
this._errHandler.sync(this);
|
|
56269
56637
|
switch (this.interpreter.adaptivePredict(this._input, 76, this._ctx)) {
|
|
56270
56638
|
case 1:
|
|
56271
56639
|
this.enterOuterAlt(_localctx, 1);
|
|
56272
56640
|
{
|
|
56273
|
-
this.state =
|
|
56641
|
+
this.state = 624;
|
|
56274
56642
|
this.typescope();
|
|
56275
56643
|
}
|
|
56276
56644
|
break;
|
|
56277
56645
|
case 2:
|
|
56278
56646
|
this.enterOuterAlt(_localctx, 2);
|
|
56279
56647
|
{
|
|
56280
|
-
this.state = 624;
|
|
56281
|
-
this.typescope();
|
|
56282
56648
|
this.state = 625;
|
|
56283
|
-
this.
|
|
56649
|
+
this.typescope();
|
|
56284
56650
|
this.state = 626;
|
|
56651
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56652
|
+
this.state = 627;
|
|
56285
56653
|
this.typescopeList();
|
|
56286
56654
|
}
|
|
56287
56655
|
break;
|
|
@@ -56307,24 +56675,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56307
56675
|
let _localctx = new ExprListContext(this._ctx, this.state);
|
|
56308
56676
|
this.enterRule(_localctx, 92, ForgeParser.RULE_exprList);
|
|
56309
56677
|
try {
|
|
56310
|
-
this.state =
|
|
56678
|
+
this.state = 636;
|
|
56311
56679
|
this._errHandler.sync(this);
|
|
56312
56680
|
switch (this.interpreter.adaptivePredict(this._input, 77, this._ctx)) {
|
|
56313
56681
|
case 1:
|
|
56314
56682
|
this.enterOuterAlt(_localctx, 1);
|
|
56315
56683
|
{
|
|
56316
|
-
this.state =
|
|
56684
|
+
this.state = 631;
|
|
56317
56685
|
this.expr();
|
|
56318
56686
|
}
|
|
56319
56687
|
break;
|
|
56320
56688
|
case 2:
|
|
56321
56689
|
this.enterOuterAlt(_localctx, 2);
|
|
56322
56690
|
{
|
|
56323
|
-
this.state = 631;
|
|
56324
|
-
this.expr();
|
|
56325
56691
|
this.state = 632;
|
|
56326
|
-
this.
|
|
56692
|
+
this.expr();
|
|
56327
56693
|
this.state = 633;
|
|
56694
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56695
|
+
this.state = 634;
|
|
56328
56696
|
this.exprList();
|
|
56329
56697
|
}
|
|
56330
56698
|
break;
|
|
@@ -56350,56 +56718,56 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56350
56718
|
let _localctx = new ExprContext(this._ctx, this.state);
|
|
56351
56719
|
this.enterRule(_localctx, 94, ForgeParser.RULE_expr);
|
|
56352
56720
|
try {
|
|
56353
|
-
this.state =
|
|
56721
|
+
this.state = 654;
|
|
56354
56722
|
this._errHandler.sync(this);
|
|
56355
56723
|
switch (this.interpreter.adaptivePredict(this._input, 79, this._ctx)) {
|
|
56356
56724
|
case 1:
|
|
56357
56725
|
this.enterOuterAlt(_localctx, 1);
|
|
56358
56726
|
{
|
|
56359
|
-
this.state =
|
|
56727
|
+
this.state = 638;
|
|
56360
56728
|
this.expr1(0);
|
|
56361
56729
|
}
|
|
56362
56730
|
break;
|
|
56363
56731
|
case 2:
|
|
56364
56732
|
this.enterOuterAlt(_localctx, 2);
|
|
56365
56733
|
{
|
|
56366
|
-
this.state = 638;
|
|
56367
|
-
this.match(ForgeParser.LET_TOK);
|
|
56368
56734
|
this.state = 639;
|
|
56369
|
-
this.
|
|
56735
|
+
this.match(ForgeParser.LET_TOK);
|
|
56370
56736
|
this.state = 640;
|
|
56737
|
+
this.letDeclList();
|
|
56738
|
+
this.state = 641;
|
|
56371
56739
|
this.blockOrBar();
|
|
56372
56740
|
}
|
|
56373
56741
|
break;
|
|
56374
56742
|
case 3:
|
|
56375
56743
|
this.enterOuterAlt(_localctx, 3);
|
|
56376
56744
|
{
|
|
56377
|
-
this.state = 642;
|
|
56378
|
-
this.match(ForgeParser.BIND_TOK);
|
|
56379
56745
|
this.state = 643;
|
|
56380
|
-
this.
|
|
56746
|
+
this.match(ForgeParser.BIND_TOK);
|
|
56381
56747
|
this.state = 644;
|
|
56748
|
+
this.letDeclList();
|
|
56749
|
+
this.state = 645;
|
|
56382
56750
|
this.blockOrBar();
|
|
56383
56751
|
}
|
|
56384
56752
|
break;
|
|
56385
56753
|
case 4:
|
|
56386
56754
|
this.enterOuterAlt(_localctx, 4);
|
|
56387
56755
|
{
|
|
56388
|
-
this.state =
|
|
56756
|
+
this.state = 647;
|
|
56389
56757
|
this.quant();
|
|
56390
|
-
this.state =
|
|
56758
|
+
this.state = 649;
|
|
56391
56759
|
this._errHandler.sync(this);
|
|
56392
56760
|
switch (this.interpreter.adaptivePredict(this._input, 78, this._ctx)) {
|
|
56393
56761
|
case 1:
|
|
56394
56762
|
{
|
|
56395
|
-
this.state =
|
|
56763
|
+
this.state = 648;
|
|
56396
56764
|
this.match(ForgeParser.DISJ_TOK);
|
|
56397
56765
|
}
|
|
56398
56766
|
break;
|
|
56399
56767
|
}
|
|
56400
|
-
this.state = 650;
|
|
56401
|
-
this.quantDeclList();
|
|
56402
56768
|
this.state = 651;
|
|
56769
|
+
this.quantDeclList();
|
|
56770
|
+
this.state = 652;
|
|
56403
56771
|
this.blockOrBar();
|
|
56404
56772
|
}
|
|
56405
56773
|
break;
|
|
@@ -56436,11 +56804,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56436
56804
|
this.enterOuterAlt(_localctx, 1);
|
|
56437
56805
|
{
|
|
56438
56806
|
{
|
|
56439
|
-
this.state =
|
|
56807
|
+
this.state = 657;
|
|
56440
56808
|
this.expr1_5(0);
|
|
56441
56809
|
}
|
|
56442
56810
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56443
|
-
this.state =
|
|
56811
|
+
this.state = 664;
|
|
56444
56812
|
this._errHandler.sync(this);
|
|
56445
56813
|
_alt = this.interpreter.adaptivePredict(this._input, 80, this._ctx);
|
|
56446
56814
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56453,18 +56821,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56453
56821
|
{
|
|
56454
56822
|
_localctx = new Expr1Context(_parentctx, _parentState);
|
|
56455
56823
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr1);
|
|
56456
|
-
this.state =
|
|
56824
|
+
this.state = 659;
|
|
56457
56825
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56458
56826
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56459
56827
|
}
|
|
56460
|
-
this.state = 659;
|
|
56461
|
-
this.match(ForgeParser.OR_TOK);
|
|
56462
56828
|
this.state = 660;
|
|
56829
|
+
this.match(ForgeParser.OR_TOK);
|
|
56830
|
+
this.state = 661;
|
|
56463
56831
|
this.expr1_5(0);
|
|
56464
56832
|
}
|
|
56465
56833
|
}
|
|
56466
56834
|
}
|
|
56467
|
-
this.state =
|
|
56835
|
+
this.state = 666;
|
|
56468
56836
|
this._errHandler.sync(this);
|
|
56469
56837
|
_alt = this.interpreter.adaptivePredict(this._input, 80, this._ctx);
|
|
56470
56838
|
}
|
|
@@ -56501,11 +56869,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56501
56869
|
this.enterOuterAlt(_localctx, 1);
|
|
56502
56870
|
{
|
|
56503
56871
|
{
|
|
56504
|
-
this.state =
|
|
56872
|
+
this.state = 668;
|
|
56505
56873
|
this.expr2(0);
|
|
56506
56874
|
}
|
|
56507
56875
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56508
|
-
this.state =
|
|
56876
|
+
this.state = 675;
|
|
56509
56877
|
this._errHandler.sync(this);
|
|
56510
56878
|
_alt = this.interpreter.adaptivePredict(this._input, 81, this._ctx);
|
|
56511
56879
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56518,18 +56886,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56518
56886
|
{
|
|
56519
56887
|
_localctx = new Expr1_5Context(_parentctx, _parentState);
|
|
56520
56888
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr1_5);
|
|
56521
|
-
this.state =
|
|
56889
|
+
this.state = 670;
|
|
56522
56890
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56523
56891
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56524
56892
|
}
|
|
56525
|
-
this.state = 670;
|
|
56526
|
-
this.match(ForgeParser.XOR_TOK);
|
|
56527
56893
|
this.state = 671;
|
|
56894
|
+
this.match(ForgeParser.XOR_TOK);
|
|
56895
|
+
this.state = 672;
|
|
56528
56896
|
this.expr2(0);
|
|
56529
56897
|
}
|
|
56530
56898
|
}
|
|
56531
56899
|
}
|
|
56532
|
-
this.state =
|
|
56900
|
+
this.state = 677;
|
|
56533
56901
|
this._errHandler.sync(this);
|
|
56534
56902
|
_alt = this.interpreter.adaptivePredict(this._input, 81, this._ctx);
|
|
56535
56903
|
}
|
|
@@ -56566,11 +56934,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56566
56934
|
this.enterOuterAlt(_localctx, 1);
|
|
56567
56935
|
{
|
|
56568
56936
|
{
|
|
56569
|
-
this.state =
|
|
56937
|
+
this.state = 679;
|
|
56570
56938
|
this.expr3();
|
|
56571
56939
|
}
|
|
56572
56940
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56573
|
-
this.state =
|
|
56941
|
+
this.state = 686;
|
|
56574
56942
|
this._errHandler.sync(this);
|
|
56575
56943
|
_alt = this.interpreter.adaptivePredict(this._input, 82, this._ctx);
|
|
56576
56944
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56583,18 +56951,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56583
56951
|
{
|
|
56584
56952
|
_localctx = new Expr2Context(_parentctx, _parentState);
|
|
56585
56953
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr2);
|
|
56586
|
-
this.state =
|
|
56954
|
+
this.state = 681;
|
|
56587
56955
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56588
56956
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56589
56957
|
}
|
|
56590
|
-
this.state = 681;
|
|
56591
|
-
this.match(ForgeParser.IFF_TOK);
|
|
56592
56958
|
this.state = 682;
|
|
56959
|
+
this.match(ForgeParser.IFF_TOK);
|
|
56960
|
+
this.state = 683;
|
|
56593
56961
|
this.expr3();
|
|
56594
56962
|
}
|
|
56595
56963
|
}
|
|
56596
56964
|
}
|
|
56597
|
-
this.state =
|
|
56965
|
+
this.state = 688;
|
|
56598
56966
|
this._errHandler.sync(this);
|
|
56599
56967
|
_alt = this.interpreter.adaptivePredict(this._input, 82, this._ctx);
|
|
56600
56968
|
}
|
|
@@ -56620,33 +56988,33 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56620
56988
|
let _localctx = new Expr3Context(this._ctx, this.state);
|
|
56621
56989
|
this.enterRule(_localctx, 102, ForgeParser.RULE_expr3);
|
|
56622
56990
|
try {
|
|
56623
|
-
this.state =
|
|
56991
|
+
this.state = 697;
|
|
56624
56992
|
this._errHandler.sync(this);
|
|
56625
56993
|
switch (this.interpreter.adaptivePredict(this._input, 84, this._ctx)) {
|
|
56626
56994
|
case 1:
|
|
56627
56995
|
this.enterOuterAlt(_localctx, 1);
|
|
56628
56996
|
{
|
|
56629
|
-
this.state =
|
|
56997
|
+
this.state = 689;
|
|
56630
56998
|
this.expr4(0);
|
|
56631
56999
|
}
|
|
56632
57000
|
break;
|
|
56633
57001
|
case 2:
|
|
56634
57002
|
this.enterOuterAlt(_localctx, 2);
|
|
56635
57003
|
{
|
|
56636
|
-
this.state = 689;
|
|
56637
|
-
this.expr4(0);
|
|
56638
57004
|
this.state = 690;
|
|
56639
|
-
this.
|
|
57005
|
+
this.expr4(0);
|
|
56640
57006
|
this.state = 691;
|
|
57007
|
+
this.match(ForgeParser.IMP_TOK);
|
|
57008
|
+
this.state = 692;
|
|
56641
57009
|
this.expr3();
|
|
56642
|
-
this.state =
|
|
57010
|
+
this.state = 695;
|
|
56643
57011
|
this._errHandler.sync(this);
|
|
56644
57012
|
switch (this.interpreter.adaptivePredict(this._input, 83, this._ctx)) {
|
|
56645
57013
|
case 1:
|
|
56646
57014
|
{
|
|
56647
|
-
this.state = 692;
|
|
56648
|
-
this.match(ForgeParser.ELSE_TOK);
|
|
56649
57015
|
this.state = 693;
|
|
57016
|
+
this.match(ForgeParser.ELSE_TOK);
|
|
57017
|
+
this.state = 694;
|
|
56650
57018
|
this.expr3();
|
|
56651
57019
|
}
|
|
56652
57020
|
break;
|
|
@@ -56686,11 +57054,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56686
57054
|
this.enterOuterAlt(_localctx, 1);
|
|
56687
57055
|
{
|
|
56688
57056
|
{
|
|
56689
|
-
this.state =
|
|
57057
|
+
this.state = 700;
|
|
56690
57058
|
this.expr4_5();
|
|
56691
57059
|
}
|
|
56692
57060
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56693
|
-
this.state =
|
|
57061
|
+
this.state = 707;
|
|
56694
57062
|
this._errHandler.sync(this);
|
|
56695
57063
|
_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);
|
|
56696
57064
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56703,18 +57071,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56703
57071
|
{
|
|
56704
57072
|
_localctx = new Expr4Context(_parentctx, _parentState);
|
|
56705
57073
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr4);
|
|
56706
|
-
this.state =
|
|
57074
|
+
this.state = 702;
|
|
56707
57075
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56708
57076
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56709
57077
|
}
|
|
56710
|
-
this.state = 702;
|
|
56711
|
-
this.match(ForgeParser.AND_TOK);
|
|
56712
57078
|
this.state = 703;
|
|
57079
|
+
this.match(ForgeParser.AND_TOK);
|
|
57080
|
+
this.state = 704;
|
|
56713
57081
|
this.expr4_5();
|
|
56714
57082
|
}
|
|
56715
57083
|
}
|
|
56716
57084
|
}
|
|
56717
|
-
this.state =
|
|
57085
|
+
this.state = 709;
|
|
56718
57086
|
this._errHandler.sync(this);
|
|
56719
57087
|
_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);
|
|
56720
57088
|
}
|
|
@@ -56740,57 +57108,57 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56740
57108
|
let _localctx = new Expr4_5Context(this._ctx, this.state);
|
|
56741
57109
|
this.enterRule(_localctx, 106, ForgeParser.RULE_expr4_5);
|
|
56742
57110
|
try {
|
|
56743
|
-
this.state =
|
|
57111
|
+
this.state = 727;
|
|
56744
57112
|
this._errHandler.sync(this);
|
|
56745
57113
|
switch (this.interpreter.adaptivePredict(this._input, 86, this._ctx)) {
|
|
56746
57114
|
case 1:
|
|
56747
57115
|
this.enterOuterAlt(_localctx, 1);
|
|
56748
57116
|
{
|
|
56749
|
-
this.state =
|
|
57117
|
+
this.state = 710;
|
|
56750
57118
|
this.expr5();
|
|
56751
57119
|
}
|
|
56752
57120
|
break;
|
|
56753
57121
|
case 2:
|
|
56754
57122
|
this.enterOuterAlt(_localctx, 2);
|
|
56755
57123
|
{
|
|
56756
|
-
this.state = 710;
|
|
56757
|
-
this.expr5();
|
|
56758
57124
|
this.state = 711;
|
|
56759
|
-
this.
|
|
57125
|
+
this.expr5();
|
|
56760
57126
|
this.state = 712;
|
|
57127
|
+
this.match(ForgeParser.UNTIL_TOK);
|
|
57128
|
+
this.state = 713;
|
|
56761
57129
|
this.expr5();
|
|
56762
57130
|
}
|
|
56763
57131
|
break;
|
|
56764
57132
|
case 3:
|
|
56765
57133
|
this.enterOuterAlt(_localctx, 3);
|
|
56766
57134
|
{
|
|
56767
|
-
this.state = 714;
|
|
56768
|
-
this.expr5();
|
|
56769
57135
|
this.state = 715;
|
|
56770
|
-
this.
|
|
57136
|
+
this.expr5();
|
|
56771
57137
|
this.state = 716;
|
|
57138
|
+
this.match(ForgeParser.RELEASE_TOK);
|
|
57139
|
+
this.state = 717;
|
|
56772
57140
|
this.expr5();
|
|
56773
57141
|
}
|
|
56774
57142
|
break;
|
|
56775
57143
|
case 4:
|
|
56776
57144
|
this.enterOuterAlt(_localctx, 4);
|
|
56777
57145
|
{
|
|
56778
|
-
this.state = 718;
|
|
56779
|
-
this.expr5();
|
|
56780
57146
|
this.state = 719;
|
|
56781
|
-
this.
|
|
57147
|
+
this.expr5();
|
|
56782
57148
|
this.state = 720;
|
|
57149
|
+
this.match(ForgeParser.SINCE_TOK);
|
|
57150
|
+
this.state = 721;
|
|
56783
57151
|
this.expr5();
|
|
56784
57152
|
}
|
|
56785
57153
|
break;
|
|
56786
57154
|
case 5:
|
|
56787
57155
|
this.enterOuterAlt(_localctx, 5);
|
|
56788
57156
|
{
|
|
56789
|
-
this.state = 722;
|
|
56790
|
-
this.expr5();
|
|
56791
57157
|
this.state = 723;
|
|
56792
|
-
this.
|
|
57158
|
+
this.expr5();
|
|
56793
57159
|
this.state = 724;
|
|
57160
|
+
this.match(ForgeParser.TRIGGERED_TOK);
|
|
57161
|
+
this.state = 725;
|
|
56794
57162
|
this.expr5();
|
|
56795
57163
|
}
|
|
56796
57164
|
break;
|
|
@@ -56816,9 +57184,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56816
57184
|
let _localctx = new Expr5Context(this._ctx, this.state);
|
|
56817
57185
|
this.enterRule(_localctx, 108, ForgeParser.RULE_expr5);
|
|
56818
57186
|
try {
|
|
56819
|
-
this.state =
|
|
57187
|
+
this.state = 744;
|
|
56820
57188
|
this._errHandler.sync(this);
|
|
56821
57189
|
switch (this._input.LA(1)) {
|
|
57190
|
+
case ForgeParser.STRING_TOK:
|
|
56822
57191
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
56823
57192
|
case ForgeParser.LONE_TOK:
|
|
56824
57193
|
case ForgeParser.SOME_TOK:
|
|
@@ -56850,70 +57219,70 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56850
57219
|
case ForgeParser.IDENTIFIER_TOK:
|
|
56851
57220
|
this.enterOuterAlt(_localctx, 1);
|
|
56852
57221
|
{
|
|
56853
|
-
this.state =
|
|
57222
|
+
this.state = 729;
|
|
56854
57223
|
this.expr6(0);
|
|
56855
57224
|
}
|
|
56856
57225
|
break;
|
|
56857
57226
|
case ForgeParser.NEG_TOK:
|
|
56858
57227
|
this.enterOuterAlt(_localctx, 2);
|
|
56859
57228
|
{
|
|
56860
|
-
this.state = 729;
|
|
56861
|
-
this.match(ForgeParser.NEG_TOK);
|
|
56862
57229
|
this.state = 730;
|
|
57230
|
+
this.match(ForgeParser.NEG_TOK);
|
|
57231
|
+
this.state = 731;
|
|
56863
57232
|
this.expr5();
|
|
56864
57233
|
}
|
|
56865
57234
|
break;
|
|
56866
57235
|
case ForgeParser.ALWAYS_TOK:
|
|
56867
57236
|
this.enterOuterAlt(_localctx, 3);
|
|
56868
57237
|
{
|
|
56869
|
-
this.state = 731;
|
|
56870
|
-
this.match(ForgeParser.ALWAYS_TOK);
|
|
56871
57238
|
this.state = 732;
|
|
57239
|
+
this.match(ForgeParser.ALWAYS_TOK);
|
|
57240
|
+
this.state = 733;
|
|
56872
57241
|
this.expr5();
|
|
56873
57242
|
}
|
|
56874
57243
|
break;
|
|
56875
57244
|
case ForgeParser.EVENTUALLY_TOK:
|
|
56876
57245
|
this.enterOuterAlt(_localctx, 4);
|
|
56877
57246
|
{
|
|
56878
|
-
this.state = 733;
|
|
56879
|
-
this.match(ForgeParser.EVENTUALLY_TOK);
|
|
56880
57247
|
this.state = 734;
|
|
57248
|
+
this.match(ForgeParser.EVENTUALLY_TOK);
|
|
57249
|
+
this.state = 735;
|
|
56881
57250
|
this.expr5();
|
|
56882
57251
|
}
|
|
56883
57252
|
break;
|
|
56884
57253
|
case ForgeParser.AFTER_TOK:
|
|
56885
57254
|
this.enterOuterAlt(_localctx, 5);
|
|
56886
57255
|
{
|
|
56887
|
-
this.state = 735;
|
|
56888
|
-
this.match(ForgeParser.AFTER_TOK);
|
|
56889
57256
|
this.state = 736;
|
|
57257
|
+
this.match(ForgeParser.AFTER_TOK);
|
|
57258
|
+
this.state = 737;
|
|
56890
57259
|
this.expr5();
|
|
56891
57260
|
}
|
|
56892
57261
|
break;
|
|
56893
57262
|
case ForgeParser.BEFORE_TOK:
|
|
56894
57263
|
this.enterOuterAlt(_localctx, 6);
|
|
56895
57264
|
{
|
|
56896
|
-
this.state = 737;
|
|
56897
|
-
this.match(ForgeParser.BEFORE_TOK);
|
|
56898
57265
|
this.state = 738;
|
|
57266
|
+
this.match(ForgeParser.BEFORE_TOK);
|
|
57267
|
+
this.state = 739;
|
|
56899
57268
|
this.expr5();
|
|
56900
57269
|
}
|
|
56901
57270
|
break;
|
|
56902
57271
|
case ForgeParser.ONCE_TOK:
|
|
56903
57272
|
this.enterOuterAlt(_localctx, 7);
|
|
56904
57273
|
{
|
|
56905
|
-
this.state = 739;
|
|
56906
|
-
this.match(ForgeParser.ONCE_TOK);
|
|
56907
57274
|
this.state = 740;
|
|
57275
|
+
this.match(ForgeParser.ONCE_TOK);
|
|
57276
|
+
this.state = 741;
|
|
56908
57277
|
this.expr5();
|
|
56909
57278
|
}
|
|
56910
57279
|
break;
|
|
56911
57280
|
case ForgeParser.HISTORICALLY_TOK:
|
|
56912
57281
|
this.enterOuterAlt(_localctx, 8);
|
|
56913
57282
|
{
|
|
56914
|
-
this.state = 741;
|
|
56915
|
-
this.match(ForgeParser.HISTORICALLY_TOK);
|
|
56916
57283
|
this.state = 742;
|
|
57284
|
+
this.match(ForgeParser.HISTORICALLY_TOK);
|
|
57285
|
+
this.state = 743;
|
|
56917
57286
|
this.expr5();
|
|
56918
57287
|
}
|
|
56919
57288
|
break;
|
|
@@ -56953,11 +57322,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56953
57322
|
this.enterOuterAlt(_localctx, 1);
|
|
56954
57323
|
{
|
|
56955
57324
|
{
|
|
56956
|
-
this.state =
|
|
57325
|
+
this.state = 747;
|
|
56957
57326
|
this.expr7();
|
|
56958
57327
|
}
|
|
56959
57328
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56960
|
-
this.state =
|
|
57329
|
+
this.state = 758;
|
|
56961
57330
|
this._errHandler.sync(this);
|
|
56962
57331
|
_alt = this.interpreter.adaptivePredict(this._input, 89, this._ctx);
|
|
56963
57332
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56970,27 +57339,27 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56970
57339
|
{
|
|
56971
57340
|
_localctx = new Expr6Context(_parentctx, _parentState);
|
|
56972
57341
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr6);
|
|
56973
|
-
this.state =
|
|
57342
|
+
this.state = 749;
|
|
56974
57343
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56975
57344
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56976
57345
|
}
|
|
56977
|
-
this.state =
|
|
57346
|
+
this.state = 751;
|
|
56978
57347
|
this._errHandler.sync(this);
|
|
56979
57348
|
_la = this._input.LA(1);
|
|
56980
57349
|
if (_la === ForgeParser.NEG_TOK) {
|
|
56981
57350
|
{
|
|
56982
|
-
this.state =
|
|
57351
|
+
this.state = 750;
|
|
56983
57352
|
this.match(ForgeParser.NEG_TOK);
|
|
56984
57353
|
}
|
|
56985
57354
|
}
|
|
56986
|
-
this.state = 752;
|
|
56987
|
-
this.compareOp();
|
|
56988
57355
|
this.state = 753;
|
|
57356
|
+
this.compareOp();
|
|
57357
|
+
this.state = 754;
|
|
56989
57358
|
this.expr7();
|
|
56990
57359
|
}
|
|
56991
57360
|
}
|
|
56992
57361
|
}
|
|
56993
|
-
this.state =
|
|
57362
|
+
this.state = 760;
|
|
56994
57363
|
this._errHandler.sync(this);
|
|
56995
57364
|
_alt = this.interpreter.adaptivePredict(this._input, 89, this._ctx);
|
|
56996
57365
|
}
|
|
@@ -57017,9 +57386,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57017
57386
|
this.enterRule(_localctx, 112, ForgeParser.RULE_expr7);
|
|
57018
57387
|
let _la;
|
|
57019
57388
|
try {
|
|
57020
|
-
this.state =
|
|
57389
|
+
this.state = 764;
|
|
57021
57390
|
this._errHandler.sync(this);
|
|
57022
57391
|
switch (this._input.LA(1)) {
|
|
57392
|
+
case ForgeParser.STRING_TOK:
|
|
57023
57393
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
57024
57394
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
57025
57395
|
case ForgeParser.NONE_TOK:
|
|
@@ -57045,7 +57415,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57045
57415
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57046
57416
|
this.enterOuterAlt(_localctx, 1);
|
|
57047
57417
|
{
|
|
57048
|
-
this.state =
|
|
57418
|
+
this.state = 761;
|
|
57049
57419
|
this.expr8(0);
|
|
57050
57420
|
}
|
|
57051
57421
|
break;
|
|
@@ -57057,7 +57427,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57057
57427
|
case ForgeParser.NO_TOK:
|
|
57058
57428
|
this.enterOuterAlt(_localctx, 2);
|
|
57059
57429
|
{
|
|
57060
|
-
this.state =
|
|
57430
|
+
this.state = 762;
|
|
57061
57431
|
_la = this._input.LA(1);
|
|
57062
57432
|
if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << ForgeParser.LONE_TOK) | (1 << ForgeParser.SOME_TOK) | (1 << ForgeParser.ONE_TOK) | (1 << ForgeParser.TWO_TOK) | (1 << ForgeParser.SET_TOK))) !== 0) || _la === ForgeParser.NO_TOK)) {
|
|
57063
57433
|
this._errHandler.recoverInline(this);
|
|
@@ -57069,7 +57439,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57069
57439
|
this._errHandler.reportMatch(this);
|
|
57070
57440
|
this.consume();
|
|
57071
57441
|
}
|
|
57072
|
-
this.state =
|
|
57442
|
+
this.state = 763;
|
|
57073
57443
|
this.expr8(0);
|
|
57074
57444
|
}
|
|
57075
57445
|
break;
|
|
@@ -57109,11 +57479,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57109
57479
|
this.enterOuterAlt(_localctx, 1);
|
|
57110
57480
|
{
|
|
57111
57481
|
{
|
|
57112
|
-
this.state =
|
|
57482
|
+
this.state = 767;
|
|
57113
57483
|
this.expr9();
|
|
57114
57484
|
}
|
|
57115
57485
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57116
|
-
this.state =
|
|
57486
|
+
this.state = 774;
|
|
57117
57487
|
this._errHandler.sync(this);
|
|
57118
57488
|
_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);
|
|
57119
57489
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57126,11 +57496,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57126
57496
|
{
|
|
57127
57497
|
_localctx = new Expr8Context(_parentctx, _parentState);
|
|
57128
57498
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr8);
|
|
57129
|
-
this.state =
|
|
57499
|
+
this.state = 769;
|
|
57130
57500
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57131
57501
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57132
57502
|
}
|
|
57133
|
-
this.state =
|
|
57503
|
+
this.state = 770;
|
|
57134
57504
|
_la = this._input.LA(1);
|
|
57135
57505
|
if (!(_la === ForgeParser.PLUS_TOK || _la === ForgeParser.MINUS_TOK)) {
|
|
57136
57506
|
this._errHandler.recoverInline(this);
|
|
@@ -57142,12 +57512,12 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57142
57512
|
this._errHandler.reportMatch(this);
|
|
57143
57513
|
this.consume();
|
|
57144
57514
|
}
|
|
57145
|
-
this.state =
|
|
57515
|
+
this.state = 771;
|
|
57146
57516
|
this.expr10(0);
|
|
57147
57517
|
}
|
|
57148
57518
|
}
|
|
57149
57519
|
}
|
|
57150
|
-
this.state =
|
|
57520
|
+
this.state = 776;
|
|
57151
57521
|
this._errHandler.sync(this);
|
|
57152
57522
|
_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);
|
|
57153
57523
|
}
|
|
@@ -57173,9 +57543,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57173
57543
|
let _localctx = new Expr9Context(this._ctx, this.state);
|
|
57174
57544
|
this.enterRule(_localctx, 116, ForgeParser.RULE_expr9);
|
|
57175
57545
|
try {
|
|
57176
|
-
this.state =
|
|
57546
|
+
this.state = 780;
|
|
57177
57547
|
this._errHandler.sync(this);
|
|
57178
57548
|
switch (this._input.LA(1)) {
|
|
57549
|
+
case ForgeParser.STRING_TOK:
|
|
57179
57550
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
57180
57551
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
57181
57552
|
case ForgeParser.NONE_TOK:
|
|
@@ -57200,16 +57571,16 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57200
57571
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57201
57572
|
this.enterOuterAlt(_localctx, 1);
|
|
57202
57573
|
{
|
|
57203
|
-
this.state =
|
|
57574
|
+
this.state = 777;
|
|
57204
57575
|
this.expr10(0);
|
|
57205
57576
|
}
|
|
57206
57577
|
break;
|
|
57207
57578
|
case ForgeParser.CARD_TOK:
|
|
57208
57579
|
this.enterOuterAlt(_localctx, 2);
|
|
57209
57580
|
{
|
|
57210
|
-
this.state = 777;
|
|
57211
|
-
this.match(ForgeParser.CARD_TOK);
|
|
57212
57581
|
this.state = 778;
|
|
57582
|
+
this.match(ForgeParser.CARD_TOK);
|
|
57583
|
+
this.state = 779;
|
|
57213
57584
|
this.expr9();
|
|
57214
57585
|
}
|
|
57215
57586
|
break;
|
|
@@ -57248,11 +57619,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57248
57619
|
this.enterOuterAlt(_localctx, 1);
|
|
57249
57620
|
{
|
|
57250
57621
|
{
|
|
57251
|
-
this.state =
|
|
57622
|
+
this.state = 783;
|
|
57252
57623
|
this.expr11(0);
|
|
57253
57624
|
}
|
|
57254
57625
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57255
|
-
this.state =
|
|
57626
|
+
this.state = 790;
|
|
57256
57627
|
this._errHandler.sync(this);
|
|
57257
57628
|
_alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
|
|
57258
57629
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57265,18 +57636,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57265
57636
|
{
|
|
57266
57637
|
_localctx = new Expr10Context(_parentctx, _parentState);
|
|
57267
57638
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr10);
|
|
57268
|
-
this.state =
|
|
57639
|
+
this.state = 785;
|
|
57269
57640
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57270
57641
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57271
57642
|
}
|
|
57272
|
-
this.state = 785;
|
|
57273
|
-
this.match(ForgeParser.PPLUS_TOK);
|
|
57274
57643
|
this.state = 786;
|
|
57644
|
+
this.match(ForgeParser.PPLUS_TOK);
|
|
57645
|
+
this.state = 787;
|
|
57275
57646
|
this.expr11(0);
|
|
57276
57647
|
}
|
|
57277
57648
|
}
|
|
57278
57649
|
}
|
|
57279
|
-
this.state =
|
|
57650
|
+
this.state = 792;
|
|
57280
57651
|
this._errHandler.sync(this);
|
|
57281
57652
|
_alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
|
|
57282
57653
|
}
|
|
@@ -57313,11 +57684,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57313
57684
|
this.enterOuterAlt(_localctx, 1);
|
|
57314
57685
|
{
|
|
57315
57686
|
{
|
|
57316
|
-
this.state =
|
|
57687
|
+
this.state = 794;
|
|
57317
57688
|
this.expr12(0);
|
|
57318
57689
|
}
|
|
57319
57690
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57320
|
-
this.state =
|
|
57691
|
+
this.state = 801;
|
|
57321
57692
|
this._errHandler.sync(this);
|
|
57322
57693
|
_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);
|
|
57323
57694
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57330,18 +57701,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57330
57701
|
{
|
|
57331
57702
|
_localctx = new Expr11Context(_parentctx, _parentState);
|
|
57332
57703
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr11);
|
|
57333
|
-
this.state =
|
|
57704
|
+
this.state = 796;
|
|
57334
57705
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57335
57706
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57336
57707
|
}
|
|
57337
|
-
this.state = 796;
|
|
57338
|
-
this.match(ForgeParser.AMP_TOK);
|
|
57339
57708
|
this.state = 797;
|
|
57709
|
+
this.match(ForgeParser.AMP_TOK);
|
|
57710
|
+
this.state = 798;
|
|
57340
57711
|
this.expr12(0);
|
|
57341
57712
|
}
|
|
57342
57713
|
}
|
|
57343
57714
|
}
|
|
57344
|
-
this.state =
|
|
57715
|
+
this.state = 803;
|
|
57345
57716
|
this._errHandler.sync(this);
|
|
57346
57717
|
_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);
|
|
57347
57718
|
}
|
|
@@ -57378,11 +57749,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57378
57749
|
this.enterOuterAlt(_localctx, 1);
|
|
57379
57750
|
{
|
|
57380
57751
|
{
|
|
57381
|
-
this.state =
|
|
57752
|
+
this.state = 805;
|
|
57382
57753
|
this.expr13(0);
|
|
57383
57754
|
}
|
|
57384
57755
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57385
|
-
this.state =
|
|
57756
|
+
this.state = 813;
|
|
57386
57757
|
this._errHandler.sync(this);
|
|
57387
57758
|
_alt = this.interpreter.adaptivePredict(this._input, 95, this._ctx);
|
|
57388
57759
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57395,18 +57766,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57395
57766
|
{
|
|
57396
57767
|
_localctx = new Expr12Context(_parentctx, _parentState);
|
|
57397
57768
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr12);
|
|
57398
|
-
this.state =
|
|
57769
|
+
this.state = 807;
|
|
57399
57770
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57400
57771
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57401
57772
|
}
|
|
57402
|
-
this.state = 807;
|
|
57403
|
-
this.arrowOp();
|
|
57404
57773
|
this.state = 808;
|
|
57774
|
+
this.arrowOp();
|
|
57775
|
+
this.state = 809;
|
|
57405
57776
|
this.expr13(0);
|
|
57406
57777
|
}
|
|
57407
57778
|
}
|
|
57408
57779
|
}
|
|
57409
|
-
this.state =
|
|
57780
|
+
this.state = 815;
|
|
57410
57781
|
this._errHandler.sync(this);
|
|
57411
57782
|
_alt = this.interpreter.adaptivePredict(this._input, 95, this._ctx);
|
|
57412
57783
|
}
|
|
@@ -57444,11 +57815,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57444
57815
|
this.enterOuterAlt(_localctx, 1);
|
|
57445
57816
|
{
|
|
57446
57817
|
{
|
|
57447
|
-
this.state =
|
|
57818
|
+
this.state = 817;
|
|
57448
57819
|
this.expr14(0);
|
|
57449
57820
|
}
|
|
57450
57821
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57451
|
-
this.state =
|
|
57822
|
+
this.state = 824;
|
|
57452
57823
|
this._errHandler.sync(this);
|
|
57453
57824
|
_alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
|
|
57454
57825
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57461,11 +57832,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57461
57832
|
{
|
|
57462
57833
|
_localctx = new Expr13Context(_parentctx, _parentState);
|
|
57463
57834
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr13);
|
|
57464
|
-
this.state =
|
|
57835
|
+
this.state = 819;
|
|
57465
57836
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57466
57837
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57467
57838
|
}
|
|
57468
|
-
this.state =
|
|
57839
|
+
this.state = 820;
|
|
57469
57840
|
_la = this._input.LA(1);
|
|
57470
57841
|
if (!(_la === ForgeParser.SUBT_TOK || _la === ForgeParser.SUPT_TOK)) {
|
|
57471
57842
|
this._errHandler.recoverInline(this);
|
|
@@ -57477,12 +57848,12 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57477
57848
|
this._errHandler.reportMatch(this);
|
|
57478
57849
|
this.consume();
|
|
57479
57850
|
}
|
|
57480
|
-
this.state =
|
|
57851
|
+
this.state = 821;
|
|
57481
57852
|
this.expr14(0);
|
|
57482
57853
|
}
|
|
57483
57854
|
}
|
|
57484
57855
|
}
|
|
57485
|
-
this.state =
|
|
57856
|
+
this.state = 826;
|
|
57486
57857
|
this._errHandler.sync(this);
|
|
57487
57858
|
_alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
|
|
57488
57859
|
}
|
|
@@ -57519,11 +57890,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57519
57890
|
this.enterOuterAlt(_localctx, 1);
|
|
57520
57891
|
{
|
|
57521
57892
|
{
|
|
57522
|
-
this.state =
|
|
57893
|
+
this.state = 828;
|
|
57523
57894
|
this.expr15(0);
|
|
57524
57895
|
}
|
|
57525
57896
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57526
|
-
this.state =
|
|
57897
|
+
this.state = 837;
|
|
57527
57898
|
this._errHandler.sync(this);
|
|
57528
57899
|
_alt = this.interpreter.adaptivePredict(this._input, 97, this._ctx);
|
|
57529
57900
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57536,20 +57907,20 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57536
57907
|
{
|
|
57537
57908
|
_localctx = new Expr14Context(_parentctx, _parentState);
|
|
57538
57909
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr14);
|
|
57539
|
-
this.state =
|
|
57910
|
+
this.state = 830;
|
|
57540
57911
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57541
57912
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57542
57913
|
}
|
|
57543
|
-
this.state = 830;
|
|
57544
|
-
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
57545
57914
|
this.state = 831;
|
|
57546
|
-
this.
|
|
57915
|
+
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
57547
57916
|
this.state = 832;
|
|
57917
|
+
this.exprList();
|
|
57918
|
+
this.state = 833;
|
|
57548
57919
|
this.match(ForgeParser.RIGHT_SQUARE_TOK);
|
|
57549
57920
|
}
|
|
57550
57921
|
}
|
|
57551
57922
|
}
|
|
57552
|
-
this.state =
|
|
57923
|
+
this.state = 839;
|
|
57553
57924
|
this._errHandler.sync(this);
|
|
57554
57925
|
_alt = this.interpreter.adaptivePredict(this._input, 97, this._ctx);
|
|
57555
57926
|
}
|
|
@@ -57585,30 +57956,30 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57585
57956
|
let _alt;
|
|
57586
57957
|
this.enterOuterAlt(_localctx, 1);
|
|
57587
57958
|
{
|
|
57588
|
-
this.state =
|
|
57959
|
+
this.state = 847;
|
|
57589
57960
|
this._errHandler.sync(this);
|
|
57590
57961
|
switch (this.interpreter.adaptivePredict(this._input, 98, this._ctx)) {
|
|
57591
57962
|
case 1:
|
|
57592
57963
|
{
|
|
57593
|
-
this.state =
|
|
57964
|
+
this.state = 841;
|
|
57594
57965
|
this.expr16(0);
|
|
57595
57966
|
}
|
|
57596
57967
|
break;
|
|
57597
57968
|
case 2:
|
|
57598
57969
|
{
|
|
57599
|
-
this.state = 841;
|
|
57600
|
-
this.name();
|
|
57601
57970
|
this.state = 842;
|
|
57602
|
-
this.
|
|
57971
|
+
this.name();
|
|
57603
57972
|
this.state = 843;
|
|
57604
|
-
this.
|
|
57973
|
+
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
57605
57974
|
this.state = 844;
|
|
57975
|
+
this.exprList();
|
|
57976
|
+
this.state = 845;
|
|
57606
57977
|
this.match(ForgeParser.RIGHT_SQUARE_TOK);
|
|
57607
57978
|
}
|
|
57608
57979
|
break;
|
|
57609
57980
|
}
|
|
57610
57981
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57611
|
-
this.state =
|
|
57982
|
+
this.state = 854;
|
|
57612
57983
|
this._errHandler.sync(this);
|
|
57613
57984
|
_alt = this.interpreter.adaptivePredict(this._input, 99, this._ctx);
|
|
57614
57985
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57621,18 +57992,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57621
57992
|
{
|
|
57622
57993
|
_localctx = new Expr15Context(_parentctx, _parentState);
|
|
57623
57994
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr15);
|
|
57624
|
-
this.state =
|
|
57995
|
+
this.state = 849;
|
|
57625
57996
|
if (!(this.precpred(this._ctx, 2))) {
|
|
57626
57997
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
|
|
57627
57998
|
}
|
|
57628
|
-
this.state = 849;
|
|
57629
|
-
this.match(ForgeParser.DOT_TOK);
|
|
57630
57999
|
this.state = 850;
|
|
58000
|
+
this.match(ForgeParser.DOT_TOK);
|
|
58001
|
+
this.state = 851;
|
|
57631
58002
|
this.expr16(0);
|
|
57632
58003
|
}
|
|
57633
58004
|
}
|
|
57634
58005
|
}
|
|
57635
|
-
this.state =
|
|
58006
|
+
this.state = 856;
|
|
57636
58007
|
this._errHandler.sync(this);
|
|
57637
58008
|
_alt = this.interpreter.adaptivePredict(this._input, 99, this._ctx);
|
|
57638
58009
|
}
|
|
@@ -57669,11 +58040,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57669
58040
|
this.enterOuterAlt(_localctx, 1);
|
|
57670
58041
|
{
|
|
57671
58042
|
{
|
|
57672
|
-
this.state =
|
|
58043
|
+
this.state = 858;
|
|
57673
58044
|
this.expr17();
|
|
57674
58045
|
}
|
|
57675
58046
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57676
|
-
this.state =
|
|
58047
|
+
this.state = 864;
|
|
57677
58048
|
this._errHandler.sync(this);
|
|
57678
58049
|
_alt = this.interpreter.adaptivePredict(this._input, 100, this._ctx);
|
|
57679
58050
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57686,16 +58057,16 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57686
58057
|
{
|
|
57687
58058
|
_localctx = new Expr16Context(_parentctx, _parentState);
|
|
57688
58059
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr16);
|
|
57689
|
-
this.state =
|
|
58060
|
+
this.state = 860;
|
|
57690
58061
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57691
58062
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57692
58063
|
}
|
|
57693
|
-
this.state =
|
|
58064
|
+
this.state = 861;
|
|
57694
58065
|
this.match(ForgeParser.PRIME_TOK);
|
|
57695
58066
|
}
|
|
57696
58067
|
}
|
|
57697
58068
|
}
|
|
57698
|
-
this.state =
|
|
58069
|
+
this.state = 866;
|
|
57699
58070
|
this._errHandler.sync(this);
|
|
57700
58071
|
_alt = this.interpreter.adaptivePredict(this._input, 100, this._ctx);
|
|
57701
58072
|
}
|
|
@@ -57722,9 +58093,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57722
58093
|
this.enterRule(_localctx, 132, ForgeParser.RULE_expr17);
|
|
57723
58094
|
let _la;
|
|
57724
58095
|
try {
|
|
57725
|
-
this.state =
|
|
58096
|
+
this.state = 870;
|
|
57726
58097
|
this._errHandler.sync(this);
|
|
57727
58098
|
switch (this._input.LA(1)) {
|
|
58099
|
+
case ForgeParser.STRING_TOK:
|
|
57728
58100
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
57729
58101
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
57730
58102
|
case ForgeParser.NONE_TOK:
|
|
@@ -57742,7 +58114,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57742
58114
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57743
58115
|
this.enterOuterAlt(_localctx, 1);
|
|
57744
58116
|
{
|
|
57745
|
-
this.state =
|
|
58117
|
+
this.state = 867;
|
|
57746
58118
|
this.expr18();
|
|
57747
58119
|
}
|
|
57748
58120
|
break;
|
|
@@ -57755,7 +58127,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57755
58127
|
case ForgeParser.GET_LABEL_NUM_TOK:
|
|
57756
58128
|
this.enterOuterAlt(_localctx, 2);
|
|
57757
58129
|
{
|
|
57758
|
-
this.state =
|
|
58130
|
+
this.state = 868;
|
|
57759
58131
|
_la = this._input.LA(1);
|
|
57760
58132
|
if (!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (ForgeParser.TILDE_TOK - 80)) | (1 << (ForgeParser.EXP_TOK - 80)) | (1 << (ForgeParser.STAR_TOK - 80)) | (1 << (ForgeParser.GET_LABEL_TOK - 80)) | (1 << (ForgeParser.GET_LABEL_STR_TOK - 80)) | (1 << (ForgeParser.GET_LABEL_BOOL_TOK - 80)) | (1 << (ForgeParser.GET_LABEL_NUM_TOK - 80)))) !== 0))) {
|
|
57761
58133
|
this._errHandler.recoverInline(this);
|
|
@@ -57767,7 +58139,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57767
58139
|
this._errHandler.reportMatch(this);
|
|
57768
58140
|
this.consume();
|
|
57769
58141
|
}
|
|
57770
|
-
this.state =
|
|
58142
|
+
this.state = 869;
|
|
57771
58143
|
this.expr17();
|
|
57772
58144
|
}
|
|
57773
58145
|
break;
|
|
@@ -57795,83 +58167,83 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57795
58167
|
let _localctx = new Expr18Context(this._ctx, this.state);
|
|
57796
58168
|
this.enterRule(_localctx, 134, ForgeParser.RULE_expr18);
|
|
57797
58169
|
try {
|
|
57798
|
-
this.state =
|
|
58170
|
+
this.state = 890;
|
|
57799
58171
|
this._errHandler.sync(this);
|
|
57800
58172
|
switch (this.interpreter.adaptivePredict(this._input, 102, this._ctx)) {
|
|
57801
58173
|
case 1:
|
|
57802
58174
|
this.enterOuterAlt(_localctx, 1);
|
|
57803
58175
|
{
|
|
57804
|
-
this.state =
|
|
58176
|
+
this.state = 872;
|
|
57805
58177
|
this.const();
|
|
57806
58178
|
}
|
|
57807
58179
|
break;
|
|
57808
58180
|
case 2:
|
|
57809
58181
|
this.enterOuterAlt(_localctx, 2);
|
|
57810
58182
|
{
|
|
57811
|
-
this.state =
|
|
58183
|
+
this.state = 873;
|
|
57812
58184
|
this.qualName();
|
|
57813
58185
|
}
|
|
57814
58186
|
break;
|
|
57815
58187
|
case 3:
|
|
57816
58188
|
this.enterOuterAlt(_localctx, 3);
|
|
57817
58189
|
{
|
|
57818
|
-
this.state = 873;
|
|
57819
|
-
this.match(ForgeParser.AT_TOK);
|
|
57820
58190
|
this.state = 874;
|
|
58191
|
+
this.match(ForgeParser.AT_TOK);
|
|
58192
|
+
this.state = 875;
|
|
57821
58193
|
this.name();
|
|
57822
58194
|
}
|
|
57823
58195
|
break;
|
|
57824
58196
|
case 4:
|
|
57825
58197
|
this.enterOuterAlt(_localctx, 4);
|
|
57826
58198
|
{
|
|
57827
|
-
this.state = 875;
|
|
57828
|
-
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
57829
58199
|
this.state = 876;
|
|
58200
|
+
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
58201
|
+
this.state = 877;
|
|
57830
58202
|
this.name();
|
|
57831
58203
|
}
|
|
57832
58204
|
break;
|
|
57833
58205
|
case 5:
|
|
57834
58206
|
this.enterOuterAlt(_localctx, 5);
|
|
57835
58207
|
{
|
|
57836
|
-
this.state =
|
|
58208
|
+
this.state = 878;
|
|
57837
58209
|
this.match(ForgeParser.THIS_TOK);
|
|
57838
58210
|
}
|
|
57839
58211
|
break;
|
|
57840
58212
|
case 6:
|
|
57841
58213
|
this.enterOuterAlt(_localctx, 6);
|
|
57842
58214
|
{
|
|
57843
|
-
this.state = 878;
|
|
57844
|
-
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
57845
58215
|
this.state = 879;
|
|
57846
|
-
this.
|
|
58216
|
+
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
57847
58217
|
this.state = 880;
|
|
57848
|
-
this.
|
|
58218
|
+
this.quantDeclList();
|
|
57849
58219
|
this.state = 881;
|
|
58220
|
+
this.blockOrBar();
|
|
58221
|
+
this.state = 882;
|
|
57850
58222
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
57851
58223
|
}
|
|
57852
58224
|
break;
|
|
57853
58225
|
case 7:
|
|
57854
58226
|
this.enterOuterAlt(_localctx, 7);
|
|
57855
58227
|
{
|
|
57856
|
-
this.state = 883;
|
|
57857
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
57858
58228
|
this.state = 884;
|
|
57859
|
-
this.
|
|
58229
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
57860
58230
|
this.state = 885;
|
|
58231
|
+
this.expr();
|
|
58232
|
+
this.state = 886;
|
|
57861
58233
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
57862
58234
|
}
|
|
57863
58235
|
break;
|
|
57864
58236
|
case 8:
|
|
57865
58237
|
this.enterOuterAlt(_localctx, 8);
|
|
57866
58238
|
{
|
|
57867
|
-
this.state =
|
|
58239
|
+
this.state = 888;
|
|
57868
58240
|
this.block();
|
|
57869
58241
|
}
|
|
57870
58242
|
break;
|
|
57871
58243
|
case 9:
|
|
57872
58244
|
this.enterOuterAlt(_localctx, 9);
|
|
57873
58245
|
{
|
|
57874
|
-
this.state =
|
|
58246
|
+
this.state = 889;
|
|
57875
58247
|
this.sexpr();
|
|
57876
58248
|
}
|
|
57877
58249
|
break;
|
|
@@ -57897,24 +58269,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57897
58269
|
let _localctx = new ArrowExprContext(this._ctx, this.state);
|
|
57898
58270
|
this.enterRule(_localctx, 136, ForgeParser.RULE_arrowExpr);
|
|
57899
58271
|
try {
|
|
57900
|
-
this.state =
|
|
58272
|
+
this.state = 897;
|
|
57901
58273
|
this._errHandler.sync(this);
|
|
57902
58274
|
switch (this.interpreter.adaptivePredict(this._input, 103, this._ctx)) {
|
|
57903
58275
|
case 1:
|
|
57904
58276
|
this.enterOuterAlt(_localctx, 1);
|
|
57905
58277
|
{
|
|
57906
|
-
this.state =
|
|
58278
|
+
this.state = 892;
|
|
57907
58279
|
this.qualName();
|
|
57908
58280
|
}
|
|
57909
58281
|
break;
|
|
57910
58282
|
case 2:
|
|
57911
58283
|
this.enterOuterAlt(_localctx, 2);
|
|
57912
58284
|
{
|
|
57913
|
-
this.state = 892;
|
|
57914
|
-
this.qualName();
|
|
57915
58285
|
this.state = 893;
|
|
57916
|
-
this.
|
|
58286
|
+
this.qualName();
|
|
57917
58287
|
this.state = 894;
|
|
58288
|
+
this.match(ForgeParser.ARROW_TOK);
|
|
58289
|
+
this.state = 895;
|
|
57918
58290
|
this.arrowExpr();
|
|
57919
58291
|
}
|
|
57920
58292
|
break;
|
|
@@ -57942,7 +58314,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57942
58314
|
try {
|
|
57943
58315
|
this.enterOuterAlt(_localctx, 1);
|
|
57944
58316
|
{
|
|
57945
|
-
this.state =
|
|
58317
|
+
this.state = 899;
|
|
57946
58318
|
this.sexpr();
|
|
57947
58319
|
}
|
|
57948
58320
|
}
|
|
@@ -57968,7 +58340,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57968
58340
|
try {
|
|
57969
58341
|
this.enterOuterAlt(_localctx, 1);
|
|
57970
58342
|
{
|
|
57971
|
-
this.state =
|
|
58343
|
+
this.state = 901;
|
|
57972
58344
|
this.match(ForgeParser.SEXPR_TOK);
|
|
57973
58345
|
}
|
|
57974
58346
|
}
|
|
@@ -57995,18 +58367,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57995
58367
|
try {
|
|
57996
58368
|
this.enterOuterAlt(_localctx, 1);
|
|
57997
58369
|
{
|
|
57998
|
-
this.state = 902;
|
|
57999
|
-
this.match(ForgeParser.INST_TOK);
|
|
58000
58370
|
this.state = 903;
|
|
58001
|
-
this.
|
|
58371
|
+
this.match(ForgeParser.INST_TOK);
|
|
58002
58372
|
this.state = 904;
|
|
58373
|
+
this.name();
|
|
58374
|
+
this.state = 905;
|
|
58003
58375
|
this.bounds();
|
|
58004
|
-
this.state =
|
|
58376
|
+
this.state = 907;
|
|
58005
58377
|
this._errHandler.sync(this);
|
|
58006
58378
|
_la = this._input.LA(1);
|
|
58007
58379
|
if (_la === ForgeParser.FOR_TOK) {
|
|
58008
58380
|
{
|
|
58009
|
-
this.state =
|
|
58381
|
+
this.state = 906;
|
|
58010
58382
|
this.scope();
|
|
58011
58383
|
}
|
|
58012
58384
|
}
|
|
@@ -58034,7 +58406,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58034
58406
|
try {
|
|
58035
58407
|
this.enterOuterAlt(_localctx, 1);
|
|
58036
58408
|
{
|
|
58037
|
-
this.state =
|
|
58409
|
+
this.state = 909;
|
|
58038
58410
|
this.arrowDecl();
|
|
58039
58411
|
}
|
|
58040
58412
|
}
|
|
@@ -58060,9 +58432,9 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58060
58432
|
try {
|
|
58061
58433
|
this.enterOuterAlt(_localctx, 1);
|
|
58062
58434
|
{
|
|
58063
|
-
this.state = 910;
|
|
58064
|
-
this.match(ForgeParser.EVAL_TOK);
|
|
58065
58435
|
this.state = 911;
|
|
58436
|
+
this.match(ForgeParser.EVAL_TOK);
|
|
58437
|
+
this.state = 912;
|
|
58066
58438
|
this.expr();
|
|
58067
58439
|
}
|
|
58068
58440
|
}
|
|
@@ -58088,17 +58460,17 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58088
58460
|
try {
|
|
58089
58461
|
this.enterOuterAlt(_localctx, 1);
|
|
58090
58462
|
{
|
|
58091
|
-
this.state = 913;
|
|
58092
|
-
this.match(ForgeParser.EXAMPLE_TOK);
|
|
58093
58463
|
this.state = 914;
|
|
58094
|
-
this.
|
|
58464
|
+
this.match(ForgeParser.EXAMPLE_TOK);
|
|
58095
58465
|
this.state = 915;
|
|
58096
|
-
this.
|
|
58466
|
+
this.name();
|
|
58097
58467
|
this.state = 916;
|
|
58098
|
-
this.
|
|
58468
|
+
this.match(ForgeParser.IS_TOK);
|
|
58099
58469
|
this.state = 917;
|
|
58100
|
-
this.
|
|
58470
|
+
this.expr();
|
|
58101
58471
|
this.state = 918;
|
|
58472
|
+
this.match(ForgeParser.FOR_TOK);
|
|
58473
|
+
this.state = 919;
|
|
58102
58474
|
this.bounds();
|
|
58103
58475
|
}
|
|
58104
58476
|
}
|
|
@@ -58124,15 +58496,15 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58124
58496
|
try {
|
|
58125
58497
|
this.enterOuterAlt(_localctx, 1);
|
|
58126
58498
|
{
|
|
58127
|
-
this.state = 920;
|
|
58128
|
-
this.name();
|
|
58129
58499
|
this.state = 921;
|
|
58130
|
-
this.
|
|
58500
|
+
this.name();
|
|
58131
58501
|
this.state = 922;
|
|
58132
|
-
this.
|
|
58502
|
+
this.match(ForgeParser.COLON_TOK);
|
|
58133
58503
|
this.state = 923;
|
|
58134
|
-
this.
|
|
58504
|
+
this.arrowExpr();
|
|
58135
58505
|
this.state = 924;
|
|
58506
|
+
this.match(ForgeParser.EQ_TOK);
|
|
58507
|
+
this.state = 925;
|
|
58136
58508
|
this.expr();
|
|
58137
58509
|
}
|
|
58138
58510
|
}
|
|
@@ -58156,24 +58528,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58156
58528
|
let _localctx = new NumberListContext(this._ctx, this.state);
|
|
58157
58529
|
this.enterRule(_localctx, 152, ForgeParser.RULE_numberList);
|
|
58158
58530
|
try {
|
|
58159
|
-
this.state =
|
|
58531
|
+
this.state = 932;
|
|
58160
58532
|
this._errHandler.sync(this);
|
|
58161
58533
|
switch (this.interpreter.adaptivePredict(this._input, 105, this._ctx)) {
|
|
58162
58534
|
case 1:
|
|
58163
58535
|
this.enterOuterAlt(_localctx, 1);
|
|
58164
58536
|
{
|
|
58165
|
-
this.state =
|
|
58537
|
+
this.state = 927;
|
|
58166
58538
|
this.number();
|
|
58167
58539
|
}
|
|
58168
58540
|
break;
|
|
58169
58541
|
case 2:
|
|
58170
58542
|
this.enterOuterAlt(_localctx, 2);
|
|
58171
58543
|
{
|
|
58172
|
-
this.state = 927;
|
|
58173
|
-
this.number();
|
|
58174
58544
|
this.state = 928;
|
|
58175
|
-
this.
|
|
58545
|
+
this.number();
|
|
58176
58546
|
this.state = 929;
|
|
58547
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
58548
|
+
this.state = 930;
|
|
58177
58549
|
this.numberList();
|
|
58178
58550
|
}
|
|
58179
58551
|
break;
|
|
@@ -58201,7 +58573,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58201
58573
|
try {
|
|
58202
58574
|
this.enterOuterAlt(_localctx, 1);
|
|
58203
58575
|
{
|
|
58204
|
-
this.state =
|
|
58576
|
+
this.state = 934;
|
|
58205
58577
|
this.match(ForgeParser.NUM_CONST_TOK);
|
|
58206
58578
|
}
|
|
58207
58579
|
}
|
|
@@ -58226,29 +58598,29 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58226
58598
|
this.enterRule(_localctx, 156, ForgeParser.RULE_bounds);
|
|
58227
58599
|
let _la;
|
|
58228
58600
|
try {
|
|
58229
|
-
this.state =
|
|
58601
|
+
this.state = 948;
|
|
58230
58602
|
this._errHandler.sync(this);
|
|
58231
58603
|
switch (this._input.LA(1)) {
|
|
58232
58604
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
58233
58605
|
this.enterOuterAlt(_localctx, 1);
|
|
58234
58606
|
{
|
|
58235
|
-
this.state =
|
|
58607
|
+
this.state = 936;
|
|
58236
58608
|
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
58237
|
-
this.state =
|
|
58609
|
+
this.state = 940;
|
|
58238
58610
|
this._errHandler.sync(this);
|
|
58239
58611
|
_la = this._input.LA(1);
|
|
58240
58612
|
while (_la === ForgeParser.MINUS_TOK || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & ((1 << (ForgeParser.CARD_TOK - 74)) | (1 << (ForgeParser.BACKQUOTE_TOK - 74)) | (1 << (ForgeParser.THIS_TOK - 74)) | (1 << (ForgeParser.NO_TOK - 74)) | (1 << (ForgeParser.SUM_TOK - 74)) | (1 << (ForgeParser.INT_TOK - 74)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (ForgeParser.NUM_CONST_TOK - 107)) | (1 << (ForgeParser.QUOTED_IDENTIFIER_TOK - 107)) | (1 << (ForgeParser.IDENTIFIER_TOK - 107)))) !== 0)) {
|
|
58241
58613
|
{
|
|
58242
58614
|
{
|
|
58243
|
-
this.state =
|
|
58615
|
+
this.state = 937;
|
|
58244
58616
|
this.bound();
|
|
58245
58617
|
}
|
|
58246
58618
|
}
|
|
58247
|
-
this.state =
|
|
58619
|
+
this.state = 942;
|
|
58248
58620
|
this._errHandler.sync(this);
|
|
58249
58621
|
_la = this._input.LA(1);
|
|
58250
58622
|
}
|
|
58251
|
-
this.state =
|
|
58623
|
+
this.state = 943;
|
|
58252
58624
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
58253
58625
|
}
|
|
58254
58626
|
break;
|
|
@@ -58260,16 +58632,16 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58260
58632
|
case ForgeParser.IDENTIFIER_TOK:
|
|
58261
58633
|
this.enterOuterAlt(_localctx, 2);
|
|
58262
58634
|
{
|
|
58263
|
-
this.state =
|
|
58635
|
+
this.state = 945;
|
|
58264
58636
|
this._errHandler.sync(this);
|
|
58265
58637
|
_la = this._input.LA(1);
|
|
58266
58638
|
if (_la === ForgeParser.EXACTLY_TOK) {
|
|
58267
58639
|
{
|
|
58268
|
-
this.state =
|
|
58640
|
+
this.state = 944;
|
|
58269
58641
|
this.match(ForgeParser.EXACTLY_TOK);
|
|
58270
58642
|
}
|
|
58271
58643
|
}
|
|
58272
|
-
this.state =
|
|
58644
|
+
this.state = 947;
|
|
58273
58645
|
this.qualName();
|
|
58274
58646
|
}
|
|
58275
58647
|
break;
|
|
@@ -58297,31 +58669,31 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58297
58669
|
let _localctx = new AtomNameOrNumberContext(this._ctx, this.state);
|
|
58298
58670
|
this.enterRule(_localctx, 158, ForgeParser.RULE_atomNameOrNumber);
|
|
58299
58671
|
try {
|
|
58300
|
-
this.state =
|
|
58672
|
+
this.state = 955;
|
|
58301
58673
|
this._errHandler.sync(this);
|
|
58302
58674
|
switch (this._input.LA(1)) {
|
|
58303
58675
|
case ForgeParser.BACKQUOTE_TOK:
|
|
58304
58676
|
this.enterOuterAlt(_localctx, 1);
|
|
58305
58677
|
{
|
|
58306
|
-
this.state = 949;
|
|
58307
|
-
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
58308
58678
|
this.state = 950;
|
|
58679
|
+
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
58680
|
+
this.state = 951;
|
|
58309
58681
|
this.name();
|
|
58310
58682
|
}
|
|
58311
58683
|
break;
|
|
58312
58684
|
case ForgeParser.NUM_CONST_TOK:
|
|
58313
58685
|
this.enterOuterAlt(_localctx, 2);
|
|
58314
58686
|
{
|
|
58315
|
-
this.state =
|
|
58687
|
+
this.state = 952;
|
|
58316
58688
|
this.number();
|
|
58317
58689
|
}
|
|
58318
58690
|
break;
|
|
58319
58691
|
case ForgeParser.MINUS_TOK:
|
|
58320
58692
|
this.enterOuterAlt(_localctx, 3);
|
|
58321
58693
|
{
|
|
58322
|
-
this.state = 952;
|
|
58323
|
-
this.match(ForgeParser.MINUS_TOK);
|
|
58324
58694
|
this.state = 953;
|
|
58695
|
+
this.match(ForgeParser.MINUS_TOK);
|
|
58696
|
+
this.state = 954;
|
|
58325
58697
|
this.number();
|
|
58326
58698
|
}
|
|
58327
58699
|
break;
|
|
@@ -58349,33 +58721,33 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58349
58721
|
let _localctx = new BoundContext(this._ctx, this.state);
|
|
58350
58722
|
this.enterRule(_localctx, 160, ForgeParser.RULE_bound);
|
|
58351
58723
|
try {
|
|
58352
|
-
this.state =
|
|
58724
|
+
this.state = 964;
|
|
58353
58725
|
this._errHandler.sync(this);
|
|
58354
58726
|
switch (this.interpreter.adaptivePredict(this._input, 110, this._ctx)) {
|
|
58355
58727
|
case 1:
|
|
58356
58728
|
this.enterOuterAlt(_localctx, 1);
|
|
58357
58729
|
{
|
|
58358
|
-
this.state = 956;
|
|
58359
|
-
this.boundLHS();
|
|
58360
58730
|
this.state = 957;
|
|
58361
|
-
this.
|
|
58731
|
+
this.boundLHS();
|
|
58362
58732
|
this.state = 958;
|
|
58733
|
+
this.compareOp();
|
|
58734
|
+
this.state = 959;
|
|
58363
58735
|
this.bindRHSUnion(0);
|
|
58364
58736
|
}
|
|
58365
58737
|
break;
|
|
58366
58738
|
case 2:
|
|
58367
58739
|
this.enterOuterAlt(_localctx, 2);
|
|
58368
58740
|
{
|
|
58369
|
-
this.state = 960;
|
|
58370
|
-
this.match(ForgeParser.NO_TOK);
|
|
58371
58741
|
this.state = 961;
|
|
58742
|
+
this.match(ForgeParser.NO_TOK);
|
|
58743
|
+
this.state = 962;
|
|
58372
58744
|
this.boundLHS();
|
|
58373
58745
|
}
|
|
58374
58746
|
break;
|
|
58375
58747
|
case 3:
|
|
58376
58748
|
this.enterOuterAlt(_localctx, 3);
|
|
58377
58749
|
{
|
|
58378
|
-
this.state =
|
|
58750
|
+
this.state = 963;
|
|
58379
58751
|
this.qualName();
|
|
58380
58752
|
}
|
|
58381
58753
|
break;
|
|
@@ -58402,15 +58774,15 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58402
58774
|
this.enterRule(_localctx, 162, ForgeParser.RULE_boundLHS);
|
|
58403
58775
|
let _la;
|
|
58404
58776
|
try {
|
|
58405
|
-
this.state =
|
|
58777
|
+
this.state = 976;
|
|
58406
58778
|
this._errHandler.sync(this);
|
|
58407
58779
|
switch (this._input.LA(1)) {
|
|
58408
58780
|
case ForgeParser.CARD_TOK:
|
|
58409
58781
|
this.enterOuterAlt(_localctx, 1);
|
|
58410
58782
|
{
|
|
58411
|
-
this.state = 965;
|
|
58412
|
-
this.match(ForgeParser.CARD_TOK);
|
|
58413
58783
|
this.state = 966;
|
|
58784
|
+
this.match(ForgeParser.CARD_TOK);
|
|
58785
|
+
this.state = 967;
|
|
58414
58786
|
this.qualName();
|
|
58415
58787
|
}
|
|
58416
58788
|
break;
|
|
@@ -58421,7 +58793,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58421
58793
|
case ForgeParser.IDENTIFIER_TOK:
|
|
58422
58794
|
this.enterOuterAlt(_localctx, 2);
|
|
58423
58795
|
{
|
|
58424
|
-
this.state =
|
|
58796
|
+
this.state = 968;
|
|
58425
58797
|
this.qualName();
|
|
58426
58798
|
}
|
|
58427
58799
|
break;
|
|
@@ -58430,21 +58802,21 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58430
58802
|
case ForgeParser.NUM_CONST_TOK:
|
|
58431
58803
|
this.enterOuterAlt(_localctx, 3);
|
|
58432
58804
|
{
|
|
58433
|
-
this.state =
|
|
58805
|
+
this.state = 969;
|
|
58434
58806
|
this.atomNameOrNumber();
|
|
58435
|
-
this.state =
|
|
58807
|
+
this.state = 972;
|
|
58436
58808
|
this._errHandler.sync(this);
|
|
58437
58809
|
_la = this._input.LA(1);
|
|
58438
58810
|
do {
|
|
58439
58811
|
{
|
|
58440
58812
|
{
|
|
58441
|
-
this.state = 969;
|
|
58442
|
-
this.match(ForgeParser.DOT_TOK);
|
|
58443
58813
|
this.state = 970;
|
|
58814
|
+
this.match(ForgeParser.DOT_TOK);
|
|
58815
|
+
this.state = 971;
|
|
58444
58816
|
this.qualName();
|
|
58445
58817
|
}
|
|
58446
58818
|
}
|
|
58447
|
-
this.state =
|
|
58819
|
+
this.state = 974;
|
|
58448
58820
|
this._errHandler.sync(this);
|
|
58449
58821
|
_la = this._input.LA(1);
|
|
58450
58822
|
} while (_la === ForgeParser.DOT_TOK);
|
|
@@ -58484,28 +58856,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58484
58856
|
let _alt;
|
|
58485
58857
|
this.enterOuterAlt(_localctx, 1);
|
|
58486
58858
|
{
|
|
58487
|
-
this.state =
|
|
58859
|
+
this.state = 984;
|
|
58488
58860
|
this._errHandler.sync(this);
|
|
58489
58861
|
switch (this.interpreter.adaptivePredict(this._input, 113, this._ctx)) {
|
|
58490
58862
|
case 1:
|
|
58491
58863
|
{
|
|
58492
|
-
this.state =
|
|
58864
|
+
this.state = 979;
|
|
58493
58865
|
this.bindRHSProduct(0);
|
|
58494
58866
|
}
|
|
58495
58867
|
break;
|
|
58496
58868
|
case 2:
|
|
58497
58869
|
{
|
|
58498
|
-
this.state = 979;
|
|
58499
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58500
58870
|
this.state = 980;
|
|
58501
|
-
this.
|
|
58871
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58502
58872
|
this.state = 981;
|
|
58873
|
+
this.bindRHSUnion(0);
|
|
58874
|
+
this.state = 982;
|
|
58503
58875
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
58504
58876
|
}
|
|
58505
58877
|
break;
|
|
58506
58878
|
}
|
|
58507
58879
|
this._ctx._stop = this._input.tryLT(-1);
|
|
58508
|
-
this.state =
|
|
58880
|
+
this.state = 991;
|
|
58509
58881
|
this._errHandler.sync(this);
|
|
58510
58882
|
_alt = this.interpreter.adaptivePredict(this._input, 114, this._ctx);
|
|
58511
58883
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -58518,18 +58890,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58518
58890
|
{
|
|
58519
58891
|
_localctx = new BindRHSUnionContext(_parentctx, _parentState);
|
|
58520
58892
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_bindRHSUnion);
|
|
58521
|
-
this.state =
|
|
58893
|
+
this.state = 986;
|
|
58522
58894
|
if (!(this.precpred(this._ctx, 2))) {
|
|
58523
58895
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
|
|
58524
58896
|
}
|
|
58525
|
-
this.state = 986;
|
|
58526
|
-
this.match(ForgeParser.PLUS_TOK);
|
|
58527
58897
|
this.state = 987;
|
|
58898
|
+
this.match(ForgeParser.PLUS_TOK);
|
|
58899
|
+
this.state = 988;
|
|
58528
58900
|
this.bindRHSProduct(0);
|
|
58529
58901
|
}
|
|
58530
58902
|
}
|
|
58531
58903
|
}
|
|
58532
|
-
this.state =
|
|
58904
|
+
this.state = 993;
|
|
58533
58905
|
this._errHandler.sync(this);
|
|
58534
58906
|
_alt = this.interpreter.adaptivePredict(this._input, 114, this._ctx);
|
|
58535
58907
|
}
|
|
@@ -58566,28 +58938,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58566
58938
|
let _alt;
|
|
58567
58939
|
this.enterOuterAlt(_localctx, 1);
|
|
58568
58940
|
{
|
|
58569
|
-
this.state =
|
|
58941
|
+
this.state = 1000;
|
|
58570
58942
|
this._errHandler.sync(this);
|
|
58571
58943
|
switch (this.interpreter.adaptivePredict(this._input, 115, this._ctx)) {
|
|
58572
58944
|
case 1:
|
|
58573
58945
|
{
|
|
58574
|
-
this.state = 994;
|
|
58575
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58576
58946
|
this.state = 995;
|
|
58577
|
-
this.
|
|
58947
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58578
58948
|
this.state = 996;
|
|
58949
|
+
this.bindRHSProduct(0);
|
|
58950
|
+
this.state = 997;
|
|
58579
58951
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
58580
58952
|
}
|
|
58581
58953
|
break;
|
|
58582
58954
|
case 2:
|
|
58583
58955
|
{
|
|
58584
|
-
this.state =
|
|
58956
|
+
this.state = 999;
|
|
58585
58957
|
this.bindRHSProductBase();
|
|
58586
58958
|
}
|
|
58587
58959
|
break;
|
|
58588
58960
|
}
|
|
58589
58961
|
this._ctx._stop = this._input.tryLT(-1);
|
|
58590
|
-
this.state =
|
|
58962
|
+
this.state = 1007;
|
|
58591
58963
|
this._errHandler.sync(this);
|
|
58592
58964
|
_alt = this.interpreter.adaptivePredict(this._input, 116, this._ctx);
|
|
58593
58965
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -58600,11 +58972,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58600
58972
|
{
|
|
58601
58973
|
_localctx = new BindRHSProductContext(_parentctx, _parentState);
|
|
58602
58974
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_bindRHSProduct);
|
|
58603
|
-
this.state =
|
|
58975
|
+
this.state = 1002;
|
|
58604
58976
|
if (!(this.precpred(this._ctx, 2))) {
|
|
58605
58977
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
|
|
58606
58978
|
}
|
|
58607
|
-
this.state =
|
|
58979
|
+
this.state = 1003;
|
|
58608
58980
|
_la = this._input.LA(1);
|
|
58609
58981
|
if (!(_la === ForgeParser.ARROW_TOK || _la === ForgeParser.COMMA_TOK)) {
|
|
58610
58982
|
this._errHandler.recoverInline(this);
|
|
@@ -58616,12 +58988,12 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58616
58988
|
this._errHandler.reportMatch(this);
|
|
58617
58989
|
this.consume();
|
|
58618
58990
|
}
|
|
58619
|
-
this.state =
|
|
58991
|
+
this.state = 1004;
|
|
58620
58992
|
this.bindRHSProductBase();
|
|
58621
58993
|
}
|
|
58622
58994
|
}
|
|
58623
58995
|
}
|
|
58624
|
-
this.state =
|
|
58996
|
+
this.state = 1009;
|
|
58625
58997
|
this._errHandler.sync(this);
|
|
58626
58998
|
_alt = this.interpreter.adaptivePredict(this._input, 116, this._ctx);
|
|
58627
58999
|
}
|
|
@@ -58647,7 +59019,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58647
59019
|
let _localctx = new BindRHSProductBaseContext(this._ctx, this.state);
|
|
58648
59020
|
this.enterRule(_localctx, 168, ForgeParser.RULE_bindRHSProductBase);
|
|
58649
59021
|
try {
|
|
58650
|
-
this.state =
|
|
59022
|
+
this.state = 1016;
|
|
58651
59023
|
this._errHandler.sync(this);
|
|
58652
59024
|
switch (this._input.LA(1)) {
|
|
58653
59025
|
case ForgeParser.MINUS_TOK:
|
|
@@ -58655,7 +59027,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58655
59027
|
case ForgeParser.NUM_CONST_TOK:
|
|
58656
59028
|
this.enterOuterAlt(_localctx, 1);
|
|
58657
59029
|
{
|
|
58658
|
-
this.state =
|
|
59030
|
+
this.state = 1010;
|
|
58659
59031
|
this.atomNameOrNumber();
|
|
58660
59032
|
}
|
|
58661
59033
|
break;
|
|
@@ -58666,18 +59038,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58666
59038
|
case ForgeParser.IDENTIFIER_TOK:
|
|
58667
59039
|
this.enterOuterAlt(_localctx, 2);
|
|
58668
59040
|
{
|
|
58669
|
-
this.state =
|
|
59041
|
+
this.state = 1011;
|
|
58670
59042
|
this.qualName();
|
|
58671
59043
|
}
|
|
58672
59044
|
break;
|
|
58673
59045
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
58674
59046
|
this.enterOuterAlt(_localctx, 3);
|
|
58675
59047
|
{
|
|
58676
|
-
this.state = 1011;
|
|
58677
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58678
59048
|
this.state = 1012;
|
|
58679
|
-
this.
|
|
59049
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58680
59050
|
this.state = 1013;
|
|
59051
|
+
this.bindRHSUnion(0);
|
|
59052
|
+
this.state = 1014;
|
|
58681
59053
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
58682
59054
|
}
|
|
58683
59055
|
break;
|
|
@@ -58852,7 +59224,7 @@ ForgeParser.OPEN_TOK = 1;
|
|
|
58852
59224
|
ForgeParser.LEFT_SQUARE_TOK = 2;
|
|
58853
59225
|
ForgeParser.RIGHT_SQUARE_TOK = 3;
|
|
58854
59226
|
ForgeParser.AS_TOK = 4;
|
|
58855
|
-
ForgeParser.
|
|
59227
|
+
ForgeParser.STRING_TOK = 5;
|
|
58856
59228
|
ForgeParser.VAR_TOK = 6;
|
|
58857
59229
|
ForgeParser.ABSTRACT_TOK = 7;
|
|
58858
59230
|
ForgeParser.SIG_TOK = 8;
|
|
@@ -59083,7 +59455,7 @@ ForgeParser._LITERAL_NAMES = [
|
|
|
59083
59455
|
];
|
|
59084
59456
|
ForgeParser._SYMBOLIC_NAMES = [
|
|
59085
59457
|
undefined, "OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK",
|
|
59086
|
-
"
|
|
59458
|
+
"STRING_TOK", "VAR_TOK", "ABSTRACT_TOK", "SIG_TOK", "LEFT_CURLY_TOK",
|
|
59087
59459
|
"RIGHT_CURLY_TOK", "EXTENDS_TOK", "IN_TOK", "PLUS_TOK", "LONE_TOK", "SOME_TOK",
|
|
59088
59460
|
"ONE_TOK", "TWO_TOK", "SET_TOK", "FUNC_TOK", "PFUNC_TOK", "DISJ_TOK",
|
|
59089
59461
|
"COLON_TOK", "WHEAT_TOK", "PRED_TOK", "DOT_TOK", "FUN_TOK", "LEFT_PAREN_TOK",
|
|
@@ -59105,7 +59477,7 @@ ForgeParser._SYMBOLIC_NAMES = [
|
|
|
59105
59477
|
];
|
|
59106
59478
|
ForgeParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(ForgeParser._LITERAL_NAMES, ForgeParser._SYMBOLIC_NAMES, []);
|
|
59107
59479
|
ForgeParser._serializedATNSegments = 2;
|
|
59108
|
-
ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03t\
|
|
59480
|
+
ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03t\u03FD\x04\x02" +
|
|
59109
59481
|
"\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" +
|
|
59110
59482
|
"\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" +
|
|
59111
59483
|
"\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" +
|
|
@@ -59148,57 +59520,57 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59148
59520
|
"\n\x16\f\x16\x0E\x16\u0198\v\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x17" +
|
|
59149
59521
|
"\x03\x17\x05\x17\u01A0\n\x17\x03\x17\x03\x17\x05\x17\u01A4\n\x17\x03\x18" +
|
|
59150
59522
|
"\x05\x18\u01A7\n\x18\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03" +
|
|
59151
|
-
"\x19\x05\x19\u01B0\n\x19\x03\x19\x05\x19\
|
|
59152
|
-
"\x1A\x03\x1A\x03\x1A\x05\x1A\
|
|
59153
|
-
"\n\x1A\x03\x1B\x03\x1B\x03\x1B\x05\x1B\
|
|
59154
|
-
"\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B
|
|
59155
|
-
"\x1B\
|
|
59156
|
-
"\n\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x05
|
|
59157
|
-
"\
|
|
59158
|
-
"\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x05\x1D\
|
|
59159
|
-
"\x1D\
|
|
59160
|
-
"\
|
|
59161
|
-
"\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F\
|
|
59162
|
-
"\n \x03 \x03 \x03 \x05 \
|
|
59163
|
-
"#\x03#\x07#\
|
|
59164
|
-
"\n$\x03%\x03%\x03%\x03%\x05%\
|
|
59165
|
-
"&\x03&\x07&\
|
|
59166
|
-
"\'\x03\'\x03\'\x03\'\x03\'\x05\'\
|
|
59167
|
-
"\x03(\x03)\x03)\x03)\x03)\x03)\x05)\
|
|
59168
|
-
"\x05*\
|
|
59169
|
-
",\x03,\x05,\
|
|
59170
|
-
"\x03.\x03.\x03.\x05.\
|
|
59171
|
-
"
|
|
59172
|
-
"1\x031\x031\x031\x031\x051\
|
|
59173
|
-
"\x032\x032\x032\x032\x032\x072\
|
|
59174
|
-
"3\x033\x033\x033\x073\
|
|
59175
|
-
"4\x034\x074\
|
|
59176
|
-
"5\
|
|
59177
|
-
"
|
|
59178
|
-
"7\x037\x037\x037\x037\x037\x037\x057\
|
|
59179
|
-
"8\x038\x038\x038\x038\x038\x038\x038\x038\x038\x038\x058\
|
|
59180
|
-
"
|
|
59181
|
-
"
|
|
59182
|
-
"
|
|
59183
|
-
"=\x03=\x03=\x03=\x03=\x07=\
|
|
59184
|
-
">\x03>\x03>\x07>\
|
|
59185
|
-
"?\x03?\x07?\
|
|
59186
|
-
"@\
|
|
59187
|
-
"A\
|
|
59188
|
-
"\nB\x03B\x03B\x03B\x07B\
|
|
59189
|
-
"\x03C\x07C\
|
|
59190
|
-
"
|
|
59191
|
-
"E\x03E\x03E\x03E\x05E\
|
|
59192
|
-
"\x03G\x03G\x03H\x03H\x03I\x03I\x03I\x03I\x05I\
|
|
59193
|
-
"\x03K\x03K\x03L\x03L\x03L\x03L\x03L\x03L\x03L\x03M\x03M\x03M\x03M\x03" +
|
|
59194
|
-
"M\x03M\x03N\x03N\x03N\x03N\x03N\x05N\
|
|
59195
|
-
"P\
|
|
59196
|
-
"P\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\
|
|
59197
|
-
"R\x03R\x05R\
|
|
59198
|
-
"S\
|
|
59199
|
-
"T\x03T\x03T\x07T\
|
|
59200
|
-
"U\x05U\
|
|
59201
|
-
"V\x03V\x03V\x03V\x03V\x05V\
|
|
59523
|
+
"\x19\x05\x19\u01B0\n\x19\x03\x19\x03\x19\x05\x19\u01B4\n\x19\x03\x1A\x03" +
|
|
59524
|
+
"\x1A\x03\x1A\x03\x1A\x03\x1A\x05\x1A\u01BB\n\x1A\x03\x1A\x03\x1A\x05\x1A" +
|
|
59525
|
+
"\u01BF\n\x1A\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u01C4\n\x1B\x03\x1B\x03\x1B" +
|
|
59526
|
+
"\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B" +
|
|
59527
|
+
"\x05\x1B\u01D1\n\x1B\x03\x1B\x05\x1B\u01D4\n\x1B\x03\x1B\x03\x1B\x05\x1B" +
|
|
59528
|
+
"\u01D8\n\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x05" +
|
|
59529
|
+
"\x1C\u01E1\n\x1C\x03\x1C\x03\x1C\x05\x1C\u01E5\n\x1C\x03\x1D\x03\x1D\x03" +
|
|
59530
|
+
"\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x05\x1D\u01EE\n\x1D\x03\x1D\x03\x1D" +
|
|
59531
|
+
"\x05\x1D\u01F2\n\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x07" +
|
|
59532
|
+
"\x1E\u01FA\n\x1E\f\x1E\x0E\x1E\u01FD\v\x1E\x03\x1E\x03\x1E\x03\x1F\x03" +
|
|
59533
|
+
"\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F\u0207\n\x1F\x03 \x03 \x05" +
|
|
59534
|
+
" \u020B\n \x03 \x03 \x03 \x05 \u0210\n \x03!\x03!\x03\"\x03\"\x03\"\x03" +
|
|
59535
|
+
"\"\x03#\x03#\x07#\u021A\n#\f#\x0E#\u021D\v#\x03#\x03#\x03$\x03$\x03$\x05" +
|
|
59536
|
+
"$\u0224\n$\x03%\x03%\x03%\x03%\x05%\u022A\n%\x03&\x03&\x05&\u022E\n&\x03" +
|
|
59537
|
+
"&\x03&\x03&\x07&\u0233\n&\f&\x0E&\u0236\v&\x03&\x03&\x03&\x05&\u023B\n" +
|
|
59538
|
+
"&\x03\'\x03\'\x03\'\x03\'\x03\'\x05\'\u0242\n\'\x03\'\x05\'\u0245\n\'" +
|
|
59539
|
+
"\x03(\x03(\x03)\x03)\x03)\x03)\x03)\x05)\u024E\n)\x03*\x03*\x03*\x03*" +
|
|
59540
|
+
"\x03*\x05*\u0255\n*\x03+\x03+\x03+\x03+\x03+\x05+\u025C\n+\x03,\x03,\x03" +
|
|
59541
|
+
",\x03,\x03,\x05,\u0263\n,\x03-\x03-\x03-\x03-\x03-\x05-\u026A\n-\x03." +
|
|
59542
|
+
"\x03.\x03.\x03.\x03.\x05.\u0271\n.\x03/\x03/\x03/\x03/\x03/\x05/\u0278" +
|
|
59543
|
+
"\n/\x030\x030\x030\x030\x030\x050\u027F\n0\x031\x031\x031\x031\x031\x03" +
|
|
59544
|
+
"1\x031\x031\x031\x031\x031\x051\u028C\n1\x031\x031\x031\x051\u0291\n1" +
|
|
59545
|
+
"\x032\x032\x032\x032\x032\x032\x072\u0299\n2\f2\x0E2\u029C\v2\x033\x03" +
|
|
59546
|
+
"3\x033\x033\x033\x033\x073\u02A4\n3\f3\x0E3\u02A7\v3\x034\x034\x034\x03" +
|
|
59547
|
+
"4\x034\x034\x074\u02AF\n4\f4\x0E4\u02B2\v4\x035\x035\x035\x035\x035\x03" +
|
|
59548
|
+
"5\x055\u02BA\n5\x055\u02BC\n5\x036\x036\x036\x036\x036\x036\x076\u02C4" +
|
|
59549
|
+
"\n6\f6\x0E6\u02C7\v6\x037\x037\x037\x037\x037\x037\x037\x037\x037\x03" +
|
|
59550
|
+
"7\x037\x037\x037\x037\x037\x037\x037\x057\u02DA\n7\x038\x038\x038\x03" +
|
|
59551
|
+
"8\x038\x038\x038\x038\x038\x038\x038\x038\x038\x038\x038\x058\u02EB\n" +
|
|
59552
|
+
"8\x039\x039\x039\x039\x039\x059\u02F2\n9\x039\x039\x039\x079\u02F7\n9" +
|
|
59553
|
+
"\f9\x0E9\u02FA\v9\x03:\x03:\x03:\x05:\u02FF\n:\x03;\x03;\x03;\x03;\x03" +
|
|
59554
|
+
";\x03;\x07;\u0307\n;\f;\x0E;\u030A\v;\x03<\x03<\x03<\x05<\u030F\n<\x03" +
|
|
59555
|
+
"=\x03=\x03=\x03=\x03=\x03=\x07=\u0317\n=\f=\x0E=\u031A\v=\x03>\x03>\x03" +
|
|
59556
|
+
">\x03>\x03>\x03>\x07>\u0322\n>\f>\x0E>\u0325\v>\x03?\x03?\x03?\x03?\x03" +
|
|
59557
|
+
"?\x03?\x03?\x07?\u032E\n?\f?\x0E?\u0331\v?\x03@\x03@\x03@\x03@\x03@\x03" +
|
|
59558
|
+
"@\x07@\u0339\n@\f@\x0E@\u033C\v@\x03A\x03A\x03A\x03A\x03A\x03A\x03A\x03" +
|
|
59559
|
+
"A\x07A\u0346\nA\fA\x0EA\u0349\vA\x03B\x03B\x03B\x03B\x03B\x03B\x03B\x05" +
|
|
59560
|
+
"B\u0352\nB\x03B\x03B\x03B\x07B\u0357\nB\fB\x0EB\u035A\vB\x03C\x03C\x03" +
|
|
59561
|
+
"C\x03C\x03C\x07C\u0361\nC\fC\x0EC\u0364\vC\x03D\x03D\x03D\x05D\u0369\n" +
|
|
59562
|
+
"D\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03E\x03" +
|
|
59563
|
+
"E\x03E\x03E\x03E\x03E\x05E\u037D\nE\x03F\x03F\x03F\x03F\x03F\x05F\u0384" +
|
|
59564
|
+
"\nF\x03G\x03G\x03H\x03H\x03I\x03I\x03I\x03I\x05I\u038E\nI\x03J\x03J\x03" +
|
|
59565
|
+
"K\x03K\x03K\x03L\x03L\x03L\x03L\x03L\x03L\x03L\x03M\x03M\x03M\x03M\x03" +
|
|
59566
|
+
"M\x03M\x03N\x03N\x03N\x03N\x03N\x05N\u03A7\nN\x03O\x03O\x03P\x03P\x07" +
|
|
59567
|
+
"P\u03AD\nP\fP\x0EP\u03B0\vP\x03P\x03P\x05P\u03B4\nP\x03P\x05P\u03B7\n" +
|
|
59568
|
+
"P\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\u03BE\nQ\x03R\x03R\x03R\x03R\x03R\x03" +
|
|
59569
|
+
"R\x03R\x05R\u03C7\nR\x03S\x03S\x03S\x03S\x03S\x03S\x06S\u03CF\nS\rS\x0E" +
|
|
59570
|
+
"S\u03D0\x05S\u03D3\nS\x03T\x03T\x03T\x03T\x03T\x03T\x05T\u03DB\nT\x03" +
|
|
59571
|
+
"T\x03T\x03T\x07T\u03E0\nT\fT\x0ET\u03E3\vT\x03U\x03U\x03U\x03U\x03U\x03" +
|
|
59572
|
+
"U\x05U\u03EB\nU\x03U\x03U\x03U\x07U\u03F0\nU\fU\x0EU\u03F3\vU\x03V\x03" +
|
|
59573
|
+
"V\x03V\x03V\x03V\x03V\x05V\u03FB\nV\x03V\x02\x02\x11bdfjptxz|~\x80\x82" +
|
|
59202
59574
|
"\x84\xA6\xA8W\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02" +
|
|
59203
59575
|
"\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02" +
|
|
59204
59576
|
"&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02" +
|
|
@@ -59210,7 +59582,7 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59210
59582
|
"\x04\x02\x10\x10\x12\x16\x05\x02\x10\x10\x12\x12\x14\x16\x03\x02 !\x03" +
|
|
59211
59583
|
"\x02*.\x04\x02*+--\x03\x0245\x03\x0267\x05\x02\x0E\x0E))af\x03\x02no\x04" +
|
|
59212
59584
|
"\x02\x10\x14gg\x04\x02\x0F\x0F((\x03\x02OP\x04\x02RT]`\x04\x02\\\\kk\x02" +
|
|
59213
|
-
"\
|
|
59585
|
+
"\u0450\x02\xAC\x03\x02\x02\x02\x04\xBB\x03\x02\x02\x02\x06\xD0\x03\x02" +
|
|
59214
59586
|
"\x02\x02\b\xE4\x03\x02\x02\x02\n\xF7\x03\x02\x02\x02\f\xFA\x03\x02\x02" +
|
|
59215
59587
|
"\x02\x0E\u011A\x03\x02\x02\x02\x10\u011C\x03\x02\x02\x02\x12\u011E\x03" +
|
|
59216
59588
|
"\x02\x02\x02\x14\u0120\x03\x02\x02\x02\x16\u0123\x03\x02\x02\x02\x18\u012D" +
|
|
@@ -59218,28 +59590,28 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59218
59590
|
"\u0140\x03\x02\x02\x02 \u015D\x03\x02\x02\x02\"\u015F\x03\x02\x02\x02" +
|
|
59219
59591
|
"$\u0168\x03\x02\x02\x02&\u0179\x03\x02\x02\x02(\u018A\x03\x02\x02\x02" +
|
|
59220
59592
|
"*\u0192\x03\x02\x02\x02,\u01A3\x03\x02\x02\x02.\u01A6\x03\x02\x02\x02" +
|
|
59221
|
-
"0\
|
|
59222
|
-
"6\
|
|
59223
|
-
"<\
|
|
59224
|
-
"B\
|
|
59225
|
-
"H\
|
|
59226
|
-
"N\
|
|
59227
|
-
"T\
|
|
59228
|
-
"Z\
|
|
59229
|
-
"`\
|
|
59230
|
-
"f\
|
|
59231
|
-
"l\
|
|
59232
|
-
"r\
|
|
59233
|
-
"x\
|
|
59234
|
-
"~\
|
|
59235
|
-
"\x02\x84\
|
|
59236
|
-
"\x02\x02\x02\x8A\
|
|
59237
|
-
"\x03\x02\x02\x02\x90\
|
|
59238
|
-
"\
|
|
59239
|
-
"\x02\x9A\
|
|
59240
|
-
"\x02\x02\x02\xA0\
|
|
59241
|
-
"\x03\x02\x02\x02\xA6\
|
|
59242
|
-
"\
|
|
59593
|
+
"0\u01B3\x03\x02\x02\x022\u01B5\x03\x02\x02\x024\u01C0\x03\x02\x02\x02" +
|
|
59594
|
+
"6\u01D9\x03\x02\x02\x028\u01E6\x03\x02\x02\x02:\u01F3\x03\x02\x02\x02" +
|
|
59595
|
+
"<\u0206\x03\x02\x02\x02>\u020A\x03\x02\x02\x02@\u0211\x03\x02\x02\x02" +
|
|
59596
|
+
"B\u0213\x03\x02\x02\x02D\u0217\x03\x02\x02\x02F\u0223\x03\x02\x02\x02" +
|
|
59597
|
+
"H\u0229\x03\x02\x02\x02J\u023A\x03\x02\x02\x02L\u023C\x03\x02\x02\x02" +
|
|
59598
|
+
"N\u0246\x03\x02\x02\x02P\u024D\x03\x02\x02\x02R\u0254\x03\x02\x02\x02" +
|
|
59599
|
+
"T\u025B\x03\x02\x02\x02V\u0262\x03\x02\x02\x02X\u0269\x03\x02\x02\x02" +
|
|
59600
|
+
"Z\u0270\x03\x02\x02\x02\\\u0277\x03\x02\x02\x02^\u027E\x03\x02\x02\x02" +
|
|
59601
|
+
"`\u0290\x03\x02\x02\x02b\u0292\x03\x02\x02\x02d\u029D\x03\x02\x02\x02" +
|
|
59602
|
+
"f\u02A8\x03\x02\x02\x02h\u02BB\x03\x02\x02\x02j\u02BD\x03\x02\x02\x02" +
|
|
59603
|
+
"l\u02D9\x03\x02\x02\x02n\u02EA\x03\x02\x02\x02p\u02EC\x03\x02\x02\x02" +
|
|
59604
|
+
"r\u02FE\x03\x02\x02\x02t\u0300\x03\x02\x02\x02v\u030E\x03\x02\x02\x02" +
|
|
59605
|
+
"x\u0310\x03\x02\x02\x02z\u031B\x03\x02\x02\x02|\u0326\x03\x02\x02\x02" +
|
|
59606
|
+
"~\u0332\x03\x02\x02\x02\x80\u033D\x03\x02\x02\x02\x82\u0351\x03\x02\x02" +
|
|
59607
|
+
"\x02\x84\u035B\x03\x02\x02\x02\x86\u0368\x03\x02\x02\x02\x88\u037C\x03" +
|
|
59608
|
+
"\x02\x02\x02\x8A\u0383\x03\x02\x02\x02\x8C\u0385\x03\x02\x02\x02\x8E\u0387" +
|
|
59609
|
+
"\x03\x02\x02\x02\x90\u0389\x03\x02\x02\x02\x92\u038F\x03\x02\x02\x02\x94" +
|
|
59610
|
+
"\u0391\x03\x02\x02\x02\x96\u0394\x03\x02\x02\x02\x98\u039B\x03\x02\x02" +
|
|
59611
|
+
"\x02\x9A\u03A6\x03\x02\x02\x02\x9C\u03A8\x03\x02\x02\x02\x9E\u03B6\x03" +
|
|
59612
|
+
"\x02\x02\x02\xA0\u03BD\x03\x02\x02\x02\xA2\u03C6\x03\x02\x02\x02\xA4\u03D2" +
|
|
59613
|
+
"\x03\x02\x02\x02\xA6\u03DA\x03\x02\x02\x02\xA8\u03EA\x03\x02\x02\x02\xAA" +
|
|
59614
|
+
"\u03FA\x03\x02\x02\x02\xAC\xAE\x07\x1A\x02\x02\xAD\xAF\x05\x1C\x0F\x02" +
|
|
59243
59615
|
"\xAE\xAD\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB3\x03\x02\x02\x02" +
|
|
59244
59616
|
"\xB0\xB1\x05J&\x02\xB1\xB2\x07\x1B\x02\x02\xB2\xB4\x03\x02\x02\x02\xB3" +
|
|
59245
59617
|
"\xB0\x03\x02\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5" +
|
|
@@ -59351,272 +59723,273 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59351
59723
|
"\x05\\/\x02\u01A3\u019B\x03\x02\x02\x02\u01A3\u01A1\x03\x02\x02\x02\u01A4" +
|
|
59352
59724
|
"-\x03\x02\x02\x02\u01A5\u01A7\x07$\x02\x02\u01A6\u01A5\x03\x02\x02\x02" +
|
|
59353
59725
|
"\u01A6\u01A7\x03\x02\x02\x02\u01A7\u01A8\x03\x02\x02\x02\u01A8\u01A9\x05" +
|
|
59354
|
-
"\x9CO\x02\u01A9\u01AA\x05J&\x02\u01AA/\x03\x02\x02\x02\u01AB\
|
|
59355
|
-
"%\x02\x02\u01AC\
|
|
59726
|
+
"\x9CO\x02\u01A9\u01AA\x05J&\x02\u01AA/\x03\x02\x02\x02\u01AB\u01B4\x07" +
|
|
59727
|
+
"%\x02\x02\u01AC\u01B4\x07&\x02\x02\u01AD\u01B4\x07\'\x02\x02\u01AE\u01B0" +
|
|
59356
59728
|
"\x07(\x02\x02\u01AF\u01AE\x03\x02\x02\x02\u01AF\u01B0\x03\x02\x02\x02" +
|
|
59357
|
-
"\u01B0\u01B1\x03\x02\x02\x02\u01B1\
|
|
59358
|
-
"\
|
|
59359
|
-
"\
|
|
59360
|
-
"\x02\
|
|
59361
|
-
"\
|
|
59362
|
-
"\
|
|
59363
|
-
ForgeParser._serializedATNSegment1 = "\x02\x02\
|
|
59364
|
-
"\
|
|
59365
|
-
"\
|
|
59366
|
-
"\x02\
|
|
59367
|
-
"\x03\x02\x02\x02\u01C4\
|
|
59368
|
-
"\
|
|
59369
|
-
"\
|
|
59370
|
-
"\
|
|
59371
|
-
"\
|
|
59372
|
-
"\
|
|
59373
|
-
"\x02\
|
|
59374
|
-
"\
|
|
59375
|
-
"\
|
|
59376
|
-
"\x02\
|
|
59377
|
-
"\x02\u01DC\
|
|
59378
|
-
"\
|
|
59379
|
-
"\
|
|
59380
|
-
"\x02\u01E3\
|
|
59381
|
-
"\x02\x02\x02\u01E5\
|
|
59382
|
-
"\x07
|
|
59383
|
-
"\
|
|
59384
|
-
"\
|
|
59385
|
-
"\x02\
|
|
59386
|
-
"\
|
|
59387
|
-
"\
|
|
59388
|
-
"\
|
|
59389
|
-
"\x02\
|
|
59390
|
-
"\x03\x02\x02\x02\u01FB\
|
|
59391
|
-
"\
|
|
59392
|
-
"
|
|
59393
|
-
"
|
|
59394
|
-
"\
|
|
59395
|
-
"\
|
|
59396
|
-
"\x02\x02\x02\u0206
|
|
59397
|
-
"\
|
|
59398
|
-
"\
|
|
59399
|
-
"
|
|
59400
|
-
"\
|
|
59401
|
-
"\
|
|
59402
|
-
"\x02\x02\
|
|
59403
|
-
"
|
|
59404
|
-
"`1\x02\
|
|
59405
|
-
"\
|
|
59406
|
-
"\
|
|
59407
|
-
"\x02\x02\
|
|
59408
|
-
"
|
|
59409
|
-
"\x03\x02\x02\x02\
|
|
59410
|
-
"\
|
|
59411
|
-
"\x02\u0228\
|
|
59412
|
-
"\
|
|
59413
|
-
"\
|
|
59414
|
-
"\x02\u022D\
|
|
59415
|
-
"
|
|
59416
|
-
"\
|
|
59417
|
-
"\x02\x02\u0234\
|
|
59418
|
-
"\
|
|
59419
|
-
"\
|
|
59420
|
-
"\
|
|
59421
|
-
"
|
|
59422
|
-
"
|
|
59423
|
-
"\
|
|
59424
|
-
"\
|
|
59425
|
-
"\x02\
|
|
59426
|
-
"\
|
|
59427
|
-
"\
|
|
59428
|
-
"\
|
|
59429
|
-
"\
|
|
59430
|
-
"\
|
|
59431
|
-
"\x02\x02\
|
|
59432
|
-
"\
|
|
59433
|
-
"\
|
|
59434
|
-
"\
|
|
59435
|
-
"\
|
|
59436
|
-
"\
|
|
59437
|
-
"
|
|
59438
|
-
"\x02\
|
|
59439
|
-
"\x02\
|
|
59440
|
-
"
|
|
59441
|
-
"\
|
|
59442
|
-
"\
|
|
59443
|
-
"\x02\x02\
|
|
59444
|
-
"\
|
|
59445
|
-
"\
|
|
59446
|
-
"\
|
|
59447
|
-
"\x02\
|
|
59448
|
-
"\x02\
|
|
59449
|
-
"\
|
|
59450
|
-
"\
|
|
59451
|
-
"\
|
|
59452
|
-
"\
|
|
59453
|
-
"\
|
|
59454
|
-
"\
|
|
59455
|
-
"\
|
|
59456
|
-
"\
|
|
59457
|
-
"\
|
|
59458
|
-
"\
|
|
59459
|
-
"\x03\x02\x02\
|
|
59460
|
-
"\
|
|
59461
|
-
"\
|
|
59462
|
-
"\x02\x02\
|
|
59463
|
-
"\
|
|
59464
|
-
"\u02A4\
|
|
59465
|
-
"\x02\x02\u02A6\
|
|
59466
|
-
"\
|
|
59467
|
-
"\
|
|
59468
|
-
"\
|
|
59469
|
-
"\
|
|
59470
|
-
"\
|
|
59471
|
-
"\
|
|
59472
|
-
"\
|
|
59473
|
-
"\x02\x02\u02BA\
|
|
59474
|
-
"
|
|
59475
|
-
"\x03\x02\x02\x02\
|
|
59476
|
-
"\
|
|
59477
|
-
"\u02C4\
|
|
59478
|
-
"\x02\x02\u02C6\
|
|
59479
|
-
"\
|
|
59480
|
-
"\
|
|
59481
|
-
"\
|
|
59482
|
-
"\
|
|
59483
|
-
"\
|
|
59484
|
-
"\
|
|
59485
|
-
"\
|
|
59486
|
-
"\
|
|
59487
|
-
"\
|
|
59488
|
-
"\
|
|
59489
|
-
"\
|
|
59490
|
-
"\
|
|
59491
|
-
"\
|
|
59492
|
-
"\u02E9\
|
|
59493
|
-
"\
|
|
59494
|
-
"\
|
|
59495
|
-
"\x02\
|
|
59496
|
-
"\x02\
|
|
59497
|
-
"\
|
|
59498
|
-
"\
|
|
59499
|
-
"\
|
|
59500
|
-
"\x02\x02\x02\u02F7\
|
|
59501
|
-
"\
|
|
59502
|
-
"\
|
|
59503
|
-
"\
|
|
59504
|
-
"\
|
|
59505
|
-
"\
|
|
59506
|
-
"\
|
|
59507
|
-
"
|
|
59508
|
-
"\
|
|
59509
|
-
"\u030D\
|
|
59510
|
-
"\
|
|
59511
|
-
"\x02\x02\
|
|
59512
|
-
"\x02\x02\
|
|
59513
|
-
"\
|
|
59514
|
-
"\
|
|
59515
|
-
"\x02\
|
|
59516
|
-
"\
|
|
59517
|
-
"\
|
|
59518
|
-
"\x02\u0324\
|
|
59519
|
-
"
|
|
59520
|
-
"\
|
|
59521
|
-
"\
|
|
59522
|
-
"\
|
|
59523
|
-
"\
|
|
59524
|
-
"\x02\x02\
|
|
59525
|
-
"\
|
|
59526
|
-
"\x02\
|
|
59527
|
-
"\x03\x02\x02\x02\u033B\
|
|
59528
|
-
"\
|
|
59529
|
-
"\x02\
|
|
59530
|
-
"\
|
|
59531
|
-
"\
|
|
59532
|
-
"\x02\x02\u0347\
|
|
59533
|
-
"\
|
|
59534
|
-
"\
|
|
59535
|
-
"\
|
|
59536
|
-
"\x02\x02\u0351\
|
|
59537
|
-
"\
|
|
59538
|
-
"\
|
|
59539
|
-
"\x02\x02\x02\u0358\
|
|
59540
|
-
"\
|
|
59541
|
-
"\
|
|
59542
|
-
"\
|
|
59543
|
-
"\
|
|
59544
|
-
"\
|
|
59545
|
-
"\
|
|
59546
|
-
"\
|
|
59547
|
-
"\
|
|
59548
|
-
"\
|
|
59549
|
-
"\
|
|
59550
|
-
"\
|
|
59551
|
-
"\
|
|
59552
|
-
"
|
|
59553
|
-
"
|
|
59554
|
-
"\
|
|
59555
|
-
"\
|
|
59556
|
-
"\
|
|
59557
|
-
"\
|
|
59558
|
-
"\x02\
|
|
59559
|
-
"\
|
|
59560
|
-
"\
|
|
59561
|
-
"\
|
|
59562
|
-
"\
|
|
59563
|
-
"\
|
|
59564
|
-
"\
|
|
59565
|
-
"\
|
|
59566
|
-
"\
|
|
59567
|
-
"\
|
|
59568
|
-
"\
|
|
59569
|
-
"\
|
|
59570
|
-
"
|
|
59571
|
-
"\x02\
|
|
59572
|
-
"\
|
|
59573
|
-
"\
|
|
59574
|
-
"\
|
|
59575
|
-
"\
|
|
59576
|
-
"\x02\x02\
|
|
59577
|
-
"\
|
|
59578
|
-
"\
|
|
59579
|
-
"\
|
|
59580
|
-
"\
|
|
59581
|
-
"\
|
|
59582
|
-
"\
|
|
59583
|
-
"\
|
|
59584
|
-
"\
|
|
59585
|
-
"\
|
|
59586
|
-
"\
|
|
59587
|
-
"\
|
|
59588
|
-
"\x02\
|
|
59589
|
-
"\x02\
|
|
59590
|
-
"\u03D0\x03\x02\x02\x02\u03D0\
|
|
59591
|
-
"\
|
|
59592
|
-
"\
|
|
59593
|
-
"\
|
|
59594
|
-
"\
|
|
59595
|
-
"\x03\x02\x02\x02\u03DA\
|
|
59596
|
-
"\
|
|
59597
|
-
"\
|
|
59598
|
-
"\
|
|
59599
|
-
"\
|
|
59600
|
-
"\
|
|
59601
|
-
"\
|
|
59602
|
-
"\x02\u03EA\
|
|
59603
|
-
"\
|
|
59604
|
-
"\
|
|
59605
|
-
"\x02\x02\u03F1\
|
|
59606
|
-
"\
|
|
59607
|
-
"\
|
|
59608
|
-
"\x02\u03F9\
|
|
59609
|
-
"\x03\x02\x02\x02\u03FA\
|
|
59729
|
+
"\u01B0\u01B1\x03\x02\x02\x02\u01B1\u01B4\x05\x9CO\x02\u01B2\u01B4\x07" +
|
|
59730
|
+
"\x07\x02\x02\u01B3\u01AB\x03\x02\x02\x02\u01B3\u01AC\x03\x02\x02\x02\u01B3" +
|
|
59731
|
+
"\u01AD\x03\x02\x02\x02\u01B3\u01AF\x03\x02\x02\x02\u01B3\u01B2\x03\x02" +
|
|
59732
|
+
"\x02\x02\u01B41\x03\x02\x02\x02\u01B5\u01B6\x07\x1F\x02\x02\u01B6\u01B7" +
|
|
59733
|
+
"\x05`1\x02\u01B7\u01B8\x07)\x02\x02\u01B8\u01BA\t\x07\x02\x02\u01B9\u01BB" +
|
|
59734
|
+
"\x05,\x17\x02\u01BA\u01B9";
|
|
59735
|
+
ForgeParser._serializedATNSegment1 = "\x03\x02\x02\x02\u01BA\u01BB\x03\x02\x02\x02\u01BB\u01BE\x03\x02\x02\x02" +
|
|
59736
|
+
"\u01BC\u01BD\x07\"\x02\x02\u01BD\u01BF\x05\x9EP\x02\u01BE\u01BC\x03\x02" +
|
|
59737
|
+
"\x02\x02\u01BE\u01BF\x03\x02\x02\x02\u01BF3\x03\x02\x02\x02\u01C0\u01C1" +
|
|
59738
|
+
"\x07\x1F\x02\x02\u01C1\u01C3\x073\x02\x02\u01C2\u01C4\x07\x17\x02\x02" +
|
|
59739
|
+
"\u01C3\u01C2\x03\x02\x02\x02\u01C3\u01C4\x03\x02\x02\x02\u01C4\u01C5\x03" +
|
|
59740
|
+
"\x02\x02\x02\u01C5\u01C6\x05V,\x02\u01C6\u01C7\x072\x02\x02\u01C7\u01C8" +
|
|
59741
|
+
"\x05`1\x02\u01C8\u01C9\x07)\x02\x02\u01C9\u01CA\t\b\x02\x02\u01CA\u01CB" +
|
|
59742
|
+
"\x07\"\x02\x02\u01CB\u01D0\x05N(\x02\u01CC\u01CD\x07\x04\x02\x02\u01CD" +
|
|
59743
|
+
"\u01CE\x05^0\x02\u01CE\u01CF\x07\x05\x02\x02\u01CF\u01D1\x03\x02\x02\x02" +
|
|
59744
|
+
"\u01D0\u01CC\x03\x02\x02\x02\u01D0\u01D1\x03\x02\x02\x02\u01D1\u01D3\x03" +
|
|
59745
|
+
"\x02\x02\x02\u01D2\u01D4\x05,\x17\x02\u01D3\u01D2\x03\x02\x02\x02\u01D3" +
|
|
59746
|
+
"\u01D4\x03\x02\x02\x02\u01D4\u01D7\x03\x02\x02\x02\u01D5\u01D6\x07\"\x02" +
|
|
59747
|
+
"\x02\u01D6\u01D8\x05\x9EP\x02\u01D7\u01D5\x03\x02\x02\x02\u01D7\u01D8" +
|
|
59748
|
+
"\x03\x02\x02\x02\u01D85\x03\x02\x02\x02\u01D9\u01DA\x07\x1F\x02\x02\u01DA" +
|
|
59749
|
+
"\u01DB\x05`1\x02\u01DB\u01DC\x07)\x02\x02\u01DC\u01DD\t\b\x02\x02\u01DD" +
|
|
59750
|
+
"\u01DE\x07\"\x02\x02\u01DE\u01E0\x05N(\x02\u01DF\u01E1\x05,\x17\x02\u01E0" +
|
|
59751
|
+
"\u01DF\x03\x02\x02\x02\u01E0\u01E1\x03\x02\x02\x02\u01E1\u01E4\x03\x02" +
|
|
59752
|
+
"\x02\x02\u01E2\u01E3\x07\"\x02\x02\u01E3\u01E5\x05\x9EP\x02\u01E4\u01E2" +
|
|
59753
|
+
"\x03\x02\x02\x02\u01E4\u01E5\x03\x02\x02\x02\u01E57\x03\x02\x02\x02\u01E6" +
|
|
59754
|
+
"\u01E7\x07\x1F\x02\x02\u01E7\u01E8\x05`1\x02\u01E8\u01E9\x07)\x02\x02" +
|
|
59755
|
+
"\u01E9\u01EA\t\t\x02\x02\u01EA\u01EB\x078\x02\x02\u01EB\u01ED\x05N(\x02" +
|
|
59756
|
+
"\u01EC\u01EE\x05,\x17\x02\u01ED\u01EC\x03\x02\x02\x02\u01ED\u01EE\x03" +
|
|
59757
|
+
"\x02\x02\x02\u01EE\u01F1\x03\x02\x02\x02\u01EF\u01F0\x07\"\x02\x02\u01F0" +
|
|
59758
|
+
"\u01F2\x05\x9EP\x02\u01F1\u01EF\x03\x02\x02\x02\u01F1\u01F2\x03\x02\x02" +
|
|
59759
|
+
"\x02\u01F29\x03\x02\x02\x02\u01F3\u01F4\x07/\x02\x02\u01F4\u01F5\x071" +
|
|
59760
|
+
"\x02\x02\u01F5\u01F6\x07\"\x02\x02\u01F6\u01F7\x05N(\x02\u01F7\u01FB\x07" +
|
|
59761
|
+
"\v\x02\x02\u01F8\u01FA\x05<\x1F\x02\u01F9\u01F8\x03\x02\x02\x02\u01FA" +
|
|
59762
|
+
"\u01FD\x03\x02\x02\x02\u01FB\u01F9\x03\x02\x02\x02\u01FB\u01FC\x03\x02" +
|
|
59763
|
+
"\x02\x02\u01FC\u01FE\x03\x02\x02\x02\u01FD\u01FB\x03\x02\x02\x02\u01FE" +
|
|
59764
|
+
"\u01FF\x07\f\x02\x02\u01FF;\x03\x02\x02\x02\u0200\u0207\x05\x96L\x02\u0201" +
|
|
59765
|
+
"\u0207\x05(\x15\x02\u0202\u0207\x054\x1B\x02\u0203\u0207\x056\x1C\x02" +
|
|
59766
|
+
"\u0204\u0207\x052\x1A\x02\u0205\u0207\x058\x1D\x02\u0206\u0200\x03\x02" +
|
|
59767
|
+
"\x02\x02\u0206\u0201\x03\x02\x02\x02\u0206\u0202\x03\x02\x02\x02\u0206" +
|
|
59768
|
+
"\u0203\x03\x02\x02\x02\u0206\u0204\x03\x02\x02\x02\u0206\u0205\x03\x02" +
|
|
59769
|
+
"\x02\x02\u0207=\x03\x02\x02\x02\u0208\u020B\x05\x10\t\x02\u0209\u020B" +
|
|
59770
|
+
"\x07\x14\x02\x02\u020A\u0208\x03\x02\x02\x02\u020A\u0209\x03\x02\x02\x02" +
|
|
59771
|
+
"\u020A\u020B\x03\x02\x02\x02\u020B\u020C\x03\x02\x02\x02\u020C\u020F\x07" +
|
|
59772
|
+
"\\\x02\x02\u020D\u0210\x05\x10\t\x02\u020E\u0210\x07\x14\x02\x02\u020F" +
|
|
59773
|
+
"\u020D\x03\x02\x02\x02\u020F\u020E\x03\x02\x02\x02\u020F\u0210\x03\x02" +
|
|
59774
|
+
"\x02\x02\u0210?\x03\x02\x02\x02\u0211\u0212\t\n\x02\x02\u0212A\x03\x02" +
|
|
59775
|
+
"\x02\x02\u0213\u0214\x05N(\x02\u0214\u0215\x07a\x02\x02\u0215\u0216\x05" +
|
|
59776
|
+
"`1\x02\u0216C\x03\x02\x02\x02\u0217\u021B\x07\v\x02\x02\u0218\u021A\x05" +
|
|
59777
|
+
"`1\x02\u0219\u0218\x03\x02\x02\x02\u021A\u021D\x03\x02\x02\x02\u021B\u0219" +
|
|
59778
|
+
"\x03\x02\x02\x02\u021B\u021C\x03\x02\x02\x02\u021C\u021E\x03\x02\x02\x02" +
|
|
59779
|
+
"\u021D\u021B\x03\x02\x02\x02\u021E\u021F\x07\f\x02\x02\u021FE\x03\x02" +
|
|
59780
|
+
"\x02\x02\u0220\u0224\x05D#\x02\u0221\u0222\x072\x02\x02\u0222\u0224\x05" +
|
|
59781
|
+
"`1\x02\u0223\u0220\x03\x02\x02\x02\u0223\u0221\x03\x02\x02\x02\u0224G" +
|
|
59782
|
+
"\x03\x02\x02\x02\u0225\u022A\x073\x02\x02\u0226\u022A\x07g\x02\x02\u0227" +
|
|
59783
|
+
"\u022A\x07h\x02\x02\u0228\u022A\x05\x10\t\x02\u0229\u0225\x03\x02\x02" +
|
|
59784
|
+
"\x02\u0229\u0226\x03\x02\x02\x02\u0229\u0227\x03\x02\x02\x02\u0229\u0228" +
|
|
59785
|
+
"\x03\x02\x02\x02\u022AI\x03\x02\x02\x02\u022B\u022C\x07W\x02\x02\u022C" +
|
|
59786
|
+
"\u022E\x07l\x02\x02\u022D\u022B\x03\x02\x02\x02\u022D\u022E\x03\x02\x02" +
|
|
59787
|
+
"\x02\u022E\u0234\x03\x02\x02\x02\u022F\u0230\x05N(\x02\u0230\u0231\x07" +
|
|
59788
|
+
"l\x02\x02\u0231\u0233\x03\x02\x02\x02\u0232\u022F\x03\x02\x02\x02\u0233" +
|
|
59789
|
+
"\u0236\x03\x02\x02\x02\u0234\u0232\x03\x02\x02\x02\u0234\u0235\x03\x02" +
|
|
59790
|
+
"\x02\x02\u0235\u0237\x03\x02\x02\x02\u0236\u0234\x03\x02\x02\x02\u0237" +
|
|
59791
|
+
"\u023B\x05N(\x02\u0238\u023B\x07i\x02\x02\u0239\u023B\x07h\x02\x02\u023A" +
|
|
59792
|
+
"\u022D\x03\x02\x02\x02\u023A\u0238\x03\x02\x02\x02\u023A\u0239\x03\x02" +
|
|
59793
|
+
"\x02\x02\u023BK\x03\x02\x02\x02\u023C\u023D\x07j\x02\x02\u023D\u0244\x05" +
|
|
59794
|
+
"J&\x02\u023E\u0245\x05J&\x02\u023F\u0245\x07\x07\x02\x02\u0240\u0242\x07" +
|
|
59795
|
+
"(\x02\x02\u0241\u0240\x03\x02\x02\x02\u0241\u0242\x03\x02\x02\x02\u0242" +
|
|
59796
|
+
"\u0243\x03\x02\x02\x02\u0243\u0245\x05\x9CO\x02\u0244\u023E\x03\x02\x02" +
|
|
59797
|
+
"\x02\u0244\u023F\x03\x02\x02\x02\u0244\u0241\x03\x02\x02\x02\u0245M\x03" +
|
|
59798
|
+
"\x02\x02\x02\u0246\u0247\t\v\x02\x02\u0247O\x03\x02\x02\x02\u0248\u024E" +
|
|
59799
|
+
"\x05N(\x02\u0249\u024A\x05N(\x02\u024A\u024B\x07k\x02\x02\u024B\u024C" +
|
|
59800
|
+
"\x05P)\x02\u024C\u024E\x03\x02\x02\x02\u024D\u0248\x03\x02\x02\x02\u024D" +
|
|
59801
|
+
"\u0249\x03\x02\x02\x02\u024EQ\x03\x02\x02\x02\u024F\u0255\x05J&\x02\u0250" +
|
|
59802
|
+
"\u0251\x05J&\x02\u0251\u0252\x07k\x02\x02\u0252\u0253\x05R*\x02\u0253" +
|
|
59803
|
+
"\u0255\x03\x02\x02\x02\u0254\u024F\x03\x02\x02\x02\u0254\u0250\x03\x02" +
|
|
59804
|
+
"\x02\x02\u0255S\x03\x02\x02\x02\u0256\u025C\x05\x16\f\x02\u0257\u0258" +
|
|
59805
|
+
"\x05\x16\f\x02\u0258\u0259\x07k\x02\x02\u0259\u025A\x05T+\x02\u025A\u025C" +
|
|
59806
|
+
"\x03\x02\x02\x02\u025B\u0256\x03\x02\x02\x02\u025B\u0257\x03\x02\x02\x02" +
|
|
59807
|
+
"\u025CU\x03\x02\x02\x02\u025D\u0263\x05\x18\r\x02\u025E\u025F\x05\x18" +
|
|
59808
|
+
"\r\x02\u025F\u0260\x07k\x02\x02\u0260\u0261\x05V,\x02\u0261\u0263\x03" +
|
|
59809
|
+
"\x02\x02\x02\u0262\u025D\x03\x02\x02\x02\u0262\u025E\x03\x02\x02\x02\u0263" +
|
|
59810
|
+
"W\x03\x02\x02\x02\u0264\u026A\x05\x1A\x0E\x02\u0265\u0266\x05\x1A\x0E" +
|
|
59811
|
+
"\x02\u0266\u0267\x07k\x02\x02\u0267\u0268\x05X-\x02\u0268\u026A\x03\x02" +
|
|
59812
|
+
"\x02\x02\u0269\u0264\x03\x02\x02\x02\u0269\u0265\x03\x02\x02\x02\u026A" +
|
|
59813
|
+
"Y\x03\x02\x02\x02\u026B\u0271\x05B\"\x02\u026C\u026D\x05B\"\x02\u026D" +
|
|
59814
|
+
"\u026E\x07k\x02\x02\u026E\u026F\x05Z.\x02\u026F\u0271\x03\x02\x02\x02" +
|
|
59815
|
+
"\u0270\u026B\x03\x02\x02\x02\u0270\u026C\x03\x02\x02\x02\u0271[\x03\x02" +
|
|
59816
|
+
"\x02\x02\u0272\u0278\x05.\x18\x02\u0273\u0274\x05.\x18\x02\u0274\u0275" +
|
|
59817
|
+
"\x07k\x02\x02\u0275\u0276\x05\\/\x02\u0276\u0278\x03\x02\x02\x02\u0277" +
|
|
59818
|
+
"\u0272\x03\x02\x02\x02\u0277\u0273\x03\x02\x02\x02\u0278]\x03\x02\x02" +
|
|
59819
|
+
"\x02\u0279\u027F\x05`1\x02\u027A\u027B\x05`1\x02\u027B\u027C\x07k\x02" +
|
|
59820
|
+
"\x02\u027C\u027D\x05^0\x02\u027D\u027F\x03\x02\x02\x02\u027E\u0279\x03" +
|
|
59821
|
+
"\x02\x02\x02\u027E\u027A\x03\x02\x02\x02\u027F_\x03\x02\x02\x02\u0280" +
|
|
59822
|
+
"\u0291\x05b2\x02\u0281\u0282\x079\x02\x02\u0282\u0283\x05Z.\x02\u0283" +
|
|
59823
|
+
"\u0284\x05F$\x02\u0284\u0291\x03\x02\x02\x02\u0285\u0286\x07:\x02\x02" +
|
|
59824
|
+
"\u0286\u0287\x05Z.\x02\u0287\u0288\x05F$\x02\u0288\u0291\x03\x02\x02\x02" +
|
|
59825
|
+
"\u0289\u028B\x05H%\x02\u028A\u028C\x07\x17\x02\x02\u028B\u028A\x03\x02" +
|
|
59826
|
+
"\x02\x02\u028B\u028C\x03\x02\x02\x02\u028C\u028D\x03\x02\x02\x02\u028D" +
|
|
59827
|
+
"\u028E\x05V,\x02\u028E\u028F\x05F$\x02\u028F\u0291\x03\x02\x02\x02\u0290" +
|
|
59828
|
+
"\u0280\x03\x02\x02\x02\u0290\u0281\x03\x02\x02\x02\u0290\u0285\x03\x02" +
|
|
59829
|
+
"\x02\x02\u0290\u0289\x03\x02\x02\x02\u0291a\x03\x02\x02\x02\u0292\u0293" +
|
|
59830
|
+
"\b2\x01\x02\u0293\u0294\x05d3\x02\u0294\u029A\x03\x02\x02\x02\u0295\u0296" +
|
|
59831
|
+
"\f\x03\x02\x02\u0296\u0297\x07;\x02\x02\u0297\u0299\x05d3\x02\u0298\u0295" +
|
|
59832
|
+
"\x03\x02\x02\x02\u0299\u029C\x03\x02\x02\x02\u029A\u0298\x03\x02\x02\x02" +
|
|
59833
|
+
"\u029A\u029B\x03\x02\x02\x02\u029Bc\x03\x02\x02\x02\u029C\u029A\x03\x02" +
|
|
59834
|
+
"\x02\x02\u029D\u029E\b3\x01\x02\u029E\u029F\x05f4\x02\u029F\u02A5\x03" +
|
|
59835
|
+
"\x02\x02\x02\u02A0\u02A1\f\x03\x02\x02\u02A1\u02A2\x07<\x02\x02\u02A2" +
|
|
59836
|
+
"\u02A4\x05f4\x02\u02A3\u02A0\x03\x02\x02\x02\u02A4\u02A7\x03\x02\x02\x02" +
|
|
59837
|
+
"\u02A5\u02A3\x03\x02\x02\x02\u02A5\u02A6\x03\x02\x02\x02\u02A6e\x03\x02" +
|
|
59838
|
+
"\x02\x02\u02A7\u02A5\x03\x02\x02\x02\u02A8\u02A9\b4\x01\x02\u02A9\u02AA" +
|
|
59839
|
+
"\x05h5\x02\u02AA\u02B0\x03\x02\x02\x02\u02AB\u02AC\f\x03\x02\x02\u02AC" +
|
|
59840
|
+
"\u02AD\x07=\x02\x02\u02AD\u02AF\x05h5\x02\u02AE\u02AB\x03\x02\x02\x02" +
|
|
59841
|
+
"\u02AF\u02B2\x03\x02\x02\x02\u02B0\u02AE\x03\x02\x02\x02\u02B0\u02B1\x03" +
|
|
59842
|
+
"\x02\x02\x02\u02B1g\x03\x02\x02\x02\u02B2\u02B0\x03\x02\x02\x02\u02B3" +
|
|
59843
|
+
"\u02BC\x05j6\x02\u02B4\u02B5\x05j6\x02\u02B5\u02B6\x07>\x02\x02\u02B6" +
|
|
59844
|
+
"\u02B9\x05h5\x02\u02B7\u02B8\x07?\x02\x02\u02B8\u02BA\x05h5\x02\u02B9" +
|
|
59845
|
+
"\u02B7\x03\x02\x02\x02\u02B9\u02BA\x03\x02\x02\x02\u02BA\u02BC\x03\x02" +
|
|
59846
|
+
"\x02\x02\u02BB\u02B3\x03\x02\x02\x02\u02BB\u02B4\x03\x02\x02\x02\u02BC" +
|
|
59847
|
+
"i\x03\x02\x02\x02\u02BD\u02BE\b6\x01\x02\u02BE\u02BF\x05l7\x02\u02BF\u02C5" +
|
|
59848
|
+
"\x03\x02\x02\x02\u02C0\u02C1\f\x03\x02\x02\u02C1\u02C2\x07@\x02\x02\u02C2" +
|
|
59849
|
+
"\u02C4\x05l7\x02\u02C3\u02C0\x03\x02\x02\x02\u02C4\u02C7\x03\x02\x02\x02" +
|
|
59850
|
+
"\u02C5\u02C3\x03\x02\x02\x02\u02C5\u02C6\x03\x02\x02\x02\u02C6k\x03\x02" +
|
|
59851
|
+
"\x02\x02\u02C7\u02C5\x03\x02\x02\x02\u02C8\u02DA\x05n8\x02\u02C9\u02CA" +
|
|
59852
|
+
"\x05n8\x02\u02CA\u02CB\x07A\x02\x02\u02CB\u02CC\x05n8\x02\u02CC\u02DA" +
|
|
59853
|
+
"\x03\x02\x02\x02\u02CD\u02CE\x05n8\x02\u02CE\u02CF\x07B\x02\x02\u02CF" +
|
|
59854
|
+
"\u02D0\x05n8\x02\u02D0\u02DA\x03\x02\x02\x02\u02D1\u02D2\x05n8\x02\u02D2" +
|
|
59855
|
+
"\u02D3\x07C\x02\x02\u02D3\u02D4\x05n8\x02\u02D4\u02DA\x03\x02\x02\x02" +
|
|
59856
|
+
"\u02D5\u02D6\x05n8\x02\u02D6\u02D7\x07D\x02\x02\u02D7\u02D8\x05n8\x02" +
|
|
59857
|
+
"\u02D8\u02DA\x03\x02\x02\x02\u02D9\u02C8\x03\x02\x02\x02\u02D9\u02C9\x03" +
|
|
59858
|
+
"\x02\x02\x02\u02D9\u02CD\x03\x02\x02\x02\u02D9\u02D1\x03\x02\x02\x02\u02D9" +
|
|
59859
|
+
"\u02D5\x03\x02\x02\x02\u02DAm\x03\x02\x02\x02\u02DB\u02EB\x05p9\x02\u02DC" +
|
|
59860
|
+
"\u02DD\x07E\x02\x02\u02DD\u02EB\x05n8\x02\u02DE\u02DF\x07F\x02\x02\u02DF" +
|
|
59861
|
+
"\u02EB\x05n8\x02\u02E0\u02E1\x07G\x02\x02\u02E1\u02EB\x05n8\x02\u02E2" +
|
|
59862
|
+
"\u02E3\x07H\x02\x02\u02E3\u02EB\x05n8\x02\u02E4\u02E5\x07I\x02\x02\u02E5" +
|
|
59863
|
+
"\u02EB\x05n8\x02\u02E6\u02E7\x07J\x02\x02\u02E7\u02EB\x05n8\x02\u02E8" +
|
|
59864
|
+
"\u02E9\x07K\x02\x02\u02E9\u02EB\x05n8\x02\u02EA\u02DB\x03\x02\x02\x02" +
|
|
59865
|
+
"\u02EA\u02DC\x03\x02\x02\x02\u02EA\u02DE\x03\x02\x02\x02\u02EA\u02E0\x03" +
|
|
59866
|
+
"\x02\x02\x02\u02EA\u02E2\x03\x02\x02\x02\u02EA\u02E4\x03\x02\x02\x02\u02EA" +
|
|
59867
|
+
"\u02E6\x03\x02\x02\x02\u02EA\u02E8\x03\x02\x02\x02\u02EBo\x03\x02\x02" +
|
|
59868
|
+
"\x02\u02EC\u02ED\b9\x01\x02\u02ED\u02EE\x05r:\x02\u02EE\u02F8\x03\x02" +
|
|
59869
|
+
"\x02\x02\u02EF\u02F1\f\x03\x02\x02\u02F0\u02F2\x07E\x02\x02\u02F1\u02F0" +
|
|
59870
|
+
"\x03\x02\x02\x02\u02F1\u02F2\x03\x02\x02\x02\u02F2\u02F3\x03\x02\x02\x02" +
|
|
59871
|
+
"\u02F3\u02F4\x05@!\x02\u02F4\u02F5\x05r:\x02\u02F5\u02F7\x03\x02\x02\x02" +
|
|
59872
|
+
"\u02F6\u02EF\x03\x02\x02\x02\u02F7\u02FA\x03\x02\x02\x02\u02F8\u02F6\x03" +
|
|
59873
|
+
"\x02\x02\x02\u02F8\u02F9\x03\x02\x02\x02\u02F9q\x03\x02\x02\x02\u02FA" +
|
|
59874
|
+
"\u02F8\x03\x02\x02\x02\u02FB\u02FF\x05t;\x02\u02FC\u02FD\t\f\x02\x02\u02FD" +
|
|
59875
|
+
"\u02FF\x05t;\x02\u02FE\u02FB\x03\x02\x02\x02\u02FE\u02FC\x03\x02\x02\x02" +
|
|
59876
|
+
"\u02FFs\x03\x02\x02\x02\u0300\u0301\b;\x01\x02\u0301\u0302\x05v<\x02\u0302" +
|
|
59877
|
+
"\u0308\x03\x02\x02\x02\u0303\u0304\f\x03\x02\x02\u0304\u0305\t\r\x02\x02" +
|
|
59878
|
+
"\u0305\u0307\x05x=\x02\u0306\u0303\x03\x02\x02\x02\u0307\u030A\x03\x02" +
|
|
59879
|
+
"\x02\x02\u0308\u0306\x03\x02\x02\x02\u0308\u0309\x03\x02\x02\x02\u0309" +
|
|
59880
|
+
"u\x03\x02\x02\x02\u030A\u0308\x03\x02\x02\x02\u030B\u030F\x05x=\x02\u030C" +
|
|
59881
|
+
"\u030D\x07L\x02\x02\u030D\u030F\x05v<\x02\u030E\u030B\x03\x02\x02\x02" +
|
|
59882
|
+
"\u030E\u030C\x03\x02\x02\x02\u030Fw\x03\x02\x02\x02\u0310\u0311\b=\x01" +
|
|
59883
|
+
"\x02\u0311\u0312\x05z>\x02\u0312\u0318\x03\x02\x02\x02\u0313\u0314\f\x03" +
|
|
59884
|
+
"\x02\x02\u0314\u0315\x07M\x02\x02\u0315\u0317\x05z>\x02\u0316\u0313\x03" +
|
|
59885
|
+
"\x02\x02\x02\u0317\u031A\x03\x02\x02\x02\u0318\u0316\x03\x02\x02\x02\u0318" +
|
|
59886
|
+
"\u0319\x03\x02\x02\x02\u0319y\x03\x02\x02\x02\u031A\u0318\x03\x02\x02" +
|
|
59887
|
+
"\x02\u031B\u031C\b>\x01\x02\u031C\u031D\x05|?\x02\u031D\u0323\x03\x02" +
|
|
59888
|
+
"\x02\x02\u031E\u031F\f\x03\x02\x02\u031F\u0320\x07N\x02\x02\u0320\u0322" +
|
|
59889
|
+
"\x05|?\x02\u0321\u031E\x03\x02\x02\x02\u0322\u0325\x03\x02\x02\x02\u0323" +
|
|
59890
|
+
"\u0321\x03\x02\x02\x02\u0323\u0324\x03\x02\x02\x02\u0324{\x03\x02\x02" +
|
|
59891
|
+
"\x02\u0325\u0323\x03\x02\x02\x02\u0326\u0327\b?\x01\x02\u0327\u0328\x05" +
|
|
59892
|
+
"~@\x02\u0328\u032F\x03\x02\x02\x02\u0329\u032A\f\x03\x02\x02\u032A\u032B" +
|
|
59893
|
+
"\x05> \x02\u032B\u032C\x05~@\x02\u032C\u032E\x03\x02\x02\x02\u032D\u0329" +
|
|
59894
|
+
"\x03\x02\x02\x02\u032E\u0331\x03\x02\x02\x02\u032F\u032D\x03\x02\x02\x02" +
|
|
59895
|
+
"\u032F\u0330\x03\x02\x02\x02\u0330}\x03\x02\x02\x02\u0331\u032F\x03\x02" +
|
|
59896
|
+
"\x02\x02\u0332\u0333\b@\x01\x02\u0333\u0334\x05\x80A\x02\u0334\u033A\x03" +
|
|
59897
|
+
"\x02\x02\x02\u0335\u0336\f\x03\x02\x02\u0336\u0337\t\x0E\x02\x02\u0337" +
|
|
59898
|
+
"\u0339\x05\x80A\x02\u0338\u0335\x03\x02\x02\x02\u0339\u033C\x03\x02\x02" +
|
|
59899
|
+
"\x02\u033A\u0338\x03\x02\x02\x02\u033A\u033B\x03\x02\x02\x02\u033B\x7F" +
|
|
59900
|
+
"\x03\x02\x02\x02\u033C\u033A\x03\x02\x02\x02\u033D\u033E\bA\x01\x02\u033E" +
|
|
59901
|
+
"\u033F\x05\x82B\x02\u033F\u0347\x03\x02\x02\x02\u0340\u0341\f\x03\x02" +
|
|
59902
|
+
"\x02\u0341\u0342\x07\x04\x02\x02\u0342\u0343\x05^0\x02\u0343\u0344\x07" +
|
|
59903
|
+
"\x05\x02\x02\u0344\u0346\x03\x02\x02\x02\u0345\u0340\x03\x02\x02\x02\u0346" +
|
|
59904
|
+
"\u0349\x03\x02\x02\x02\u0347\u0345\x03\x02\x02\x02\u0347\u0348\x03\x02" +
|
|
59905
|
+
"\x02\x02\u0348\x81\x03\x02\x02\x02\u0349\u0347\x03\x02\x02\x02\u034A\u034B" +
|
|
59906
|
+
"\bB\x01\x02\u034B\u0352\x05\x84C\x02\u034C\u034D\x05N(\x02\u034D\u034E" +
|
|
59907
|
+
"\x07\x04\x02\x02\u034E\u034F\x05^0\x02\u034F\u0350\x07\x05\x02\x02\u0350" +
|
|
59908
|
+
"\u0352\x03\x02\x02\x02\u0351\u034A\x03\x02\x02\x02\u0351\u034C\x03\x02" +
|
|
59909
|
+
"\x02\x02\u0352\u0358\x03\x02\x02\x02\u0353\u0354\f\x04\x02\x02\u0354\u0355" +
|
|
59910
|
+
"\x07\x1B\x02\x02\u0355\u0357\x05\x84C\x02\u0356\u0353\x03\x02\x02\x02" +
|
|
59911
|
+
"\u0357\u035A\x03\x02\x02\x02\u0358\u0356\x03\x02\x02\x02\u0358\u0359\x03" +
|
|
59912
|
+
"\x02\x02\x02\u0359\x83\x03\x02\x02\x02\u035A\u0358\x03\x02\x02\x02\u035B" +
|
|
59913
|
+
"\u035C\bC\x01\x02\u035C\u035D\x05\x86D\x02\u035D\u0362\x03\x02\x02\x02" +
|
|
59914
|
+
"\u035E\u035F\f\x03\x02\x02\u035F\u0361\x07Q\x02\x02\u0360\u035E\x03\x02" +
|
|
59915
|
+
"\x02\x02\u0361\u0364\x03\x02\x02\x02\u0362\u0360\x03\x02\x02\x02\u0362" +
|
|
59916
|
+
"\u0363\x03\x02\x02\x02\u0363\x85\x03\x02\x02\x02\u0364\u0362\x03\x02\x02" +
|
|
59917
|
+
"\x02\u0365\u0369\x05\x88E\x02\u0366\u0367\t\x0F\x02\x02\u0367\u0369\x05" +
|
|
59918
|
+
"\x86D\x02\u0368\u0365\x03\x02\x02\x02\u0368\u0366\x03\x02\x02\x02\u0369" +
|
|
59919
|
+
"\x87\x03\x02\x02\x02\u036A\u037D\x050\x19\x02\u036B\u037D\x05J&\x02\u036C" +
|
|
59920
|
+
"\u036D\x07U\x02\x02\u036D\u037D\x05N(\x02\u036E\u036F\x07V\x02\x02\u036F" +
|
|
59921
|
+
"\u037D\x05N(\x02\u0370\u037D\x07W\x02\x02\u0371\u0372\x07\v\x02\x02\u0372" +
|
|
59922
|
+
"\u0373\x05V,\x02\u0373\u0374\x05F$\x02\u0374\u0375\x07\f\x02\x02\u0375" +
|
|
59923
|
+
"\u037D\x03\x02\x02\x02\u0376\u0377\x07\x1D\x02\x02\u0377\u0378\x05`1\x02" +
|
|
59924
|
+
"\u0378\u0379\x07\x1E\x02\x02\u0379\u037D\x03\x02\x02\x02\u037A\u037D\x05" +
|
|
59925
|
+
"D#\x02\u037B\u037D\x05\x8EH\x02\u037C\u036A\x03\x02\x02\x02\u037C\u036B" +
|
|
59926
|
+
"\x03\x02\x02\x02\u037C\u036C\x03\x02\x02\x02\u037C\u036E\x03\x02\x02\x02" +
|
|
59927
|
+
"\u037C\u0370\x03\x02\x02\x02\u037C\u0371\x03\x02\x02\x02\u037C\u0376\x03" +
|
|
59928
|
+
"\x02\x02\x02\u037C\u037A\x03\x02\x02\x02\u037C\u037B\x03\x02\x02\x02\u037D" +
|
|
59929
|
+
"\x89\x03\x02\x02\x02\u037E\u0384\x05J&\x02\u037F\u0380\x05J&\x02\u0380" +
|
|
59930
|
+
"\u0381\x07\\\x02\x02\u0381\u0382\x05\x8AF\x02\u0382\u0384\x03\x02\x02" +
|
|
59931
|
+
"\x02\u0383\u037E\x03\x02\x02\x02\u0383\u037F\x03\x02\x02\x02\u0384\x8B" +
|
|
59932
|
+
"\x03\x02\x02\x02\u0385\u0386\x05\x8EH\x02\u0386\x8D\x03\x02\x02\x02\u0387" +
|
|
59933
|
+
"\u0388\x07X\x02\x02\u0388\x8F\x03\x02\x02\x02\u0389\u038A\x07Y\x02\x02" +
|
|
59934
|
+
"\u038A\u038B\x05N(\x02\u038B\u038D\x05\x9EP\x02\u038C\u038E\x05,\x17\x02" +
|
|
59935
|
+
"\u038D\u038C\x03\x02\x02\x02\u038D\u038E\x03\x02\x02\x02\u038E\x91\x03" +
|
|
59936
|
+
"\x02\x02\x02\u038F\u0390\x05\x1A\x0E\x02\u0390\x93\x03\x02\x02\x02\u0391" +
|
|
59937
|
+
"\u0392\x07Z\x02\x02\u0392\u0393\x05`1\x02\u0393\x95\x03\x02\x02\x02\u0394" +
|
|
59938
|
+
"\u0395\x07[\x02\x02\u0395\u0396\x05N(\x02\u0396\u0397\x07)\x02\x02\u0397" +
|
|
59939
|
+
"\u0398\x05`1\x02\u0398\u0399\x07\"\x02\x02\u0399\u039A\x05\x9EP\x02\u039A" +
|
|
59940
|
+
"\x97\x03\x02\x02\x02\u039B\u039C\x05N(\x02\u039C\u039D\x07\x18\x02\x02" +
|
|
59941
|
+
"\u039D\u039E\x05\x8AF\x02\u039E\u039F\x07a\x02\x02\u039F\u03A0\x05`1\x02" +
|
|
59942
|
+
"\u03A0\x99\x03\x02\x02\x02\u03A1\u03A7\x05\x9CO\x02\u03A2\u03A3\x05\x9C" +
|
|
59943
|
+
"O\x02\u03A3\u03A4\x07k\x02\x02\u03A4\u03A5\x05\x9AN\x02\u03A5\u03A7\x03" +
|
|
59944
|
+
"\x02\x02\x02\u03A6\u03A1\x03\x02\x02\x02\u03A6\u03A2\x03\x02\x02\x02\u03A7" +
|
|
59945
|
+
"\x9B\x03\x02\x02\x02\u03A8\u03A9\x07m\x02\x02\u03A9\x9D\x03\x02\x02\x02" +
|
|
59946
|
+
"\u03AA\u03AE\x07\v\x02\x02\u03AB\u03AD\x05\xA2R\x02\u03AC\u03AB\x03\x02" +
|
|
59947
|
+
"\x02\x02\u03AD\u03B0\x03\x02\x02\x02\u03AE\u03AC\x03\x02\x02\x02\u03AE" +
|
|
59948
|
+
"\u03AF\x03\x02\x02\x02\u03AF\u03B1\x03\x02\x02\x02\u03B0\u03AE\x03\x02" +
|
|
59949
|
+
"\x02\x02\u03B1\u03B7\x07\f\x02\x02\u03B2\u03B4\x07$\x02\x02\u03B3\u03B2" +
|
|
59950
|
+
"\x03\x02\x02\x02\u03B3\u03B4\x03\x02\x02\x02\u03B4\u03B5\x03\x02\x02\x02" +
|
|
59951
|
+
"\u03B5\u03B7\x05J&\x02\u03B6\u03AA\x03\x02\x02\x02\u03B6\u03B3\x03\x02" +
|
|
59952
|
+
"\x02\x02\u03B7\x9F\x03\x02\x02\x02\u03B8\u03B9\x07V\x02\x02\u03B9\u03BE" +
|
|
59953
|
+
"\x05N(\x02\u03BA\u03BE\x05\x9CO\x02\u03BB\u03BC\x07(\x02\x02\u03BC\u03BE" +
|
|
59954
|
+
"\x05\x9CO\x02\u03BD\u03B8\x03\x02\x02\x02\u03BD\u03BA\x03\x02\x02\x02" +
|
|
59955
|
+
"\u03BD\u03BB\x03\x02\x02\x02\u03BE\xA1\x03\x02\x02\x02\u03BF\u03C0\x05" +
|
|
59956
|
+
"\xA4S\x02\u03C0\u03C1\x05@!\x02\u03C1\u03C2\x05\xA6T\x02\u03C2\u03C7\x03" +
|
|
59957
|
+
"\x02\x02\x02\u03C3\u03C4\x07g\x02\x02\u03C4\u03C7\x05\xA4S\x02\u03C5\u03C7" +
|
|
59958
|
+
"\x05J&\x02\u03C6\u03BF\x03\x02\x02\x02\u03C6\u03C3\x03\x02\x02\x02\u03C6" +
|
|
59959
|
+
"\u03C5\x03\x02\x02\x02\u03C7\xA3\x03\x02\x02\x02\u03C8\u03C9\x07L\x02" +
|
|
59960
|
+
"\x02\u03C9\u03D3\x05J&\x02\u03CA\u03D3\x05J&\x02\u03CB\u03CE\x05\xA0Q" +
|
|
59961
|
+
"\x02\u03CC\u03CD\x07\x1B\x02\x02\u03CD\u03CF\x05J&\x02\u03CE\u03CC\x03" +
|
|
59962
|
+
"\x02\x02\x02\u03CF\u03D0\x03\x02\x02\x02\u03D0\u03CE\x03\x02\x02\x02\u03D0" +
|
|
59963
|
+
"\u03D1\x03\x02\x02\x02\u03D1\u03D3\x03\x02\x02\x02\u03D2\u03C8\x03\x02" +
|
|
59964
|
+
"\x02\x02\u03D2\u03CA\x03\x02\x02\x02\u03D2\u03CB\x03\x02\x02\x02\u03D3" +
|
|
59965
|
+
"\xA5\x03\x02\x02\x02\u03D4\u03D5\bT\x01\x02\u03D5\u03DB\x05\xA8U\x02\u03D6" +
|
|
59966
|
+
"\u03D7\x07\x1D\x02\x02\u03D7\u03D8\x05\xA6T\x02\u03D8\u03D9\x07\x1E\x02" +
|
|
59967
|
+
"\x02\u03D9\u03DB\x03\x02\x02\x02\u03DA\u03D4\x03\x02\x02\x02\u03DA\u03D6" +
|
|
59968
|
+
"\x03\x02\x02\x02\u03DB\u03E1\x03\x02\x02\x02\u03DC\u03DD\f\x04\x02\x02" +
|
|
59969
|
+
"\u03DD\u03DE\x07\x0F\x02\x02\u03DE\u03E0\x05\xA8U\x02\u03DF\u03DC\x03" +
|
|
59970
|
+
"\x02\x02\x02\u03E0\u03E3\x03\x02\x02\x02\u03E1\u03DF\x03\x02\x02\x02\u03E1" +
|
|
59971
|
+
"\u03E2\x03\x02\x02\x02\u03E2\xA7\x03\x02\x02\x02\u03E3\u03E1\x03\x02\x02" +
|
|
59972
|
+
"\x02\u03E4\u03E5\bU\x01\x02\u03E5\u03E6\x07\x1D\x02\x02\u03E6\u03E7\x05" +
|
|
59973
|
+
"\xA8U\x02\u03E7\u03E8\x07\x1E\x02\x02\u03E8\u03EB\x03\x02\x02\x02\u03E9" +
|
|
59974
|
+
"\u03EB\x05\xAAV\x02\u03EA\u03E4\x03\x02\x02\x02\u03EA\u03E9\x03\x02\x02" +
|
|
59975
|
+
"\x02\u03EB\u03F1\x03\x02\x02\x02\u03EC\u03ED\f\x04\x02\x02\u03ED\u03EE" +
|
|
59976
|
+
"\t\x10\x02\x02\u03EE\u03F0\x05\xAAV\x02\u03EF\u03EC\x03\x02\x02\x02\u03F0" +
|
|
59977
|
+
"\u03F3\x03\x02\x02\x02\u03F1\u03EF\x03\x02\x02\x02\u03F1\u03F2\x03\x02" +
|
|
59978
|
+
"\x02\x02\u03F2\xA9\x03\x02\x02\x02\u03F3\u03F1\x03\x02\x02\x02\u03F4\u03FB" +
|
|
59979
|
+
"\x05\xA0Q\x02\u03F5\u03FB\x05J&\x02\u03F6\u03F7\x07\x1D\x02\x02\u03F7" +
|
|
59980
|
+
"\u03F8\x05\xA6T\x02\u03F8\u03F9\x07\x1E\x02\x02\u03F9\u03FB\x03\x02\x02" +
|
|
59981
|
+
"\x02\u03FA\u03F4\x03\x02\x02\x02\u03FA\u03F5\x03\x02\x02\x02\u03FA\u03F6" +
|
|
59982
|
+
"\x03\x02\x02\x02\u03FB\xAB\x03\x02\x02\x02x\xAE\xB3\xB7\xC1\xC7\xCD\xD0" +
|
|
59610
59983
|
"\xD8\xDC\xE2\xE4\xF7\xFA\xFD\u0100\u0105\u0109\u010D\u0117\u011A\u0123" +
|
|
59611
59984
|
"\u0128\u012D\u0132\u0137\u0144\u0148\u014C\u0155\u015A\u015D\u0161\u0168" +
|
|
59612
59985
|
"\u016D\u0170\u0174\u0179\u017D\u0180\u0184\u018A\u018E\u0196\u019F\u01A3" +
|
|
59613
|
-
"\u01A6\u01AF\
|
|
59614
|
-
"\
|
|
59615
|
-
"\
|
|
59616
|
-
"\
|
|
59617
|
-
"\
|
|
59618
|
-
"\
|
|
59619
|
-
"\
|
|
59986
|
+
"\u01A6\u01AF\u01B3\u01BA\u01BE\u01C3\u01D0\u01D3\u01D7\u01E0\u01E4\u01ED" +
|
|
59987
|
+
"\u01F1\u01FB\u0206\u020A\u020F\u021B\u0223\u0229\u022D\u0234\u023A\u0241" +
|
|
59988
|
+
"\u0244\u024D\u0254\u025B\u0262\u0269\u0270\u0277\u027E\u028B\u0290\u029A" +
|
|
59989
|
+
"\u02A5\u02B0\u02B9\u02BB\u02C5\u02D9\u02EA\u02F1\u02F8\u02FE\u0308\u030E" +
|
|
59990
|
+
"\u0318\u0323\u032F\u033A\u0347\u0351\u0358\u0362\u0368\u037C\u0383\u038D" +
|
|
59991
|
+
"\u03A6\u03AE\u03B3\u03B6\u03BD\u03C6\u03D0\u03D2\u03DA\u03E1\u03EA\u03F1" +
|
|
59992
|
+
"\u03FA";
|
|
59620
59993
|
ForgeParser._serializedATN = Utils.join([
|
|
59621
59994
|
ForgeParser._serializedATNSegment0,
|
|
59622
59995
|
ForgeParser._serializedATNSegment1,
|
|
@@ -59767,7 +60140,7 @@ class ImportDeclContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
59767
60140
|
name() {
|
|
59768
60141
|
return this.tryGetRuleContext(0, NameContext);
|
|
59769
60142
|
}
|
|
59770
|
-
|
|
60143
|
+
STRING_TOK() { return this.tryGetToken(ForgeParser.STRING_TOK, 0); }
|
|
59771
60144
|
constructor(parent, invokingState) {
|
|
59772
60145
|
super(parent, invokingState);
|
|
59773
60146
|
}
|
|
@@ -60605,6 +60978,7 @@ class ConstContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
60605
60978
|
return this.tryGetRuleContext(0, NumberContext);
|
|
60606
60979
|
}
|
|
60607
60980
|
MINUS_TOK() { return this.tryGetToken(ForgeParser.MINUS_TOK, 0); }
|
|
60981
|
+
STRING_TOK() { return this.tryGetToken(ForgeParser.STRING_TOK, 0); }
|
|
60608
60982
|
constructor(parent, invokingState) {
|
|
60609
60983
|
super(parent, invokingState);
|
|
60610
60984
|
}
|
|
@@ -61220,7 +61594,7 @@ class OptionDeclContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
61220
61594
|
return this.getRuleContext(i, QualNameContext);
|
|
61221
61595
|
}
|
|
61222
61596
|
}
|
|
61223
|
-
|
|
61597
|
+
STRING_TOK() { return this.tryGetToken(ForgeParser.STRING_TOK, 0); }
|
|
61224
61598
|
number() {
|
|
61225
61599
|
return this.tryGetRuleContext(0, NumberContext);
|
|
61226
61600
|
}
|
|
@@ -63337,6 +63711,11 @@ class SimpleGraphQueryEvaluator {
|
|
|
63337
63711
|
// underlying IDataInstance -- callers must signal that themselves.
|
|
63338
63712
|
this.cachedEvaluator = null;
|
|
63339
63713
|
this.cachedEvaluatorDatum = null;
|
|
63714
|
+
// Diagnostics from the most recent evaluateExpression call. Kept here rather
|
|
63715
|
+
// than read back off the evaluator, because a failed evaluation discards the
|
|
63716
|
+
// evaluator — and a query that warns and *then* errors is exactly when the
|
|
63717
|
+
// warning is most worth keeping.
|
|
63718
|
+
this.lastDiagnostics = [];
|
|
63340
63719
|
this.datum = datum;
|
|
63341
63720
|
}
|
|
63342
63721
|
/**
|
|
@@ -63362,6 +63741,24 @@ class SimpleGraphQueryEvaluator {
|
|
|
63362
63741
|
//////// This is empty on parse error? //TODO//////
|
|
63363
63742
|
return tree;
|
|
63364
63743
|
}
|
|
63744
|
+
/**
|
|
63745
|
+
* Evaluate `forgeExpr` and return both its value and any diagnostics raised
|
|
63746
|
+
* along the way.
|
|
63747
|
+
*
|
|
63748
|
+
* Diagnostics are advisory and never change the value — today the only kind
|
|
63749
|
+
* is an unresolved name, which evaluates to the empty set. Consumers should
|
|
63750
|
+
* surface them to whoever authored the query; see {@link Diagnostic}.
|
|
63751
|
+
*
|
|
63752
|
+
* Note that an unresolved name is a warning rather than an error on purpose.
|
|
63753
|
+
* An instance carries only populated types and relations, so a sig that is
|
|
63754
|
+
* empty here looks exactly like a typo, and a sig can empty out between
|
|
63755
|
+
* frames of one trace. Deciding which it is needs context this library does
|
|
63756
|
+
* not have.
|
|
63757
|
+
*/
|
|
63758
|
+
evaluateExpressionWithDiagnostics(forgeExpr) {
|
|
63759
|
+
const value = this.evaluateExpression(forgeExpr);
|
|
63760
|
+
return { value, diagnostics: this.lastDiagnostics };
|
|
63761
|
+
}
|
|
63365
63762
|
evaluateExpression(forgeExpr) {
|
|
63366
63763
|
// Check cache first
|
|
63367
63764
|
let tree;
|
|
@@ -63377,6 +63774,7 @@ class SimpleGraphQueryEvaluator {
|
|
|
63377
63774
|
}
|
|
63378
63775
|
catch (e) {
|
|
63379
63776
|
// if we can't parse the expression, we return an error
|
|
63777
|
+
this.lastDiagnostics = []; // nothing was evaluated
|
|
63380
63778
|
return {
|
|
63381
63779
|
error: new Error(`Error parsing expression "${forgeExpr}"`)
|
|
63382
63780
|
};
|
|
@@ -63390,12 +63788,20 @@ class SimpleGraphQueryEvaluator {
|
|
|
63390
63788
|
this.cachedEvaluatorDatum = this.datum;
|
|
63391
63789
|
}
|
|
63392
63790
|
const evaluator = this.cachedEvaluator;
|
|
63791
|
+
// Diagnostics describe this evaluation, not the whole life of the reused
|
|
63792
|
+
// evaluator, so clear whatever the previous call left behind.
|
|
63793
|
+
evaluator.resetDiagnostics();
|
|
63393
63794
|
try {
|
|
63394
63795
|
let result = evaluator.visit(tree);
|
|
63796
|
+
this.lastDiagnostics = evaluator.getDiagnostics();
|
|
63395
63797
|
// ensure we're visiting an ExprContext
|
|
63396
63798
|
return result;
|
|
63397
63799
|
}
|
|
63398
63800
|
catch (error) {
|
|
63801
|
+
// Capture diagnostics BEFORE discarding the evaluator. A query that
|
|
63802
|
+
// warns about an unresolved name and then fails for an unrelated reason
|
|
63803
|
+
// should still surface the warning.
|
|
63804
|
+
this.lastDiagnostics = evaluator.getDiagnostics();
|
|
63399
63805
|
// The visit threw mid-traversal, so the evaluator's transient state
|
|
63400
63806
|
// (environment stack) may be inconsistent. Discard the cached
|
|
63401
63807
|
// evaluator so the next call rebuilds from a clean slate. The
|