simple-graph-query 2.8.2 → 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 +1312 -902
- 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) {
|
|
@@ -49546,20 +49786,34 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49546
49786
|
if (ctx.SET_TOK()) {
|
|
49547
49787
|
return childrenResults;
|
|
49548
49788
|
}
|
|
49549
|
-
|
|
49550
|
-
|
|
49551
|
-
|
|
49552
|
-
if (ctx.
|
|
49553
|
-
|
|
49554
|
-
|
|
49555
|
-
|
|
49556
|
-
|
|
49557
|
-
|
|
49558
|
-
|
|
49559
|
-
|
|
49560
|
-
|
|
49561
|
-
|
|
49562
|
-
|
|
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
|
+
}
|
|
49563
49817
|
}
|
|
49564
49818
|
return childrenResults;
|
|
49565
49819
|
}
|
|
@@ -49570,6 +49824,10 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49570
49824
|
const rightChildValue = this.visit(ctx.expr10());
|
|
49571
49825
|
// should only work if arities are the same
|
|
49572
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
|
+
}
|
|
49573
49831
|
return [[leftChildValue], [rightChildValue]];
|
|
49574
49832
|
}
|
|
49575
49833
|
else if (isSingleValue(leftChildValue) && isTupleArray(rightChildValue)) {
|
|
@@ -49577,7 +49835,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49577
49835
|
return leftChildValue;
|
|
49578
49836
|
}
|
|
49579
49837
|
if (rightChildValue[0].length === 1) {
|
|
49580
|
-
return
|
|
49838
|
+
return deduplicateConcat([[[leftChildValue]], rightChildValue]);
|
|
49581
49839
|
}
|
|
49582
49840
|
throw new Error("arity mismatch in set union!");
|
|
49583
49841
|
}
|
|
@@ -49586,7 +49844,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49586
49844
|
return rightChildValue;
|
|
49587
49845
|
}
|
|
49588
49846
|
if (leftChildValue[0].length === 1) {
|
|
49589
|
-
return
|
|
49847
|
+
return deduplicateConcat([leftChildValue, [[rightChildValue]]]);
|
|
49590
49848
|
}
|
|
49591
49849
|
throw new Error("arity mismatch in set union!");
|
|
49592
49850
|
}
|
|
@@ -49601,7 +49859,7 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49601
49859
|
return leftChildValue;
|
|
49602
49860
|
}
|
|
49603
49861
|
if (leftChildValue[0].length === rightChildValue[0].length) {
|
|
49604
|
-
return
|
|
49862
|
+
return deduplicateConcat([leftChildValue, rightChildValue]);
|
|
49605
49863
|
}
|
|
49606
49864
|
}
|
|
49607
49865
|
else {
|
|
@@ -49647,9 +49905,22 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49647
49905
|
return leftChildValue;
|
|
49648
49906
|
}
|
|
49649
49907
|
if (leftChildValue[0].length === rightChildValue[0].length) {
|
|
49650
|
-
// Optimize set difference using Set for O(n+m) instead of O(n*m)
|
|
49651
|
-
|
|
49652
|
-
|
|
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;
|
|
49653
49924
|
}
|
|
49654
49925
|
}
|
|
49655
49926
|
else {
|
|
@@ -49663,10 +49934,15 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49663
49934
|
const childrenResults = this.visitChildren(ctx);
|
|
49664
49935
|
//console.log('childrenResults in expr9:', childrenResults);
|
|
49665
49936
|
if (ctx.CARD_TOK()) {
|
|
49666
|
-
if (
|
|
49667
|
-
|
|
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;
|
|
49668
49944
|
}
|
|
49669
|
-
|
|
49945
|
+
throw new Error("The cardinal operator must be applied to a set of tuples!");
|
|
49670
49946
|
}
|
|
49671
49947
|
return childrenResults;
|
|
49672
49948
|
}
|
|
@@ -49722,9 +49998,22 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49722
49998
|
return [];
|
|
49723
49999
|
}
|
|
49724
50000
|
if (leftChildValue[0].length === rightChildValue[0].length) {
|
|
49725
|
-
// Optimize set intersection using Set for O(n+m) instead of O(n*m)
|
|
49726
|
-
|
|
49727
|
-
|
|
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;
|
|
49728
50017
|
}
|
|
49729
50018
|
}
|
|
49730
50019
|
else {
|
|
@@ -49885,63 +50174,36 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49885
50174
|
else {
|
|
49886
50175
|
throw new Error("Unknown label operator");
|
|
49887
50176
|
}
|
|
49888
|
-
|
|
49889
|
-
|
|
49890
|
-
|
|
49891
|
-
|
|
49892
|
-
|
|
49893
|
-
|
|
49894
|
-
|
|
49895
|
-
|
|
49896
|
-
text = text.slice(1, -1);
|
|
49897
|
-
}
|
|
49898
|
-
try {
|
|
49899
|
-
return convertFunction(text);
|
|
49900
|
-
}
|
|
49901
|
-
catch (error) {
|
|
49902
|
-
// If conversion fails, fall back to string for unknown identifiers
|
|
49903
|
-
return text;
|
|
49904
|
-
}
|
|
49905
|
-
}
|
|
49906
|
-
if (isSingleValue(innerResult)) {
|
|
49907
|
-
return convertFunction(innerResult);
|
|
49908
|
-
}
|
|
49909
|
-
else if (isTupleArray(innerResult)) {
|
|
49910
|
-
// For single-element tuple arrays, return the converted label of the element
|
|
49911
|
-
if (innerResult.length === 1 && innerResult[0].length === 1) {
|
|
49912
|
-
return convertFunction(innerResult[0][0]);
|
|
49913
|
-
}
|
|
49914
|
-
// For multi-element cases, apply conversion to each tuple element
|
|
49915
|
-
return innerResult.map((tuple) => tuple.map((value) => convertFunction(value)));
|
|
49916
|
-
}
|
|
49917
|
-
throw new Error(`${operatorName} operator can only be applied to single values or tuple arrays`);
|
|
49918
|
-
}
|
|
49919
|
-
catch (error) {
|
|
49920
|
-
// If evaluation fails due to unknown identifier, use the text as the label
|
|
49921
|
-
if (error instanceof NameNotFoundError) {
|
|
49922
|
-
// Extract the identifier from the inner expression
|
|
49923
|
-
let identifierText = innerExpr.text;
|
|
49924
|
-
if (identifierText.startsWith('(') && identifierText.endsWith(')')) {
|
|
49925
|
-
identifierText = identifierText.slice(1, -1);
|
|
49926
|
-
}
|
|
49927
|
-
try {
|
|
49928
|
-
return convertFunction(identifierText);
|
|
49929
|
-
}
|
|
49930
|
-
catch (conversionError) {
|
|
49931
|
-
// If conversion fails, fall back to string for unknown identifiers
|
|
49932
|
-
return identifierText;
|
|
49933
|
-
}
|
|
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]);
|
|
49934
50185
|
}
|
|
49935
|
-
|
|
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)));
|
|
49936
50189
|
}
|
|
50190
|
+
throw new Error(`${operatorName} operator can only be applied to single values or tuple arrays`);
|
|
49937
50191
|
}
|
|
49938
50192
|
const childrenResults = this.visitChildren(ctx);
|
|
49939
50193
|
//console.log('visitChildren result for', ctx.text, ':', childrenResults);
|
|
49940
50194
|
if (ctx.TILDE_TOK()) {
|
|
49941
50195
|
// this flips the order of the elements in the tuples of a relation if
|
|
49942
50196
|
// the relation has arity 2
|
|
49943
|
-
if (isTupleArray(childrenResults)
|
|
49944
|
-
|
|
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
|
+
}
|
|
49945
50207
|
}
|
|
49946
50208
|
throw new Error("expected the expression provided to ~ to have arity 2; bad arity received!");
|
|
49947
50209
|
}
|
|
@@ -49955,15 +50217,9 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
49955
50217
|
if (isTupleArray(childrenResults)) {
|
|
49956
50218
|
const transitiveClosureResult = transitiveClosure(childrenResults);
|
|
49957
50219
|
const idenResult = this.getIden();
|
|
49958
|
-
//
|
|
49959
|
-
|
|
49960
|
-
|
|
49961
|
-
resultSet.add(tupleToKey(tuple));
|
|
49962
|
-
}
|
|
49963
|
-
for (const tuple of transitiveClosureResult) {
|
|
49964
|
-
resultSet.add(tupleToKey(tuple));
|
|
49965
|
-
}
|
|
49966
|
-
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));
|
|
49967
50223
|
}
|
|
49968
50224
|
}
|
|
49969
50225
|
return childrenResults;
|
|
@@ -50037,6 +50293,14 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50037
50293
|
// }
|
|
50038
50294
|
return value;
|
|
50039
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
|
+
}
|
|
50040
50304
|
// Handle iden (identity relation)
|
|
50041
50305
|
if (constant.IDEN_TOK() !== undefined) {
|
|
50042
50306
|
// The identity relation contains tuples (x, x) for every atom x in the universe
|
|
@@ -50073,6 +50337,12 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50073
50337
|
}
|
|
50074
50338
|
return univRelation;
|
|
50075
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
|
+
}
|
|
50076
50346
|
// Handle boolean constants
|
|
50077
50347
|
if (constant.text === 'true') {
|
|
50078
50348
|
return true;
|
|
@@ -50319,15 +50589,15 @@ class ForgeExprEvaluator extends AbstractParseTreeVisitor_1.AbstractParseTreeVis
|
|
|
50319
50589
|
if (exports.SUPPORTED_BUILTINS.includes(identifier)) {
|
|
50320
50590
|
return identifier;
|
|
50321
50591
|
}
|
|
50322
|
-
//
|
|
50323
|
-
//
|
|
50324
|
-
//
|
|
50325
|
-
//
|
|
50326
|
-
|
|
50327
|
-
|
|
50328
|
-
|
|
50329
|
-
|
|
50330
|
-
|
|
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 [];
|
|
50331
50601
|
}
|
|
50332
50602
|
visitQualName(ctx) {
|
|
50333
50603
|
// NOTE: this currently only supports Int; doesn't support other branches
|
|
@@ -50868,6 +51138,7 @@ exports.ForgeExprStaticAnalyzer = void 0;
|
|
|
50868
51138
|
const AbstractParseTreeVisitor_1 = __webpack_require__(/*! antlr4ts/tree/AbstractParseTreeVisitor */ "./node_modules/antlr4ts/tree/AbstractParseTreeVisitor.js");
|
|
50869
51139
|
const ForgeParser_1 = __webpack_require__(/*! ./forge-antlr/ForgeParser */ "./src/forge-antlr/ForgeParser.ts");
|
|
50870
51140
|
const utils_1 = __webpack_require__(/*! ./forge-antlr/utils */ "./src/forge-antlr/utils.ts");
|
|
51141
|
+
const ForgeExprEvaluator_1 = __webpack_require__(/*! ./ForgeExprEvaluator */ "./src/ForgeExprEvaluator.ts");
|
|
50871
51142
|
const UNKNOWN = { kind: "unknown" };
|
|
50872
51143
|
// Helper that wraps the schema with O(1) lookups and lattice queries.
|
|
50873
51144
|
class SchemaInfo {
|
|
@@ -51000,9 +51271,28 @@ function negationOperandText(ctx) {
|
|
|
51000
51271
|
class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor {
|
|
51001
51272
|
constructor(schema) {
|
|
51002
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();
|
|
51003
51280
|
if (schema)
|
|
51004
51281
|
this.schema = new SchemaInfo(schema);
|
|
51005
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
|
+
}
|
|
51006
51296
|
// Walk a nameList (`a, b, c`) and accumulate identifiers into `out`.
|
|
51007
51297
|
collectNamesFromList(ctx, out) {
|
|
51008
51298
|
out.add((0, utils_1.getIdentifierName)(ctx.name()));
|
|
@@ -51036,19 +51326,28 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51036
51326
|
}
|
|
51037
51327
|
// Public entry: convert internal lattice value to a verdict + reason.
|
|
51038
51328
|
analyze(ctx) {
|
|
51329
|
+
this.unresolved.clear();
|
|
51330
|
+
this.boundScopes.length = 0;
|
|
51039
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
|
+
: {};
|
|
51040
51339
|
if (v.kind === "bool") {
|
|
51041
51340
|
return v.value
|
|
51042
|
-
? { status: "tautology", reason: "expression folds to literal true" }
|
|
51043
|
-
: { 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 };
|
|
51044
51343
|
}
|
|
51045
51344
|
if (v.kind === "empty") {
|
|
51046
|
-
return { status: "empty", reason: "expression is provably the empty set" };
|
|
51345
|
+
return { status: "empty", reason: "expression is provably the empty set", ...names };
|
|
51047
51346
|
}
|
|
51048
51347
|
if (v.kind === "ill-typed") {
|
|
51049
|
-
return { status: "ill-typed", reason: v.reason };
|
|
51348
|
+
return { status: "ill-typed", reason: v.reason, ...names };
|
|
51050
51349
|
}
|
|
51051
|
-
return { status: "unknown" };
|
|
51350
|
+
return { status: "unknown", ...names };
|
|
51052
51351
|
}
|
|
51053
51352
|
// Arity of an Abstract when known; -1 means "not determinable".
|
|
51054
51353
|
static arityOf(v) {
|
|
@@ -51106,8 +51405,8 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51106
51405
|
// Reserved-name check at the binder: under a schema, type/relation names
|
|
51107
51406
|
// cannot be reused as quantified variables.
|
|
51108
51407
|
const declListTop = ctx.quantDeclList();
|
|
51408
|
+
const boundHere = new Set();
|
|
51109
51409
|
if (declListTop) {
|
|
51110
|
-
const boundHere = new Set();
|
|
51111
51410
|
this.collectBoundNames(declListTop, boundHere);
|
|
51112
51411
|
const reservedError = this.illTypedIfBindsReservedName(boundHere);
|
|
51113
51412
|
if (reservedError)
|
|
@@ -51134,7 +51433,7 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51134
51433
|
// and would need the binding to be meaningful).
|
|
51135
51434
|
let body = UNKNOWN;
|
|
51136
51435
|
if (blockOrBar.BAR_TOK() && blockOrBar.expr()) {
|
|
51137
|
-
body = this.visit(blockOrBar.expr());
|
|
51436
|
+
body = this.withBoundScope(boundHere, () => this.visit(blockOrBar.expr()));
|
|
51138
51437
|
}
|
|
51139
51438
|
const mult = quant.mult();
|
|
51140
51439
|
const isAll = quant.ALL_TOK() !== undefined;
|
|
@@ -51777,7 +52076,7 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51777
52076
|
return reservedError;
|
|
51778
52077
|
const blockOrBar = ctx.blockOrBar();
|
|
51779
52078
|
if (blockOrBar && blockOrBar.BAR_TOK() && blockOrBar.expr()) {
|
|
51780
|
-
const body = this.visit(blockOrBar.expr());
|
|
52079
|
+
const body = this.withBoundScope(boundHere, () => this.visit(blockOrBar.expr()));
|
|
51781
52080
|
if (body.kind === "ill-typed")
|
|
51782
52081
|
return body;
|
|
51783
52082
|
if (body.kind === "bool" && !body.value)
|
|
@@ -51824,10 +52123,75 @@ class ForgeExprStaticAnalyzer extends AbstractParseTreeVisitor_1.AbstractParseTr
|
|
|
51824
52123
|
? { kind: "typed", arity, columnTypes: cols }
|
|
51825
52124
|
: { kind: "typed", arity };
|
|
51826
52125
|
}
|
|
52126
|
+
return UNKNOWN;
|
|
51827
52127
|
}
|
|
51828
52128
|
}
|
|
51829
52129
|
return UNKNOWN;
|
|
51830
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
|
+
}
|
|
51831
52195
|
}
|
|
51832
52196
|
exports.ForgeExprStaticAnalyzer = ForgeExprStaticAnalyzer;
|
|
51833
52197
|
|
|
@@ -52718,7 +53082,7 @@ ForgeLexer.OPEN_TOK = 1;
|
|
|
52718
53082
|
ForgeLexer.LEFT_SQUARE_TOK = 2;
|
|
52719
53083
|
ForgeLexer.RIGHT_SQUARE_TOK = 3;
|
|
52720
53084
|
ForgeLexer.AS_TOK = 4;
|
|
52721
|
-
ForgeLexer.
|
|
53085
|
+
ForgeLexer.STRING_TOK = 5;
|
|
52722
53086
|
ForgeLexer.VAR_TOK = 6;
|
|
52723
53087
|
ForgeLexer.ABSTRACT_TOK = 7;
|
|
52724
53088
|
ForgeLexer.SIG_TOK = 8;
|
|
@@ -52837,7 +53201,7 @@ ForgeLexer.modeNames = [
|
|
|
52837
53201
|
"DEFAULT_MODE",
|
|
52838
53202
|
];
|
|
52839
53203
|
ForgeLexer.ruleNames = [
|
|
52840
|
-
"OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK", "
|
|
53204
|
+
"OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK", "STRING_TOK",
|
|
52841
53205
|
"VAR_TOK", "ABSTRACT_TOK", "SIG_TOK", "LEFT_CURLY_TOK", "RIGHT_CURLY_TOK",
|
|
52842
53206
|
"EXTENDS_TOK", "IN_TOK", "PLUS_TOK", "LONE_TOK", "SOME_TOK", "ONE_TOK",
|
|
52843
53207
|
"TWO_TOK", "SET_TOK", "FUNC_TOK", "PFUNC_TOK", "DISJ_TOK", "COLON_TOK",
|
|
@@ -52877,7 +53241,7 @@ ForgeLexer._LITERAL_NAMES = [
|
|
|
52877
53241
|
];
|
|
52878
53242
|
ForgeLexer._SYMBOLIC_NAMES = [
|
|
52879
53243
|
undefined, "OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK",
|
|
52880
|
-
"
|
|
53244
|
+
"STRING_TOK", "VAR_TOK", "ABSTRACT_TOK", "SIG_TOK", "LEFT_CURLY_TOK",
|
|
52881
53245
|
"RIGHT_CURLY_TOK", "EXTENDS_TOK", "IN_TOK", "PLUS_TOK", "LONE_TOK", "SOME_TOK",
|
|
52882
53246
|
"ONE_TOK", "TWO_TOK", "SET_TOK", "FUNC_TOK", "PFUNC_TOK", "DISJ_TOK",
|
|
52883
53247
|
"COLON_TOK", "WHEAT_TOK", "PRED_TOK", "DOT_TOK", "FUN_TOK", "LEFT_PAREN_TOK",
|
|
@@ -53890,7 +54254,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
53890
54254
|
this.state = 220;
|
|
53891
54255
|
this.match(ForgeParser.OPEN_TOK);
|
|
53892
54256
|
this.state = 221;
|
|
53893
|
-
this.match(ForgeParser.
|
|
54257
|
+
this.match(ForgeParser.STRING_TOK);
|
|
53894
54258
|
this.state = 224;
|
|
53895
54259
|
this._errHandler.sync(this);
|
|
53896
54260
|
_la = this._input.LA(1);
|
|
@@ -55033,7 +55397,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55033
55397
|
this.enterRule(_localctx, 46, ForgeParser.RULE_const);
|
|
55034
55398
|
let _la;
|
|
55035
55399
|
try {
|
|
55036
|
-
this.state =
|
|
55400
|
+
this.state = 433;
|
|
55037
55401
|
this._errHandler.sync(this);
|
|
55038
55402
|
switch (this._input.LA(1)) {
|
|
55039
55403
|
case ForgeParser.NONE_TOK:
|
|
@@ -55074,6 +55438,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55074
55438
|
this.number();
|
|
55075
55439
|
}
|
|
55076
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;
|
|
55077
55448
|
default:
|
|
55078
55449
|
throw new NoViableAltException_1.NoViableAltException(this);
|
|
55079
55450
|
}
|
|
@@ -55101,13 +55472,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55101
55472
|
try {
|
|
55102
55473
|
this.enterOuterAlt(_localctx, 1);
|
|
55103
55474
|
{
|
|
55104
|
-
this.state = 434;
|
|
55105
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55106
55475
|
this.state = 435;
|
|
55107
|
-
this.
|
|
55476
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55108
55477
|
this.state = 436;
|
|
55109
|
-
this.
|
|
55478
|
+
this.expr();
|
|
55110
55479
|
this.state = 437;
|
|
55480
|
+
this.match(ForgeParser.IS_TOK);
|
|
55481
|
+
this.state = 438;
|
|
55111
55482
|
_la = this._input.LA(1);
|
|
55112
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))) {
|
|
55113
55484
|
this._errHandler.recoverInline(this);
|
|
@@ -55119,24 +55490,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55119
55490
|
this._errHandler.reportMatch(this);
|
|
55120
55491
|
this.consume();
|
|
55121
55492
|
}
|
|
55122
|
-
this.state =
|
|
55493
|
+
this.state = 440;
|
|
55123
55494
|
this._errHandler.sync(this);
|
|
55124
55495
|
switch (this.interpreter.adaptivePredict(this._input, 48, this._ctx)) {
|
|
55125
55496
|
case 1:
|
|
55126
55497
|
{
|
|
55127
|
-
this.state =
|
|
55498
|
+
this.state = 439;
|
|
55128
55499
|
this.scope();
|
|
55129
55500
|
}
|
|
55130
55501
|
break;
|
|
55131
55502
|
}
|
|
55132
|
-
this.state =
|
|
55503
|
+
this.state = 444;
|
|
55133
55504
|
this._errHandler.sync(this);
|
|
55134
55505
|
_la = this._input.LA(1);
|
|
55135
55506
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55136
55507
|
{
|
|
55137
|
-
this.state = 441;
|
|
55138
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55139
55508
|
this.state = 442;
|
|
55509
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55510
|
+
this.state = 443;
|
|
55140
55511
|
this.bounds();
|
|
55141
55512
|
}
|
|
55142
55513
|
}
|
|
@@ -55165,29 +55536,29 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55165
55536
|
try {
|
|
55166
55537
|
this.enterOuterAlt(_localctx, 1);
|
|
55167
55538
|
{
|
|
55168
|
-
this.state = 445;
|
|
55169
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55170
55539
|
this.state = 446;
|
|
55540
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55541
|
+
this.state = 447;
|
|
55171
55542
|
this.match(ForgeParser.ALL_TOK);
|
|
55172
|
-
this.state =
|
|
55543
|
+
this.state = 449;
|
|
55173
55544
|
this._errHandler.sync(this);
|
|
55174
55545
|
switch (this.interpreter.adaptivePredict(this._input, 50, this._ctx)) {
|
|
55175
55546
|
case 1:
|
|
55176
55547
|
{
|
|
55177
|
-
this.state =
|
|
55548
|
+
this.state = 448;
|
|
55178
55549
|
this.match(ForgeParser.DISJ_TOK);
|
|
55179
55550
|
}
|
|
55180
55551
|
break;
|
|
55181
55552
|
}
|
|
55182
|
-
this.state = 450;
|
|
55183
|
-
this.quantDeclList();
|
|
55184
55553
|
this.state = 451;
|
|
55185
|
-
this.
|
|
55554
|
+
this.quantDeclList();
|
|
55186
55555
|
this.state = 452;
|
|
55187
|
-
this.
|
|
55556
|
+
this.match(ForgeParser.BAR_TOK);
|
|
55188
55557
|
this.state = 453;
|
|
55189
|
-
this.
|
|
55558
|
+
this.expr();
|
|
55190
55559
|
this.state = 454;
|
|
55560
|
+
this.match(ForgeParser.IS_TOK);
|
|
55561
|
+
this.state = 455;
|
|
55191
55562
|
_la = this._input.LA(1);
|
|
55192
55563
|
if (!(_la === ForgeParser.SUFFICIENT_TOK || _la === ForgeParser.NECESSARY_TOK)) {
|
|
55193
55564
|
this._errHandler.recoverInline(this);
|
|
@@ -55199,41 +55570,41 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55199
55570
|
this._errHandler.reportMatch(this);
|
|
55200
55571
|
this.consume();
|
|
55201
55572
|
}
|
|
55202
|
-
this.state = 455;
|
|
55203
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55204
55573
|
this.state = 456;
|
|
55574
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55575
|
+
this.state = 457;
|
|
55205
55576
|
this.name();
|
|
55206
|
-
this.state =
|
|
55577
|
+
this.state = 462;
|
|
55207
55578
|
this._errHandler.sync(this);
|
|
55208
55579
|
_la = this._input.LA(1);
|
|
55209
55580
|
if (_la === ForgeParser.LEFT_SQUARE_TOK) {
|
|
55210
55581
|
{
|
|
55211
|
-
this.state = 457;
|
|
55212
|
-
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
55213
55582
|
this.state = 458;
|
|
55214
|
-
this.
|
|
55583
|
+
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
55215
55584
|
this.state = 459;
|
|
55585
|
+
this.exprList();
|
|
55586
|
+
this.state = 460;
|
|
55216
55587
|
this.match(ForgeParser.RIGHT_SQUARE_TOK);
|
|
55217
55588
|
}
|
|
55218
55589
|
}
|
|
55219
|
-
this.state =
|
|
55590
|
+
this.state = 465;
|
|
55220
55591
|
this._errHandler.sync(this);
|
|
55221
55592
|
switch (this.interpreter.adaptivePredict(this._input, 52, this._ctx)) {
|
|
55222
55593
|
case 1:
|
|
55223
55594
|
{
|
|
55224
|
-
this.state =
|
|
55595
|
+
this.state = 464;
|
|
55225
55596
|
this.scope();
|
|
55226
55597
|
}
|
|
55227
55598
|
break;
|
|
55228
55599
|
}
|
|
55229
|
-
this.state =
|
|
55600
|
+
this.state = 469;
|
|
55230
55601
|
this._errHandler.sync(this);
|
|
55231
55602
|
_la = this._input.LA(1);
|
|
55232
55603
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55233
55604
|
{
|
|
55234
|
-
this.state = 466;
|
|
55235
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55236
55605
|
this.state = 467;
|
|
55606
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55607
|
+
this.state = 468;
|
|
55237
55608
|
this.bounds();
|
|
55238
55609
|
}
|
|
55239
55610
|
}
|
|
@@ -55262,13 +55633,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55262
55633
|
try {
|
|
55263
55634
|
this.enterOuterAlt(_localctx, 1);
|
|
55264
55635
|
{
|
|
55265
|
-
this.state = 470;
|
|
55266
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55267
55636
|
this.state = 471;
|
|
55268
|
-
this.
|
|
55637
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55269
55638
|
this.state = 472;
|
|
55270
|
-
this.
|
|
55639
|
+
this.expr();
|
|
55271
55640
|
this.state = 473;
|
|
55641
|
+
this.match(ForgeParser.IS_TOK);
|
|
55642
|
+
this.state = 474;
|
|
55272
55643
|
_la = this._input.LA(1);
|
|
55273
55644
|
if (!(_la === ForgeParser.SUFFICIENT_TOK || _la === ForgeParser.NECESSARY_TOK)) {
|
|
55274
55645
|
this._errHandler.recoverInline(this);
|
|
@@ -55280,28 +55651,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55280
55651
|
this._errHandler.reportMatch(this);
|
|
55281
55652
|
this.consume();
|
|
55282
55653
|
}
|
|
55283
|
-
this.state = 474;
|
|
55284
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55285
55654
|
this.state = 475;
|
|
55655
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55656
|
+
this.state = 476;
|
|
55286
55657
|
this.name();
|
|
55287
|
-
this.state =
|
|
55658
|
+
this.state = 478;
|
|
55288
55659
|
this._errHandler.sync(this);
|
|
55289
55660
|
switch (this.interpreter.adaptivePredict(this._input, 54, this._ctx)) {
|
|
55290
55661
|
case 1:
|
|
55291
55662
|
{
|
|
55292
|
-
this.state =
|
|
55663
|
+
this.state = 477;
|
|
55293
55664
|
this.scope();
|
|
55294
55665
|
}
|
|
55295
55666
|
break;
|
|
55296
55667
|
}
|
|
55297
|
-
this.state =
|
|
55668
|
+
this.state = 482;
|
|
55298
55669
|
this._errHandler.sync(this);
|
|
55299
55670
|
_la = this._input.LA(1);
|
|
55300
55671
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55301
55672
|
{
|
|
55302
|
-
this.state = 479;
|
|
55303
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55304
55673
|
this.state = 480;
|
|
55674
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55675
|
+
this.state = 481;
|
|
55305
55676
|
this.bounds();
|
|
55306
55677
|
}
|
|
55307
55678
|
}
|
|
@@ -55330,13 +55701,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55330
55701
|
try {
|
|
55331
55702
|
this.enterOuterAlt(_localctx, 1);
|
|
55332
55703
|
{
|
|
55333
|
-
this.state = 483;
|
|
55334
|
-
this.match(ForgeParser.ASSERT_TOK);
|
|
55335
55704
|
this.state = 484;
|
|
55336
|
-
this.
|
|
55705
|
+
this.match(ForgeParser.ASSERT_TOK);
|
|
55337
55706
|
this.state = 485;
|
|
55338
|
-
this.
|
|
55707
|
+
this.expr();
|
|
55339
55708
|
this.state = 486;
|
|
55709
|
+
this.match(ForgeParser.IS_TOK);
|
|
55710
|
+
this.state = 487;
|
|
55340
55711
|
_la = this._input.LA(1);
|
|
55341
55712
|
if (!(_la === ForgeParser.CONSISTENT_TOK || _la === ForgeParser.INCONSISTENT_TOK)) {
|
|
55342
55713
|
this._errHandler.recoverInline(this);
|
|
@@ -55348,28 +55719,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55348
55719
|
this._errHandler.reportMatch(this);
|
|
55349
55720
|
this.consume();
|
|
55350
55721
|
}
|
|
55351
|
-
this.state = 487;
|
|
55352
|
-
this.match(ForgeParser.WITH_TOK);
|
|
55353
55722
|
this.state = 488;
|
|
55723
|
+
this.match(ForgeParser.WITH_TOK);
|
|
55724
|
+
this.state = 489;
|
|
55354
55725
|
this.name();
|
|
55355
|
-
this.state =
|
|
55726
|
+
this.state = 491;
|
|
55356
55727
|
this._errHandler.sync(this);
|
|
55357
55728
|
switch (this.interpreter.adaptivePredict(this._input, 56, this._ctx)) {
|
|
55358
55729
|
case 1:
|
|
55359
55730
|
{
|
|
55360
|
-
this.state =
|
|
55731
|
+
this.state = 490;
|
|
55361
55732
|
this.scope();
|
|
55362
55733
|
}
|
|
55363
55734
|
break;
|
|
55364
55735
|
}
|
|
55365
|
-
this.state =
|
|
55736
|
+
this.state = 495;
|
|
55366
55737
|
this._errHandler.sync(this);
|
|
55367
55738
|
_la = this._input.LA(1);
|
|
55368
55739
|
if (_la === ForgeParser.FOR_TOK) {
|
|
55369
55740
|
{
|
|
55370
|
-
this.state = 492;
|
|
55371
|
-
this.match(ForgeParser.FOR_TOK);
|
|
55372
55741
|
this.state = 493;
|
|
55742
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55743
|
+
this.state = 494;
|
|
55373
55744
|
this.bounds();
|
|
55374
55745
|
}
|
|
55375
55746
|
}
|
|
@@ -55398,31 +55769,31 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55398
55769
|
try {
|
|
55399
55770
|
this.enterOuterAlt(_localctx, 1);
|
|
55400
55771
|
{
|
|
55401
|
-
this.state = 496;
|
|
55402
|
-
this.match(ForgeParser.TEST_TOK);
|
|
55403
55772
|
this.state = 497;
|
|
55404
|
-
this.match(ForgeParser.
|
|
55773
|
+
this.match(ForgeParser.TEST_TOK);
|
|
55405
55774
|
this.state = 498;
|
|
55406
|
-
this.match(ForgeParser.
|
|
55775
|
+
this.match(ForgeParser.SUITE_TOK);
|
|
55407
55776
|
this.state = 499;
|
|
55408
|
-
this.
|
|
55777
|
+
this.match(ForgeParser.FOR_TOK);
|
|
55409
55778
|
this.state = 500;
|
|
55779
|
+
this.name();
|
|
55780
|
+
this.state = 501;
|
|
55410
55781
|
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
55411
|
-
this.state =
|
|
55782
|
+
this.state = 505;
|
|
55412
55783
|
this._errHandler.sync(this);
|
|
55413
55784
|
_la = this._input.LA(1);
|
|
55414
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) {
|
|
55415
55786
|
{
|
|
55416
55787
|
{
|
|
55417
|
-
this.state =
|
|
55788
|
+
this.state = 502;
|
|
55418
55789
|
this.testConstruct();
|
|
55419
55790
|
}
|
|
55420
55791
|
}
|
|
55421
|
-
this.state =
|
|
55792
|
+
this.state = 507;
|
|
55422
55793
|
this._errHandler.sync(this);
|
|
55423
55794
|
_la = this._input.LA(1);
|
|
55424
55795
|
}
|
|
55425
|
-
this.state =
|
|
55796
|
+
this.state = 508;
|
|
55426
55797
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
55427
55798
|
}
|
|
55428
55799
|
}
|
|
@@ -55446,48 +55817,48 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55446
55817
|
let _localctx = new TestConstructContext(this._ctx, this.state);
|
|
55447
55818
|
this.enterRule(_localctx, 58, ForgeParser.RULE_testConstruct);
|
|
55448
55819
|
try {
|
|
55449
|
-
this.state =
|
|
55820
|
+
this.state = 516;
|
|
55450
55821
|
this._errHandler.sync(this);
|
|
55451
55822
|
switch (this.interpreter.adaptivePredict(this._input, 59, this._ctx)) {
|
|
55452
55823
|
case 1:
|
|
55453
55824
|
this.enterOuterAlt(_localctx, 1);
|
|
55454
55825
|
{
|
|
55455
|
-
this.state =
|
|
55826
|
+
this.state = 510;
|
|
55456
55827
|
this.exampleDecl();
|
|
55457
55828
|
}
|
|
55458
55829
|
break;
|
|
55459
55830
|
case 2:
|
|
55460
55831
|
this.enterOuterAlt(_localctx, 2);
|
|
55461
55832
|
{
|
|
55462
|
-
this.state =
|
|
55833
|
+
this.state = 511;
|
|
55463
55834
|
this.testExpectDecl();
|
|
55464
55835
|
}
|
|
55465
55836
|
break;
|
|
55466
55837
|
case 3:
|
|
55467
55838
|
this.enterOuterAlt(_localctx, 3);
|
|
55468
55839
|
{
|
|
55469
|
-
this.state =
|
|
55840
|
+
this.state = 512;
|
|
55470
55841
|
this.quantifiedPropertyDecl();
|
|
55471
55842
|
}
|
|
55472
55843
|
break;
|
|
55473
55844
|
case 4:
|
|
55474
55845
|
this.enterOuterAlt(_localctx, 4);
|
|
55475
55846
|
{
|
|
55476
|
-
this.state =
|
|
55847
|
+
this.state = 513;
|
|
55477
55848
|
this.propertyDecl();
|
|
55478
55849
|
}
|
|
55479
55850
|
break;
|
|
55480
55851
|
case 5:
|
|
55481
55852
|
this.enterOuterAlt(_localctx, 5);
|
|
55482
55853
|
{
|
|
55483
|
-
this.state =
|
|
55854
|
+
this.state = 514;
|
|
55484
55855
|
this.satisfiabilityDecl();
|
|
55485
55856
|
}
|
|
55486
55857
|
break;
|
|
55487
55858
|
case 6:
|
|
55488
55859
|
this.enterOuterAlt(_localctx, 6);
|
|
55489
55860
|
{
|
|
55490
|
-
this.state =
|
|
55861
|
+
this.state = 515;
|
|
55491
55862
|
this.consistencyDecl();
|
|
55492
55863
|
}
|
|
55493
55864
|
break;
|
|
@@ -55515,7 +55886,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55515
55886
|
try {
|
|
55516
55887
|
this.enterOuterAlt(_localctx, 1);
|
|
55517
55888
|
{
|
|
55518
|
-
this.state =
|
|
55889
|
+
this.state = 520;
|
|
55519
55890
|
this._errHandler.sync(this);
|
|
55520
55891
|
switch (this._input.LA(1)) {
|
|
55521
55892
|
case ForgeParser.LONE_TOK:
|
|
@@ -55523,13 +55894,13 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55523
55894
|
case ForgeParser.ONE_TOK:
|
|
55524
55895
|
case ForgeParser.TWO_TOK:
|
|
55525
55896
|
{
|
|
55526
|
-
this.state =
|
|
55897
|
+
this.state = 518;
|
|
55527
55898
|
this.mult();
|
|
55528
55899
|
}
|
|
55529
55900
|
break;
|
|
55530
55901
|
case ForgeParser.SET_TOK:
|
|
55531
55902
|
{
|
|
55532
|
-
this.state =
|
|
55903
|
+
this.state = 519;
|
|
55533
55904
|
this.match(ForgeParser.SET_TOK);
|
|
55534
55905
|
}
|
|
55535
55906
|
break;
|
|
@@ -55538,9 +55909,9 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55538
55909
|
default:
|
|
55539
55910
|
break;
|
|
55540
55911
|
}
|
|
55541
|
-
this.state =
|
|
55912
|
+
this.state = 522;
|
|
55542
55913
|
this.match(ForgeParser.ARROW_TOK);
|
|
55543
|
-
this.state =
|
|
55914
|
+
this.state = 525;
|
|
55544
55915
|
this._errHandler.sync(this);
|
|
55545
55916
|
switch (this._input.LA(1)) {
|
|
55546
55917
|
case ForgeParser.LONE_TOK:
|
|
@@ -55548,16 +55919,17 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55548
55919
|
case ForgeParser.ONE_TOK:
|
|
55549
55920
|
case ForgeParser.TWO_TOK:
|
|
55550
55921
|
{
|
|
55551
|
-
this.state =
|
|
55922
|
+
this.state = 523;
|
|
55552
55923
|
this.mult();
|
|
55553
55924
|
}
|
|
55554
55925
|
break;
|
|
55555
55926
|
case ForgeParser.SET_TOK:
|
|
55556
55927
|
{
|
|
55557
|
-
this.state =
|
|
55928
|
+
this.state = 524;
|
|
55558
55929
|
this.match(ForgeParser.SET_TOK);
|
|
55559
55930
|
}
|
|
55560
55931
|
break;
|
|
55932
|
+
case ForgeParser.STRING_TOK:
|
|
55561
55933
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
55562
55934
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
55563
55935
|
case ForgeParser.NONE_TOK:
|
|
@@ -55609,7 +55981,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55609
55981
|
try {
|
|
55610
55982
|
this.enterOuterAlt(_localctx, 1);
|
|
55611
55983
|
{
|
|
55612
|
-
this.state =
|
|
55984
|
+
this.state = 527;
|
|
55613
55985
|
_la = this._input.LA(1);
|
|
55614
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))) {
|
|
55615
55987
|
this._errHandler.recoverInline(this);
|
|
@@ -55645,11 +56017,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55645
56017
|
try {
|
|
55646
56018
|
this.enterOuterAlt(_localctx, 1);
|
|
55647
56019
|
{
|
|
55648
|
-
this.state = 528;
|
|
55649
|
-
this.name();
|
|
55650
56020
|
this.state = 529;
|
|
55651
|
-
this.
|
|
56021
|
+
this.name();
|
|
55652
56022
|
this.state = 530;
|
|
56023
|
+
this.match(ForgeParser.EQ_TOK);
|
|
56024
|
+
this.state = 531;
|
|
55653
56025
|
this.expr();
|
|
55654
56026
|
}
|
|
55655
56027
|
}
|
|
@@ -55676,23 +56048,23 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55676
56048
|
try {
|
|
55677
56049
|
this.enterOuterAlt(_localctx, 1);
|
|
55678
56050
|
{
|
|
55679
|
-
this.state =
|
|
56051
|
+
this.state = 533;
|
|
55680
56052
|
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
55681
|
-
this.state =
|
|
56053
|
+
this.state = 537;
|
|
55682
56054
|
this._errHandler.sync(this);
|
|
55683
56055
|
_la = this._input.LA(1);
|
|
55684
|
-
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)) {
|
|
55685
56057
|
{
|
|
55686
56058
|
{
|
|
55687
|
-
this.state =
|
|
56059
|
+
this.state = 534;
|
|
55688
56060
|
this.expr();
|
|
55689
56061
|
}
|
|
55690
56062
|
}
|
|
55691
|
-
this.state =
|
|
56063
|
+
this.state = 539;
|
|
55692
56064
|
this._errHandler.sync(this);
|
|
55693
56065
|
_la = this._input.LA(1);
|
|
55694
56066
|
}
|
|
55695
|
-
this.state =
|
|
56067
|
+
this.state = 540;
|
|
55696
56068
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
55697
56069
|
}
|
|
55698
56070
|
}
|
|
@@ -55716,22 +56088,22 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55716
56088
|
let _localctx = new BlockOrBarContext(this._ctx, this.state);
|
|
55717
56089
|
this.enterRule(_localctx, 68, ForgeParser.RULE_blockOrBar);
|
|
55718
56090
|
try {
|
|
55719
|
-
this.state =
|
|
56091
|
+
this.state = 545;
|
|
55720
56092
|
this._errHandler.sync(this);
|
|
55721
56093
|
switch (this._input.LA(1)) {
|
|
55722
56094
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
55723
56095
|
this.enterOuterAlt(_localctx, 1);
|
|
55724
56096
|
{
|
|
55725
|
-
this.state =
|
|
56097
|
+
this.state = 542;
|
|
55726
56098
|
this.block();
|
|
55727
56099
|
}
|
|
55728
56100
|
break;
|
|
55729
56101
|
case ForgeParser.BAR_TOK:
|
|
55730
56102
|
this.enterOuterAlt(_localctx, 2);
|
|
55731
56103
|
{
|
|
55732
|
-
this.state = 542;
|
|
55733
|
-
this.match(ForgeParser.BAR_TOK);
|
|
55734
56104
|
this.state = 543;
|
|
56105
|
+
this.match(ForgeParser.BAR_TOK);
|
|
56106
|
+
this.state = 544;
|
|
55735
56107
|
this.expr();
|
|
55736
56108
|
}
|
|
55737
56109
|
break;
|
|
@@ -55759,27 +56131,27 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55759
56131
|
let _localctx = new QuantContext(this._ctx, this.state);
|
|
55760
56132
|
this.enterRule(_localctx, 70, ForgeParser.RULE_quant);
|
|
55761
56133
|
try {
|
|
55762
|
-
this.state =
|
|
56134
|
+
this.state = 551;
|
|
55763
56135
|
this._errHandler.sync(this);
|
|
55764
56136
|
switch (this._input.LA(1)) {
|
|
55765
56137
|
case ForgeParser.ALL_TOK:
|
|
55766
56138
|
this.enterOuterAlt(_localctx, 1);
|
|
55767
56139
|
{
|
|
55768
|
-
this.state =
|
|
56140
|
+
this.state = 547;
|
|
55769
56141
|
this.match(ForgeParser.ALL_TOK);
|
|
55770
56142
|
}
|
|
55771
56143
|
break;
|
|
55772
56144
|
case ForgeParser.NO_TOK:
|
|
55773
56145
|
this.enterOuterAlt(_localctx, 2);
|
|
55774
56146
|
{
|
|
55775
|
-
this.state =
|
|
56147
|
+
this.state = 548;
|
|
55776
56148
|
this.match(ForgeParser.NO_TOK);
|
|
55777
56149
|
}
|
|
55778
56150
|
break;
|
|
55779
56151
|
case ForgeParser.SUM_TOK:
|
|
55780
56152
|
this.enterOuterAlt(_localctx, 3);
|
|
55781
56153
|
{
|
|
55782
|
-
this.state =
|
|
56154
|
+
this.state = 549;
|
|
55783
56155
|
this.match(ForgeParser.SUM_TOK);
|
|
55784
56156
|
}
|
|
55785
56157
|
break;
|
|
@@ -55789,7 +56161,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55789
56161
|
case ForgeParser.TWO_TOK:
|
|
55790
56162
|
this.enterOuterAlt(_localctx, 4);
|
|
55791
56163
|
{
|
|
55792
|
-
this.state =
|
|
56164
|
+
this.state = 550;
|
|
55793
56165
|
this.mult();
|
|
55794
56166
|
}
|
|
55795
56167
|
break;
|
|
@@ -55819,7 +56191,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55819
56191
|
let _la;
|
|
55820
56192
|
try {
|
|
55821
56193
|
let _alt;
|
|
55822
|
-
this.state =
|
|
56194
|
+
this.state = 568;
|
|
55823
56195
|
this._errHandler.sync(this);
|
|
55824
56196
|
switch (this._input.LA(1)) {
|
|
55825
56197
|
case ForgeParser.THIS_TOK:
|
|
@@ -55827,50 +56199,50 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55827
56199
|
case ForgeParser.IDENTIFIER_TOK:
|
|
55828
56200
|
this.enterOuterAlt(_localctx, 1);
|
|
55829
56201
|
{
|
|
55830
|
-
this.state =
|
|
56202
|
+
this.state = 555;
|
|
55831
56203
|
this._errHandler.sync(this);
|
|
55832
56204
|
_la = this._input.LA(1);
|
|
55833
56205
|
if (_la === ForgeParser.THIS_TOK) {
|
|
55834
56206
|
{
|
|
55835
|
-
this.state = 552;
|
|
55836
|
-
this.match(ForgeParser.THIS_TOK);
|
|
55837
56207
|
this.state = 553;
|
|
56208
|
+
this.match(ForgeParser.THIS_TOK);
|
|
56209
|
+
this.state = 554;
|
|
55838
56210
|
this.match(ForgeParser.SLASH_TOK);
|
|
55839
56211
|
}
|
|
55840
56212
|
}
|
|
55841
|
-
this.state =
|
|
56213
|
+
this.state = 562;
|
|
55842
56214
|
this._errHandler.sync(this);
|
|
55843
56215
|
_alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx);
|
|
55844
56216
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
55845
56217
|
if (_alt === 1) {
|
|
55846
56218
|
{
|
|
55847
56219
|
{
|
|
55848
|
-
this.state = 556;
|
|
55849
|
-
this.name();
|
|
55850
56220
|
this.state = 557;
|
|
56221
|
+
this.name();
|
|
56222
|
+
this.state = 558;
|
|
55851
56223
|
this.match(ForgeParser.SLASH_TOK);
|
|
55852
56224
|
}
|
|
55853
56225
|
}
|
|
55854
56226
|
}
|
|
55855
|
-
this.state =
|
|
56227
|
+
this.state = 564;
|
|
55856
56228
|
this._errHandler.sync(this);
|
|
55857
56229
|
_alt = this.interpreter.adaptivePredict(this._input, 66, this._ctx);
|
|
55858
56230
|
}
|
|
55859
|
-
this.state =
|
|
56231
|
+
this.state = 565;
|
|
55860
56232
|
this.name();
|
|
55861
56233
|
}
|
|
55862
56234
|
break;
|
|
55863
56235
|
case ForgeParser.INT_TOK:
|
|
55864
56236
|
this.enterOuterAlt(_localctx, 2);
|
|
55865
56237
|
{
|
|
55866
|
-
this.state =
|
|
56238
|
+
this.state = 566;
|
|
55867
56239
|
this.match(ForgeParser.INT_TOK);
|
|
55868
56240
|
}
|
|
55869
56241
|
break;
|
|
55870
56242
|
case ForgeParser.SUM_TOK:
|
|
55871
56243
|
this.enterOuterAlt(_localctx, 3);
|
|
55872
56244
|
{
|
|
55873
|
-
this.state =
|
|
56245
|
+
this.state = 567;
|
|
55874
56246
|
this.match(ForgeParser.SUM_TOK);
|
|
55875
56247
|
}
|
|
55876
56248
|
break;
|
|
@@ -55901,11 +56273,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55901
56273
|
try {
|
|
55902
56274
|
this.enterOuterAlt(_localctx, 1);
|
|
55903
56275
|
{
|
|
55904
|
-
this.state = 569;
|
|
55905
|
-
this.match(ForgeParser.OPTION_TOK);
|
|
55906
56276
|
this.state = 570;
|
|
56277
|
+
this.match(ForgeParser.OPTION_TOK);
|
|
56278
|
+
this.state = 571;
|
|
55907
56279
|
this.qualName();
|
|
55908
|
-
this.state =
|
|
56280
|
+
this.state = 578;
|
|
55909
56281
|
this._errHandler.sync(this);
|
|
55910
56282
|
switch (this._input.LA(1)) {
|
|
55911
56283
|
case ForgeParser.THIS_TOK:
|
|
@@ -55914,29 +56286,29 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55914
56286
|
case ForgeParser.QUOTED_IDENTIFIER_TOK:
|
|
55915
56287
|
case ForgeParser.IDENTIFIER_TOK:
|
|
55916
56288
|
{
|
|
55917
|
-
this.state =
|
|
56289
|
+
this.state = 572;
|
|
55918
56290
|
this.qualName();
|
|
55919
56291
|
}
|
|
55920
56292
|
break;
|
|
55921
|
-
case ForgeParser.
|
|
56293
|
+
case ForgeParser.STRING_TOK:
|
|
55922
56294
|
{
|
|
55923
|
-
this.state =
|
|
55924
|
-
this.match(ForgeParser.
|
|
56295
|
+
this.state = 573;
|
|
56296
|
+
this.match(ForgeParser.STRING_TOK);
|
|
55925
56297
|
}
|
|
55926
56298
|
break;
|
|
55927
56299
|
case ForgeParser.MINUS_TOK:
|
|
55928
56300
|
case ForgeParser.NUM_CONST_TOK:
|
|
55929
56301
|
{
|
|
55930
|
-
this.state =
|
|
56302
|
+
this.state = 575;
|
|
55931
56303
|
this._errHandler.sync(this);
|
|
55932
56304
|
_la = this._input.LA(1);
|
|
55933
56305
|
if (_la === ForgeParser.MINUS_TOK) {
|
|
55934
56306
|
{
|
|
55935
|
-
this.state =
|
|
56307
|
+
this.state = 574;
|
|
55936
56308
|
this.match(ForgeParser.MINUS_TOK);
|
|
55937
56309
|
}
|
|
55938
56310
|
}
|
|
55939
|
-
this.state =
|
|
56311
|
+
this.state = 577;
|
|
55940
56312
|
this.number();
|
|
55941
56313
|
}
|
|
55942
56314
|
break;
|
|
@@ -55968,7 +56340,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
55968
56340
|
try {
|
|
55969
56341
|
this.enterOuterAlt(_localctx, 1);
|
|
55970
56342
|
{
|
|
55971
|
-
this.state =
|
|
56343
|
+
this.state = 580;
|
|
55972
56344
|
_la = this._input.LA(1);
|
|
55973
56345
|
if (!(_la === ForgeParser.QUOTED_IDENTIFIER_TOK || _la === ForgeParser.IDENTIFIER_TOK)) {
|
|
55974
56346
|
this._errHandler.recoverInline(this);
|
|
@@ -56002,24 +56374,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56002
56374
|
let _localctx = new NameListContext(this._ctx, this.state);
|
|
56003
56375
|
this.enterRule(_localctx, 78, ForgeParser.RULE_nameList);
|
|
56004
56376
|
try {
|
|
56005
|
-
this.state =
|
|
56377
|
+
this.state = 587;
|
|
56006
56378
|
this._errHandler.sync(this);
|
|
56007
56379
|
switch (this.interpreter.adaptivePredict(this._input, 70, this._ctx)) {
|
|
56008
56380
|
case 1:
|
|
56009
56381
|
this.enterOuterAlt(_localctx, 1);
|
|
56010
56382
|
{
|
|
56011
|
-
this.state =
|
|
56383
|
+
this.state = 582;
|
|
56012
56384
|
this.name();
|
|
56013
56385
|
}
|
|
56014
56386
|
break;
|
|
56015
56387
|
case 2:
|
|
56016
56388
|
this.enterOuterAlt(_localctx, 2);
|
|
56017
56389
|
{
|
|
56018
|
-
this.state = 582;
|
|
56019
|
-
this.name();
|
|
56020
56390
|
this.state = 583;
|
|
56021
|
-
this.
|
|
56391
|
+
this.name();
|
|
56022
56392
|
this.state = 584;
|
|
56393
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56394
|
+
this.state = 585;
|
|
56023
56395
|
this.nameList();
|
|
56024
56396
|
}
|
|
56025
56397
|
break;
|
|
@@ -56045,24 +56417,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56045
56417
|
let _localctx = new QualNameListContext(this._ctx, this.state);
|
|
56046
56418
|
this.enterRule(_localctx, 80, ForgeParser.RULE_qualNameList);
|
|
56047
56419
|
try {
|
|
56048
|
-
this.state =
|
|
56420
|
+
this.state = 594;
|
|
56049
56421
|
this._errHandler.sync(this);
|
|
56050
56422
|
switch (this.interpreter.adaptivePredict(this._input, 71, this._ctx)) {
|
|
56051
56423
|
case 1:
|
|
56052
56424
|
this.enterOuterAlt(_localctx, 1);
|
|
56053
56425
|
{
|
|
56054
|
-
this.state =
|
|
56426
|
+
this.state = 589;
|
|
56055
56427
|
this.qualName();
|
|
56056
56428
|
}
|
|
56057
56429
|
break;
|
|
56058
56430
|
case 2:
|
|
56059
56431
|
this.enterOuterAlt(_localctx, 2);
|
|
56060
56432
|
{
|
|
56061
|
-
this.state = 589;
|
|
56062
|
-
this.qualName();
|
|
56063
56433
|
this.state = 590;
|
|
56064
|
-
this.
|
|
56434
|
+
this.qualName();
|
|
56065
56435
|
this.state = 591;
|
|
56436
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56437
|
+
this.state = 592;
|
|
56066
56438
|
this.qualNameList();
|
|
56067
56439
|
}
|
|
56068
56440
|
break;
|
|
@@ -56088,24 +56460,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56088
56460
|
let _localctx = new ParaDeclListContext(this._ctx, this.state);
|
|
56089
56461
|
this.enterRule(_localctx, 82, ForgeParser.RULE_paraDeclList);
|
|
56090
56462
|
try {
|
|
56091
|
-
this.state =
|
|
56463
|
+
this.state = 601;
|
|
56092
56464
|
this._errHandler.sync(this);
|
|
56093
56465
|
switch (this.interpreter.adaptivePredict(this._input, 72, this._ctx)) {
|
|
56094
56466
|
case 1:
|
|
56095
56467
|
this.enterOuterAlt(_localctx, 1);
|
|
56096
56468
|
{
|
|
56097
|
-
this.state =
|
|
56469
|
+
this.state = 596;
|
|
56098
56470
|
this.paraDecl();
|
|
56099
56471
|
}
|
|
56100
56472
|
break;
|
|
56101
56473
|
case 2:
|
|
56102
56474
|
this.enterOuterAlt(_localctx, 2);
|
|
56103
56475
|
{
|
|
56104
|
-
this.state = 596;
|
|
56105
|
-
this.paraDecl();
|
|
56106
56476
|
this.state = 597;
|
|
56107
|
-
this.
|
|
56477
|
+
this.paraDecl();
|
|
56108
56478
|
this.state = 598;
|
|
56479
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56480
|
+
this.state = 599;
|
|
56109
56481
|
this.paraDeclList();
|
|
56110
56482
|
}
|
|
56111
56483
|
break;
|
|
@@ -56131,24 +56503,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56131
56503
|
let _localctx = new QuantDeclListContext(this._ctx, this.state);
|
|
56132
56504
|
this.enterRule(_localctx, 84, ForgeParser.RULE_quantDeclList);
|
|
56133
56505
|
try {
|
|
56134
|
-
this.state =
|
|
56506
|
+
this.state = 608;
|
|
56135
56507
|
this._errHandler.sync(this);
|
|
56136
56508
|
switch (this.interpreter.adaptivePredict(this._input, 73, this._ctx)) {
|
|
56137
56509
|
case 1:
|
|
56138
56510
|
this.enterOuterAlt(_localctx, 1);
|
|
56139
56511
|
{
|
|
56140
|
-
this.state =
|
|
56512
|
+
this.state = 603;
|
|
56141
56513
|
this.quantDecl();
|
|
56142
56514
|
}
|
|
56143
56515
|
break;
|
|
56144
56516
|
case 2:
|
|
56145
56517
|
this.enterOuterAlt(_localctx, 2);
|
|
56146
56518
|
{
|
|
56147
|
-
this.state = 603;
|
|
56148
|
-
this.quantDecl();
|
|
56149
56519
|
this.state = 604;
|
|
56150
|
-
this.
|
|
56520
|
+
this.quantDecl();
|
|
56151
56521
|
this.state = 605;
|
|
56522
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56523
|
+
this.state = 606;
|
|
56152
56524
|
this.quantDeclList();
|
|
56153
56525
|
}
|
|
56154
56526
|
break;
|
|
@@ -56174,24 +56546,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56174
56546
|
let _localctx = new ArrowDeclListContext(this._ctx, this.state);
|
|
56175
56547
|
this.enterRule(_localctx, 86, ForgeParser.RULE_arrowDeclList);
|
|
56176
56548
|
try {
|
|
56177
|
-
this.state =
|
|
56549
|
+
this.state = 615;
|
|
56178
56550
|
this._errHandler.sync(this);
|
|
56179
56551
|
switch (this.interpreter.adaptivePredict(this._input, 74, this._ctx)) {
|
|
56180
56552
|
case 1:
|
|
56181
56553
|
this.enterOuterAlt(_localctx, 1);
|
|
56182
56554
|
{
|
|
56183
|
-
this.state =
|
|
56555
|
+
this.state = 610;
|
|
56184
56556
|
this.arrowDecl();
|
|
56185
56557
|
}
|
|
56186
56558
|
break;
|
|
56187
56559
|
case 2:
|
|
56188
56560
|
this.enterOuterAlt(_localctx, 2);
|
|
56189
56561
|
{
|
|
56190
|
-
this.state = 610;
|
|
56191
|
-
this.arrowDecl();
|
|
56192
56562
|
this.state = 611;
|
|
56193
|
-
this.
|
|
56563
|
+
this.arrowDecl();
|
|
56194
56564
|
this.state = 612;
|
|
56565
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56566
|
+
this.state = 613;
|
|
56195
56567
|
this.arrowDeclList();
|
|
56196
56568
|
}
|
|
56197
56569
|
break;
|
|
@@ -56217,24 +56589,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56217
56589
|
let _localctx = new LetDeclListContext(this._ctx, this.state);
|
|
56218
56590
|
this.enterRule(_localctx, 88, ForgeParser.RULE_letDeclList);
|
|
56219
56591
|
try {
|
|
56220
|
-
this.state =
|
|
56592
|
+
this.state = 622;
|
|
56221
56593
|
this._errHandler.sync(this);
|
|
56222
56594
|
switch (this.interpreter.adaptivePredict(this._input, 75, this._ctx)) {
|
|
56223
56595
|
case 1:
|
|
56224
56596
|
this.enterOuterAlt(_localctx, 1);
|
|
56225
56597
|
{
|
|
56226
|
-
this.state =
|
|
56598
|
+
this.state = 617;
|
|
56227
56599
|
this.letDecl();
|
|
56228
56600
|
}
|
|
56229
56601
|
break;
|
|
56230
56602
|
case 2:
|
|
56231
56603
|
this.enterOuterAlt(_localctx, 2);
|
|
56232
56604
|
{
|
|
56233
|
-
this.state = 617;
|
|
56234
|
-
this.letDecl();
|
|
56235
56605
|
this.state = 618;
|
|
56236
|
-
this.
|
|
56606
|
+
this.letDecl();
|
|
56237
56607
|
this.state = 619;
|
|
56608
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56609
|
+
this.state = 620;
|
|
56238
56610
|
this.letDeclList();
|
|
56239
56611
|
}
|
|
56240
56612
|
break;
|
|
@@ -56260,24 +56632,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56260
56632
|
let _localctx = new TypescopeListContext(this._ctx, this.state);
|
|
56261
56633
|
this.enterRule(_localctx, 90, ForgeParser.RULE_typescopeList);
|
|
56262
56634
|
try {
|
|
56263
|
-
this.state =
|
|
56635
|
+
this.state = 629;
|
|
56264
56636
|
this._errHandler.sync(this);
|
|
56265
56637
|
switch (this.interpreter.adaptivePredict(this._input, 76, this._ctx)) {
|
|
56266
56638
|
case 1:
|
|
56267
56639
|
this.enterOuterAlt(_localctx, 1);
|
|
56268
56640
|
{
|
|
56269
|
-
this.state =
|
|
56641
|
+
this.state = 624;
|
|
56270
56642
|
this.typescope();
|
|
56271
56643
|
}
|
|
56272
56644
|
break;
|
|
56273
56645
|
case 2:
|
|
56274
56646
|
this.enterOuterAlt(_localctx, 2);
|
|
56275
56647
|
{
|
|
56276
|
-
this.state = 624;
|
|
56277
|
-
this.typescope();
|
|
56278
56648
|
this.state = 625;
|
|
56279
|
-
this.
|
|
56649
|
+
this.typescope();
|
|
56280
56650
|
this.state = 626;
|
|
56651
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56652
|
+
this.state = 627;
|
|
56281
56653
|
this.typescopeList();
|
|
56282
56654
|
}
|
|
56283
56655
|
break;
|
|
@@ -56303,24 +56675,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56303
56675
|
let _localctx = new ExprListContext(this._ctx, this.state);
|
|
56304
56676
|
this.enterRule(_localctx, 92, ForgeParser.RULE_exprList);
|
|
56305
56677
|
try {
|
|
56306
|
-
this.state =
|
|
56678
|
+
this.state = 636;
|
|
56307
56679
|
this._errHandler.sync(this);
|
|
56308
56680
|
switch (this.interpreter.adaptivePredict(this._input, 77, this._ctx)) {
|
|
56309
56681
|
case 1:
|
|
56310
56682
|
this.enterOuterAlt(_localctx, 1);
|
|
56311
56683
|
{
|
|
56312
|
-
this.state =
|
|
56684
|
+
this.state = 631;
|
|
56313
56685
|
this.expr();
|
|
56314
56686
|
}
|
|
56315
56687
|
break;
|
|
56316
56688
|
case 2:
|
|
56317
56689
|
this.enterOuterAlt(_localctx, 2);
|
|
56318
56690
|
{
|
|
56319
|
-
this.state = 631;
|
|
56320
|
-
this.expr();
|
|
56321
56691
|
this.state = 632;
|
|
56322
|
-
this.
|
|
56692
|
+
this.expr();
|
|
56323
56693
|
this.state = 633;
|
|
56694
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
56695
|
+
this.state = 634;
|
|
56324
56696
|
this.exprList();
|
|
56325
56697
|
}
|
|
56326
56698
|
break;
|
|
@@ -56346,56 +56718,56 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56346
56718
|
let _localctx = new ExprContext(this._ctx, this.state);
|
|
56347
56719
|
this.enterRule(_localctx, 94, ForgeParser.RULE_expr);
|
|
56348
56720
|
try {
|
|
56349
|
-
this.state =
|
|
56721
|
+
this.state = 654;
|
|
56350
56722
|
this._errHandler.sync(this);
|
|
56351
56723
|
switch (this.interpreter.adaptivePredict(this._input, 79, this._ctx)) {
|
|
56352
56724
|
case 1:
|
|
56353
56725
|
this.enterOuterAlt(_localctx, 1);
|
|
56354
56726
|
{
|
|
56355
|
-
this.state =
|
|
56727
|
+
this.state = 638;
|
|
56356
56728
|
this.expr1(0);
|
|
56357
56729
|
}
|
|
56358
56730
|
break;
|
|
56359
56731
|
case 2:
|
|
56360
56732
|
this.enterOuterAlt(_localctx, 2);
|
|
56361
56733
|
{
|
|
56362
|
-
this.state = 638;
|
|
56363
|
-
this.match(ForgeParser.LET_TOK);
|
|
56364
56734
|
this.state = 639;
|
|
56365
|
-
this.
|
|
56735
|
+
this.match(ForgeParser.LET_TOK);
|
|
56366
56736
|
this.state = 640;
|
|
56737
|
+
this.letDeclList();
|
|
56738
|
+
this.state = 641;
|
|
56367
56739
|
this.blockOrBar();
|
|
56368
56740
|
}
|
|
56369
56741
|
break;
|
|
56370
56742
|
case 3:
|
|
56371
56743
|
this.enterOuterAlt(_localctx, 3);
|
|
56372
56744
|
{
|
|
56373
|
-
this.state = 642;
|
|
56374
|
-
this.match(ForgeParser.BIND_TOK);
|
|
56375
56745
|
this.state = 643;
|
|
56376
|
-
this.
|
|
56746
|
+
this.match(ForgeParser.BIND_TOK);
|
|
56377
56747
|
this.state = 644;
|
|
56748
|
+
this.letDeclList();
|
|
56749
|
+
this.state = 645;
|
|
56378
56750
|
this.blockOrBar();
|
|
56379
56751
|
}
|
|
56380
56752
|
break;
|
|
56381
56753
|
case 4:
|
|
56382
56754
|
this.enterOuterAlt(_localctx, 4);
|
|
56383
56755
|
{
|
|
56384
|
-
this.state =
|
|
56756
|
+
this.state = 647;
|
|
56385
56757
|
this.quant();
|
|
56386
|
-
this.state =
|
|
56758
|
+
this.state = 649;
|
|
56387
56759
|
this._errHandler.sync(this);
|
|
56388
56760
|
switch (this.interpreter.adaptivePredict(this._input, 78, this._ctx)) {
|
|
56389
56761
|
case 1:
|
|
56390
56762
|
{
|
|
56391
|
-
this.state =
|
|
56763
|
+
this.state = 648;
|
|
56392
56764
|
this.match(ForgeParser.DISJ_TOK);
|
|
56393
56765
|
}
|
|
56394
56766
|
break;
|
|
56395
56767
|
}
|
|
56396
|
-
this.state = 650;
|
|
56397
|
-
this.quantDeclList();
|
|
56398
56768
|
this.state = 651;
|
|
56769
|
+
this.quantDeclList();
|
|
56770
|
+
this.state = 652;
|
|
56399
56771
|
this.blockOrBar();
|
|
56400
56772
|
}
|
|
56401
56773
|
break;
|
|
@@ -56432,11 +56804,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56432
56804
|
this.enterOuterAlt(_localctx, 1);
|
|
56433
56805
|
{
|
|
56434
56806
|
{
|
|
56435
|
-
this.state =
|
|
56807
|
+
this.state = 657;
|
|
56436
56808
|
this.expr1_5(0);
|
|
56437
56809
|
}
|
|
56438
56810
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56439
|
-
this.state =
|
|
56811
|
+
this.state = 664;
|
|
56440
56812
|
this._errHandler.sync(this);
|
|
56441
56813
|
_alt = this.interpreter.adaptivePredict(this._input, 80, this._ctx);
|
|
56442
56814
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56449,18 +56821,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56449
56821
|
{
|
|
56450
56822
|
_localctx = new Expr1Context(_parentctx, _parentState);
|
|
56451
56823
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr1);
|
|
56452
|
-
this.state =
|
|
56824
|
+
this.state = 659;
|
|
56453
56825
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56454
56826
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56455
56827
|
}
|
|
56456
|
-
this.state = 659;
|
|
56457
|
-
this.match(ForgeParser.OR_TOK);
|
|
56458
56828
|
this.state = 660;
|
|
56829
|
+
this.match(ForgeParser.OR_TOK);
|
|
56830
|
+
this.state = 661;
|
|
56459
56831
|
this.expr1_5(0);
|
|
56460
56832
|
}
|
|
56461
56833
|
}
|
|
56462
56834
|
}
|
|
56463
|
-
this.state =
|
|
56835
|
+
this.state = 666;
|
|
56464
56836
|
this._errHandler.sync(this);
|
|
56465
56837
|
_alt = this.interpreter.adaptivePredict(this._input, 80, this._ctx);
|
|
56466
56838
|
}
|
|
@@ -56497,11 +56869,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56497
56869
|
this.enterOuterAlt(_localctx, 1);
|
|
56498
56870
|
{
|
|
56499
56871
|
{
|
|
56500
|
-
this.state =
|
|
56872
|
+
this.state = 668;
|
|
56501
56873
|
this.expr2(0);
|
|
56502
56874
|
}
|
|
56503
56875
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56504
|
-
this.state =
|
|
56876
|
+
this.state = 675;
|
|
56505
56877
|
this._errHandler.sync(this);
|
|
56506
56878
|
_alt = this.interpreter.adaptivePredict(this._input, 81, this._ctx);
|
|
56507
56879
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56514,18 +56886,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56514
56886
|
{
|
|
56515
56887
|
_localctx = new Expr1_5Context(_parentctx, _parentState);
|
|
56516
56888
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr1_5);
|
|
56517
|
-
this.state =
|
|
56889
|
+
this.state = 670;
|
|
56518
56890
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56519
56891
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56520
56892
|
}
|
|
56521
|
-
this.state = 670;
|
|
56522
|
-
this.match(ForgeParser.XOR_TOK);
|
|
56523
56893
|
this.state = 671;
|
|
56894
|
+
this.match(ForgeParser.XOR_TOK);
|
|
56895
|
+
this.state = 672;
|
|
56524
56896
|
this.expr2(0);
|
|
56525
56897
|
}
|
|
56526
56898
|
}
|
|
56527
56899
|
}
|
|
56528
|
-
this.state =
|
|
56900
|
+
this.state = 677;
|
|
56529
56901
|
this._errHandler.sync(this);
|
|
56530
56902
|
_alt = this.interpreter.adaptivePredict(this._input, 81, this._ctx);
|
|
56531
56903
|
}
|
|
@@ -56562,11 +56934,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56562
56934
|
this.enterOuterAlt(_localctx, 1);
|
|
56563
56935
|
{
|
|
56564
56936
|
{
|
|
56565
|
-
this.state =
|
|
56937
|
+
this.state = 679;
|
|
56566
56938
|
this.expr3();
|
|
56567
56939
|
}
|
|
56568
56940
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56569
|
-
this.state =
|
|
56941
|
+
this.state = 686;
|
|
56570
56942
|
this._errHandler.sync(this);
|
|
56571
56943
|
_alt = this.interpreter.adaptivePredict(this._input, 82, this._ctx);
|
|
56572
56944
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56579,18 +56951,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56579
56951
|
{
|
|
56580
56952
|
_localctx = new Expr2Context(_parentctx, _parentState);
|
|
56581
56953
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr2);
|
|
56582
|
-
this.state =
|
|
56954
|
+
this.state = 681;
|
|
56583
56955
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56584
56956
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56585
56957
|
}
|
|
56586
|
-
this.state = 681;
|
|
56587
|
-
this.match(ForgeParser.IFF_TOK);
|
|
56588
56958
|
this.state = 682;
|
|
56959
|
+
this.match(ForgeParser.IFF_TOK);
|
|
56960
|
+
this.state = 683;
|
|
56589
56961
|
this.expr3();
|
|
56590
56962
|
}
|
|
56591
56963
|
}
|
|
56592
56964
|
}
|
|
56593
|
-
this.state =
|
|
56965
|
+
this.state = 688;
|
|
56594
56966
|
this._errHandler.sync(this);
|
|
56595
56967
|
_alt = this.interpreter.adaptivePredict(this._input, 82, this._ctx);
|
|
56596
56968
|
}
|
|
@@ -56616,33 +56988,33 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56616
56988
|
let _localctx = new Expr3Context(this._ctx, this.state);
|
|
56617
56989
|
this.enterRule(_localctx, 102, ForgeParser.RULE_expr3);
|
|
56618
56990
|
try {
|
|
56619
|
-
this.state =
|
|
56991
|
+
this.state = 697;
|
|
56620
56992
|
this._errHandler.sync(this);
|
|
56621
56993
|
switch (this.interpreter.adaptivePredict(this._input, 84, this._ctx)) {
|
|
56622
56994
|
case 1:
|
|
56623
56995
|
this.enterOuterAlt(_localctx, 1);
|
|
56624
56996
|
{
|
|
56625
|
-
this.state =
|
|
56997
|
+
this.state = 689;
|
|
56626
56998
|
this.expr4(0);
|
|
56627
56999
|
}
|
|
56628
57000
|
break;
|
|
56629
57001
|
case 2:
|
|
56630
57002
|
this.enterOuterAlt(_localctx, 2);
|
|
56631
57003
|
{
|
|
56632
|
-
this.state = 689;
|
|
56633
|
-
this.expr4(0);
|
|
56634
57004
|
this.state = 690;
|
|
56635
|
-
this.
|
|
57005
|
+
this.expr4(0);
|
|
56636
57006
|
this.state = 691;
|
|
57007
|
+
this.match(ForgeParser.IMP_TOK);
|
|
57008
|
+
this.state = 692;
|
|
56637
57009
|
this.expr3();
|
|
56638
|
-
this.state =
|
|
57010
|
+
this.state = 695;
|
|
56639
57011
|
this._errHandler.sync(this);
|
|
56640
57012
|
switch (this.interpreter.adaptivePredict(this._input, 83, this._ctx)) {
|
|
56641
57013
|
case 1:
|
|
56642
57014
|
{
|
|
56643
|
-
this.state = 692;
|
|
56644
|
-
this.match(ForgeParser.ELSE_TOK);
|
|
56645
57015
|
this.state = 693;
|
|
57016
|
+
this.match(ForgeParser.ELSE_TOK);
|
|
57017
|
+
this.state = 694;
|
|
56646
57018
|
this.expr3();
|
|
56647
57019
|
}
|
|
56648
57020
|
break;
|
|
@@ -56682,11 +57054,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56682
57054
|
this.enterOuterAlt(_localctx, 1);
|
|
56683
57055
|
{
|
|
56684
57056
|
{
|
|
56685
|
-
this.state =
|
|
57057
|
+
this.state = 700;
|
|
56686
57058
|
this.expr4_5();
|
|
56687
57059
|
}
|
|
56688
57060
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56689
|
-
this.state =
|
|
57061
|
+
this.state = 707;
|
|
56690
57062
|
this._errHandler.sync(this);
|
|
56691
57063
|
_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);
|
|
56692
57064
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56699,18 +57071,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56699
57071
|
{
|
|
56700
57072
|
_localctx = new Expr4Context(_parentctx, _parentState);
|
|
56701
57073
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr4);
|
|
56702
|
-
this.state =
|
|
57074
|
+
this.state = 702;
|
|
56703
57075
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56704
57076
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56705
57077
|
}
|
|
56706
|
-
this.state = 702;
|
|
56707
|
-
this.match(ForgeParser.AND_TOK);
|
|
56708
57078
|
this.state = 703;
|
|
57079
|
+
this.match(ForgeParser.AND_TOK);
|
|
57080
|
+
this.state = 704;
|
|
56709
57081
|
this.expr4_5();
|
|
56710
57082
|
}
|
|
56711
57083
|
}
|
|
56712
57084
|
}
|
|
56713
|
-
this.state =
|
|
57085
|
+
this.state = 709;
|
|
56714
57086
|
this._errHandler.sync(this);
|
|
56715
57087
|
_alt = this.interpreter.adaptivePredict(this._input, 85, this._ctx);
|
|
56716
57088
|
}
|
|
@@ -56736,57 +57108,57 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56736
57108
|
let _localctx = new Expr4_5Context(this._ctx, this.state);
|
|
56737
57109
|
this.enterRule(_localctx, 106, ForgeParser.RULE_expr4_5);
|
|
56738
57110
|
try {
|
|
56739
|
-
this.state =
|
|
57111
|
+
this.state = 727;
|
|
56740
57112
|
this._errHandler.sync(this);
|
|
56741
57113
|
switch (this.interpreter.adaptivePredict(this._input, 86, this._ctx)) {
|
|
56742
57114
|
case 1:
|
|
56743
57115
|
this.enterOuterAlt(_localctx, 1);
|
|
56744
57116
|
{
|
|
56745
|
-
this.state =
|
|
57117
|
+
this.state = 710;
|
|
56746
57118
|
this.expr5();
|
|
56747
57119
|
}
|
|
56748
57120
|
break;
|
|
56749
57121
|
case 2:
|
|
56750
57122
|
this.enterOuterAlt(_localctx, 2);
|
|
56751
57123
|
{
|
|
56752
|
-
this.state = 710;
|
|
56753
|
-
this.expr5();
|
|
56754
57124
|
this.state = 711;
|
|
56755
|
-
this.
|
|
57125
|
+
this.expr5();
|
|
56756
57126
|
this.state = 712;
|
|
57127
|
+
this.match(ForgeParser.UNTIL_TOK);
|
|
57128
|
+
this.state = 713;
|
|
56757
57129
|
this.expr5();
|
|
56758
57130
|
}
|
|
56759
57131
|
break;
|
|
56760
57132
|
case 3:
|
|
56761
57133
|
this.enterOuterAlt(_localctx, 3);
|
|
56762
57134
|
{
|
|
56763
|
-
this.state = 714;
|
|
56764
|
-
this.expr5();
|
|
56765
57135
|
this.state = 715;
|
|
56766
|
-
this.
|
|
57136
|
+
this.expr5();
|
|
56767
57137
|
this.state = 716;
|
|
57138
|
+
this.match(ForgeParser.RELEASE_TOK);
|
|
57139
|
+
this.state = 717;
|
|
56768
57140
|
this.expr5();
|
|
56769
57141
|
}
|
|
56770
57142
|
break;
|
|
56771
57143
|
case 4:
|
|
56772
57144
|
this.enterOuterAlt(_localctx, 4);
|
|
56773
57145
|
{
|
|
56774
|
-
this.state = 718;
|
|
56775
|
-
this.expr5();
|
|
56776
57146
|
this.state = 719;
|
|
56777
|
-
this.
|
|
57147
|
+
this.expr5();
|
|
56778
57148
|
this.state = 720;
|
|
57149
|
+
this.match(ForgeParser.SINCE_TOK);
|
|
57150
|
+
this.state = 721;
|
|
56779
57151
|
this.expr5();
|
|
56780
57152
|
}
|
|
56781
57153
|
break;
|
|
56782
57154
|
case 5:
|
|
56783
57155
|
this.enterOuterAlt(_localctx, 5);
|
|
56784
57156
|
{
|
|
56785
|
-
this.state = 722;
|
|
56786
|
-
this.expr5();
|
|
56787
57157
|
this.state = 723;
|
|
56788
|
-
this.
|
|
57158
|
+
this.expr5();
|
|
56789
57159
|
this.state = 724;
|
|
57160
|
+
this.match(ForgeParser.TRIGGERED_TOK);
|
|
57161
|
+
this.state = 725;
|
|
56790
57162
|
this.expr5();
|
|
56791
57163
|
}
|
|
56792
57164
|
break;
|
|
@@ -56812,9 +57184,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56812
57184
|
let _localctx = new Expr5Context(this._ctx, this.state);
|
|
56813
57185
|
this.enterRule(_localctx, 108, ForgeParser.RULE_expr5);
|
|
56814
57186
|
try {
|
|
56815
|
-
this.state =
|
|
57187
|
+
this.state = 744;
|
|
56816
57188
|
this._errHandler.sync(this);
|
|
56817
57189
|
switch (this._input.LA(1)) {
|
|
57190
|
+
case ForgeParser.STRING_TOK:
|
|
56818
57191
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
56819
57192
|
case ForgeParser.LONE_TOK:
|
|
56820
57193
|
case ForgeParser.SOME_TOK:
|
|
@@ -56846,70 +57219,70 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56846
57219
|
case ForgeParser.IDENTIFIER_TOK:
|
|
56847
57220
|
this.enterOuterAlt(_localctx, 1);
|
|
56848
57221
|
{
|
|
56849
|
-
this.state =
|
|
57222
|
+
this.state = 729;
|
|
56850
57223
|
this.expr6(0);
|
|
56851
57224
|
}
|
|
56852
57225
|
break;
|
|
56853
57226
|
case ForgeParser.NEG_TOK:
|
|
56854
57227
|
this.enterOuterAlt(_localctx, 2);
|
|
56855
57228
|
{
|
|
56856
|
-
this.state = 729;
|
|
56857
|
-
this.match(ForgeParser.NEG_TOK);
|
|
56858
57229
|
this.state = 730;
|
|
57230
|
+
this.match(ForgeParser.NEG_TOK);
|
|
57231
|
+
this.state = 731;
|
|
56859
57232
|
this.expr5();
|
|
56860
57233
|
}
|
|
56861
57234
|
break;
|
|
56862
57235
|
case ForgeParser.ALWAYS_TOK:
|
|
56863
57236
|
this.enterOuterAlt(_localctx, 3);
|
|
56864
57237
|
{
|
|
56865
|
-
this.state = 731;
|
|
56866
|
-
this.match(ForgeParser.ALWAYS_TOK);
|
|
56867
57238
|
this.state = 732;
|
|
57239
|
+
this.match(ForgeParser.ALWAYS_TOK);
|
|
57240
|
+
this.state = 733;
|
|
56868
57241
|
this.expr5();
|
|
56869
57242
|
}
|
|
56870
57243
|
break;
|
|
56871
57244
|
case ForgeParser.EVENTUALLY_TOK:
|
|
56872
57245
|
this.enterOuterAlt(_localctx, 4);
|
|
56873
57246
|
{
|
|
56874
|
-
this.state = 733;
|
|
56875
|
-
this.match(ForgeParser.EVENTUALLY_TOK);
|
|
56876
57247
|
this.state = 734;
|
|
57248
|
+
this.match(ForgeParser.EVENTUALLY_TOK);
|
|
57249
|
+
this.state = 735;
|
|
56877
57250
|
this.expr5();
|
|
56878
57251
|
}
|
|
56879
57252
|
break;
|
|
56880
57253
|
case ForgeParser.AFTER_TOK:
|
|
56881
57254
|
this.enterOuterAlt(_localctx, 5);
|
|
56882
57255
|
{
|
|
56883
|
-
this.state = 735;
|
|
56884
|
-
this.match(ForgeParser.AFTER_TOK);
|
|
56885
57256
|
this.state = 736;
|
|
57257
|
+
this.match(ForgeParser.AFTER_TOK);
|
|
57258
|
+
this.state = 737;
|
|
56886
57259
|
this.expr5();
|
|
56887
57260
|
}
|
|
56888
57261
|
break;
|
|
56889
57262
|
case ForgeParser.BEFORE_TOK:
|
|
56890
57263
|
this.enterOuterAlt(_localctx, 6);
|
|
56891
57264
|
{
|
|
56892
|
-
this.state = 737;
|
|
56893
|
-
this.match(ForgeParser.BEFORE_TOK);
|
|
56894
57265
|
this.state = 738;
|
|
57266
|
+
this.match(ForgeParser.BEFORE_TOK);
|
|
57267
|
+
this.state = 739;
|
|
56895
57268
|
this.expr5();
|
|
56896
57269
|
}
|
|
56897
57270
|
break;
|
|
56898
57271
|
case ForgeParser.ONCE_TOK:
|
|
56899
57272
|
this.enterOuterAlt(_localctx, 7);
|
|
56900
57273
|
{
|
|
56901
|
-
this.state = 739;
|
|
56902
|
-
this.match(ForgeParser.ONCE_TOK);
|
|
56903
57274
|
this.state = 740;
|
|
57275
|
+
this.match(ForgeParser.ONCE_TOK);
|
|
57276
|
+
this.state = 741;
|
|
56904
57277
|
this.expr5();
|
|
56905
57278
|
}
|
|
56906
57279
|
break;
|
|
56907
57280
|
case ForgeParser.HISTORICALLY_TOK:
|
|
56908
57281
|
this.enterOuterAlt(_localctx, 8);
|
|
56909
57282
|
{
|
|
56910
|
-
this.state = 741;
|
|
56911
|
-
this.match(ForgeParser.HISTORICALLY_TOK);
|
|
56912
57283
|
this.state = 742;
|
|
57284
|
+
this.match(ForgeParser.HISTORICALLY_TOK);
|
|
57285
|
+
this.state = 743;
|
|
56913
57286
|
this.expr5();
|
|
56914
57287
|
}
|
|
56915
57288
|
break;
|
|
@@ -56949,11 +57322,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56949
57322
|
this.enterOuterAlt(_localctx, 1);
|
|
56950
57323
|
{
|
|
56951
57324
|
{
|
|
56952
|
-
this.state =
|
|
57325
|
+
this.state = 747;
|
|
56953
57326
|
this.expr7();
|
|
56954
57327
|
}
|
|
56955
57328
|
this._ctx._stop = this._input.tryLT(-1);
|
|
56956
|
-
this.state =
|
|
57329
|
+
this.state = 758;
|
|
56957
57330
|
this._errHandler.sync(this);
|
|
56958
57331
|
_alt = this.interpreter.adaptivePredict(this._input, 89, this._ctx);
|
|
56959
57332
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -56966,27 +57339,27 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
56966
57339
|
{
|
|
56967
57340
|
_localctx = new Expr6Context(_parentctx, _parentState);
|
|
56968
57341
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr6);
|
|
56969
|
-
this.state =
|
|
57342
|
+
this.state = 749;
|
|
56970
57343
|
if (!(this.precpred(this._ctx, 1))) {
|
|
56971
57344
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
56972
57345
|
}
|
|
56973
|
-
this.state =
|
|
57346
|
+
this.state = 751;
|
|
56974
57347
|
this._errHandler.sync(this);
|
|
56975
57348
|
_la = this._input.LA(1);
|
|
56976
57349
|
if (_la === ForgeParser.NEG_TOK) {
|
|
56977
57350
|
{
|
|
56978
|
-
this.state =
|
|
57351
|
+
this.state = 750;
|
|
56979
57352
|
this.match(ForgeParser.NEG_TOK);
|
|
56980
57353
|
}
|
|
56981
57354
|
}
|
|
56982
|
-
this.state = 752;
|
|
56983
|
-
this.compareOp();
|
|
56984
57355
|
this.state = 753;
|
|
57356
|
+
this.compareOp();
|
|
57357
|
+
this.state = 754;
|
|
56985
57358
|
this.expr7();
|
|
56986
57359
|
}
|
|
56987
57360
|
}
|
|
56988
57361
|
}
|
|
56989
|
-
this.state =
|
|
57362
|
+
this.state = 760;
|
|
56990
57363
|
this._errHandler.sync(this);
|
|
56991
57364
|
_alt = this.interpreter.adaptivePredict(this._input, 89, this._ctx);
|
|
56992
57365
|
}
|
|
@@ -57013,9 +57386,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57013
57386
|
this.enterRule(_localctx, 112, ForgeParser.RULE_expr7);
|
|
57014
57387
|
let _la;
|
|
57015
57388
|
try {
|
|
57016
|
-
this.state =
|
|
57389
|
+
this.state = 764;
|
|
57017
57390
|
this._errHandler.sync(this);
|
|
57018
57391
|
switch (this._input.LA(1)) {
|
|
57392
|
+
case ForgeParser.STRING_TOK:
|
|
57019
57393
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
57020
57394
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
57021
57395
|
case ForgeParser.NONE_TOK:
|
|
@@ -57041,7 +57415,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57041
57415
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57042
57416
|
this.enterOuterAlt(_localctx, 1);
|
|
57043
57417
|
{
|
|
57044
|
-
this.state =
|
|
57418
|
+
this.state = 761;
|
|
57045
57419
|
this.expr8(0);
|
|
57046
57420
|
}
|
|
57047
57421
|
break;
|
|
@@ -57053,7 +57427,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57053
57427
|
case ForgeParser.NO_TOK:
|
|
57054
57428
|
this.enterOuterAlt(_localctx, 2);
|
|
57055
57429
|
{
|
|
57056
|
-
this.state =
|
|
57430
|
+
this.state = 762;
|
|
57057
57431
|
_la = this._input.LA(1);
|
|
57058
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)) {
|
|
57059
57433
|
this._errHandler.recoverInline(this);
|
|
@@ -57065,7 +57439,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57065
57439
|
this._errHandler.reportMatch(this);
|
|
57066
57440
|
this.consume();
|
|
57067
57441
|
}
|
|
57068
|
-
this.state =
|
|
57442
|
+
this.state = 763;
|
|
57069
57443
|
this.expr8(0);
|
|
57070
57444
|
}
|
|
57071
57445
|
break;
|
|
@@ -57105,11 +57479,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57105
57479
|
this.enterOuterAlt(_localctx, 1);
|
|
57106
57480
|
{
|
|
57107
57481
|
{
|
|
57108
|
-
this.state =
|
|
57482
|
+
this.state = 767;
|
|
57109
57483
|
this.expr9();
|
|
57110
57484
|
}
|
|
57111
57485
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57112
|
-
this.state =
|
|
57486
|
+
this.state = 774;
|
|
57113
57487
|
this._errHandler.sync(this);
|
|
57114
57488
|
_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);
|
|
57115
57489
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57122,11 +57496,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57122
57496
|
{
|
|
57123
57497
|
_localctx = new Expr8Context(_parentctx, _parentState);
|
|
57124
57498
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr8);
|
|
57125
|
-
this.state =
|
|
57499
|
+
this.state = 769;
|
|
57126
57500
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57127
57501
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57128
57502
|
}
|
|
57129
|
-
this.state =
|
|
57503
|
+
this.state = 770;
|
|
57130
57504
|
_la = this._input.LA(1);
|
|
57131
57505
|
if (!(_la === ForgeParser.PLUS_TOK || _la === ForgeParser.MINUS_TOK)) {
|
|
57132
57506
|
this._errHandler.recoverInline(this);
|
|
@@ -57138,12 +57512,12 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57138
57512
|
this._errHandler.reportMatch(this);
|
|
57139
57513
|
this.consume();
|
|
57140
57514
|
}
|
|
57141
|
-
this.state =
|
|
57515
|
+
this.state = 771;
|
|
57142
57516
|
this.expr10(0);
|
|
57143
57517
|
}
|
|
57144
57518
|
}
|
|
57145
57519
|
}
|
|
57146
|
-
this.state =
|
|
57520
|
+
this.state = 776;
|
|
57147
57521
|
this._errHandler.sync(this);
|
|
57148
57522
|
_alt = this.interpreter.adaptivePredict(this._input, 91, this._ctx);
|
|
57149
57523
|
}
|
|
@@ -57169,9 +57543,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57169
57543
|
let _localctx = new Expr9Context(this._ctx, this.state);
|
|
57170
57544
|
this.enterRule(_localctx, 116, ForgeParser.RULE_expr9);
|
|
57171
57545
|
try {
|
|
57172
|
-
this.state =
|
|
57546
|
+
this.state = 780;
|
|
57173
57547
|
this._errHandler.sync(this);
|
|
57174
57548
|
switch (this._input.LA(1)) {
|
|
57549
|
+
case ForgeParser.STRING_TOK:
|
|
57175
57550
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
57176
57551
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
57177
57552
|
case ForgeParser.NONE_TOK:
|
|
@@ -57196,16 +57571,16 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57196
57571
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57197
57572
|
this.enterOuterAlt(_localctx, 1);
|
|
57198
57573
|
{
|
|
57199
|
-
this.state =
|
|
57574
|
+
this.state = 777;
|
|
57200
57575
|
this.expr10(0);
|
|
57201
57576
|
}
|
|
57202
57577
|
break;
|
|
57203
57578
|
case ForgeParser.CARD_TOK:
|
|
57204
57579
|
this.enterOuterAlt(_localctx, 2);
|
|
57205
57580
|
{
|
|
57206
|
-
this.state = 777;
|
|
57207
|
-
this.match(ForgeParser.CARD_TOK);
|
|
57208
57581
|
this.state = 778;
|
|
57582
|
+
this.match(ForgeParser.CARD_TOK);
|
|
57583
|
+
this.state = 779;
|
|
57209
57584
|
this.expr9();
|
|
57210
57585
|
}
|
|
57211
57586
|
break;
|
|
@@ -57244,11 +57619,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57244
57619
|
this.enterOuterAlt(_localctx, 1);
|
|
57245
57620
|
{
|
|
57246
57621
|
{
|
|
57247
|
-
this.state =
|
|
57622
|
+
this.state = 783;
|
|
57248
57623
|
this.expr11(0);
|
|
57249
57624
|
}
|
|
57250
57625
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57251
|
-
this.state =
|
|
57626
|
+
this.state = 790;
|
|
57252
57627
|
this._errHandler.sync(this);
|
|
57253
57628
|
_alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
|
|
57254
57629
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57261,18 +57636,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57261
57636
|
{
|
|
57262
57637
|
_localctx = new Expr10Context(_parentctx, _parentState);
|
|
57263
57638
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr10);
|
|
57264
|
-
this.state =
|
|
57639
|
+
this.state = 785;
|
|
57265
57640
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57266
57641
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57267
57642
|
}
|
|
57268
|
-
this.state = 785;
|
|
57269
|
-
this.match(ForgeParser.PPLUS_TOK);
|
|
57270
57643
|
this.state = 786;
|
|
57644
|
+
this.match(ForgeParser.PPLUS_TOK);
|
|
57645
|
+
this.state = 787;
|
|
57271
57646
|
this.expr11(0);
|
|
57272
57647
|
}
|
|
57273
57648
|
}
|
|
57274
57649
|
}
|
|
57275
|
-
this.state =
|
|
57650
|
+
this.state = 792;
|
|
57276
57651
|
this._errHandler.sync(this);
|
|
57277
57652
|
_alt = this.interpreter.adaptivePredict(this._input, 93, this._ctx);
|
|
57278
57653
|
}
|
|
@@ -57309,11 +57684,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57309
57684
|
this.enterOuterAlt(_localctx, 1);
|
|
57310
57685
|
{
|
|
57311
57686
|
{
|
|
57312
|
-
this.state =
|
|
57687
|
+
this.state = 794;
|
|
57313
57688
|
this.expr12(0);
|
|
57314
57689
|
}
|
|
57315
57690
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57316
|
-
this.state =
|
|
57691
|
+
this.state = 801;
|
|
57317
57692
|
this._errHandler.sync(this);
|
|
57318
57693
|
_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);
|
|
57319
57694
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57326,18 +57701,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57326
57701
|
{
|
|
57327
57702
|
_localctx = new Expr11Context(_parentctx, _parentState);
|
|
57328
57703
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr11);
|
|
57329
|
-
this.state =
|
|
57704
|
+
this.state = 796;
|
|
57330
57705
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57331
57706
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57332
57707
|
}
|
|
57333
|
-
this.state = 796;
|
|
57334
|
-
this.match(ForgeParser.AMP_TOK);
|
|
57335
57708
|
this.state = 797;
|
|
57709
|
+
this.match(ForgeParser.AMP_TOK);
|
|
57710
|
+
this.state = 798;
|
|
57336
57711
|
this.expr12(0);
|
|
57337
57712
|
}
|
|
57338
57713
|
}
|
|
57339
57714
|
}
|
|
57340
|
-
this.state =
|
|
57715
|
+
this.state = 803;
|
|
57341
57716
|
this._errHandler.sync(this);
|
|
57342
57717
|
_alt = this.interpreter.adaptivePredict(this._input, 94, this._ctx);
|
|
57343
57718
|
}
|
|
@@ -57374,11 +57749,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57374
57749
|
this.enterOuterAlt(_localctx, 1);
|
|
57375
57750
|
{
|
|
57376
57751
|
{
|
|
57377
|
-
this.state =
|
|
57752
|
+
this.state = 805;
|
|
57378
57753
|
this.expr13(0);
|
|
57379
57754
|
}
|
|
57380
57755
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57381
|
-
this.state =
|
|
57756
|
+
this.state = 813;
|
|
57382
57757
|
this._errHandler.sync(this);
|
|
57383
57758
|
_alt = this.interpreter.adaptivePredict(this._input, 95, this._ctx);
|
|
57384
57759
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57391,18 +57766,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57391
57766
|
{
|
|
57392
57767
|
_localctx = new Expr12Context(_parentctx, _parentState);
|
|
57393
57768
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr12);
|
|
57394
|
-
this.state =
|
|
57769
|
+
this.state = 807;
|
|
57395
57770
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57396
57771
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57397
57772
|
}
|
|
57398
|
-
this.state = 807;
|
|
57399
|
-
this.arrowOp();
|
|
57400
57773
|
this.state = 808;
|
|
57774
|
+
this.arrowOp();
|
|
57775
|
+
this.state = 809;
|
|
57401
57776
|
this.expr13(0);
|
|
57402
57777
|
}
|
|
57403
57778
|
}
|
|
57404
57779
|
}
|
|
57405
|
-
this.state =
|
|
57780
|
+
this.state = 815;
|
|
57406
57781
|
this._errHandler.sync(this);
|
|
57407
57782
|
_alt = this.interpreter.adaptivePredict(this._input, 95, this._ctx);
|
|
57408
57783
|
}
|
|
@@ -57440,11 +57815,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57440
57815
|
this.enterOuterAlt(_localctx, 1);
|
|
57441
57816
|
{
|
|
57442
57817
|
{
|
|
57443
|
-
this.state =
|
|
57818
|
+
this.state = 817;
|
|
57444
57819
|
this.expr14(0);
|
|
57445
57820
|
}
|
|
57446
57821
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57447
|
-
this.state =
|
|
57822
|
+
this.state = 824;
|
|
57448
57823
|
this._errHandler.sync(this);
|
|
57449
57824
|
_alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
|
|
57450
57825
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57457,11 +57832,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57457
57832
|
{
|
|
57458
57833
|
_localctx = new Expr13Context(_parentctx, _parentState);
|
|
57459
57834
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr13);
|
|
57460
|
-
this.state =
|
|
57835
|
+
this.state = 819;
|
|
57461
57836
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57462
57837
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57463
57838
|
}
|
|
57464
|
-
this.state =
|
|
57839
|
+
this.state = 820;
|
|
57465
57840
|
_la = this._input.LA(1);
|
|
57466
57841
|
if (!(_la === ForgeParser.SUBT_TOK || _la === ForgeParser.SUPT_TOK)) {
|
|
57467
57842
|
this._errHandler.recoverInline(this);
|
|
@@ -57473,12 +57848,12 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57473
57848
|
this._errHandler.reportMatch(this);
|
|
57474
57849
|
this.consume();
|
|
57475
57850
|
}
|
|
57476
|
-
this.state =
|
|
57851
|
+
this.state = 821;
|
|
57477
57852
|
this.expr14(0);
|
|
57478
57853
|
}
|
|
57479
57854
|
}
|
|
57480
57855
|
}
|
|
57481
|
-
this.state =
|
|
57856
|
+
this.state = 826;
|
|
57482
57857
|
this._errHandler.sync(this);
|
|
57483
57858
|
_alt = this.interpreter.adaptivePredict(this._input, 96, this._ctx);
|
|
57484
57859
|
}
|
|
@@ -57515,11 +57890,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57515
57890
|
this.enterOuterAlt(_localctx, 1);
|
|
57516
57891
|
{
|
|
57517
57892
|
{
|
|
57518
|
-
this.state =
|
|
57893
|
+
this.state = 828;
|
|
57519
57894
|
this.expr15(0);
|
|
57520
57895
|
}
|
|
57521
57896
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57522
|
-
this.state =
|
|
57897
|
+
this.state = 837;
|
|
57523
57898
|
this._errHandler.sync(this);
|
|
57524
57899
|
_alt = this.interpreter.adaptivePredict(this._input, 97, this._ctx);
|
|
57525
57900
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57532,20 +57907,20 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57532
57907
|
{
|
|
57533
57908
|
_localctx = new Expr14Context(_parentctx, _parentState);
|
|
57534
57909
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr14);
|
|
57535
|
-
this.state =
|
|
57910
|
+
this.state = 830;
|
|
57536
57911
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57537
57912
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57538
57913
|
}
|
|
57539
|
-
this.state = 830;
|
|
57540
|
-
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
57541
57914
|
this.state = 831;
|
|
57542
|
-
this.
|
|
57915
|
+
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
57543
57916
|
this.state = 832;
|
|
57917
|
+
this.exprList();
|
|
57918
|
+
this.state = 833;
|
|
57544
57919
|
this.match(ForgeParser.RIGHT_SQUARE_TOK);
|
|
57545
57920
|
}
|
|
57546
57921
|
}
|
|
57547
57922
|
}
|
|
57548
|
-
this.state =
|
|
57923
|
+
this.state = 839;
|
|
57549
57924
|
this._errHandler.sync(this);
|
|
57550
57925
|
_alt = this.interpreter.adaptivePredict(this._input, 97, this._ctx);
|
|
57551
57926
|
}
|
|
@@ -57581,30 +57956,30 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57581
57956
|
let _alt;
|
|
57582
57957
|
this.enterOuterAlt(_localctx, 1);
|
|
57583
57958
|
{
|
|
57584
|
-
this.state =
|
|
57959
|
+
this.state = 847;
|
|
57585
57960
|
this._errHandler.sync(this);
|
|
57586
57961
|
switch (this.interpreter.adaptivePredict(this._input, 98, this._ctx)) {
|
|
57587
57962
|
case 1:
|
|
57588
57963
|
{
|
|
57589
|
-
this.state =
|
|
57964
|
+
this.state = 841;
|
|
57590
57965
|
this.expr16(0);
|
|
57591
57966
|
}
|
|
57592
57967
|
break;
|
|
57593
57968
|
case 2:
|
|
57594
57969
|
{
|
|
57595
|
-
this.state = 841;
|
|
57596
|
-
this.name();
|
|
57597
57970
|
this.state = 842;
|
|
57598
|
-
this.
|
|
57971
|
+
this.name();
|
|
57599
57972
|
this.state = 843;
|
|
57600
|
-
this.
|
|
57973
|
+
this.match(ForgeParser.LEFT_SQUARE_TOK);
|
|
57601
57974
|
this.state = 844;
|
|
57975
|
+
this.exprList();
|
|
57976
|
+
this.state = 845;
|
|
57602
57977
|
this.match(ForgeParser.RIGHT_SQUARE_TOK);
|
|
57603
57978
|
}
|
|
57604
57979
|
break;
|
|
57605
57980
|
}
|
|
57606
57981
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57607
|
-
this.state =
|
|
57982
|
+
this.state = 854;
|
|
57608
57983
|
this._errHandler.sync(this);
|
|
57609
57984
|
_alt = this.interpreter.adaptivePredict(this._input, 99, this._ctx);
|
|
57610
57985
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57617,18 +57992,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57617
57992
|
{
|
|
57618
57993
|
_localctx = new Expr15Context(_parentctx, _parentState);
|
|
57619
57994
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr15);
|
|
57620
|
-
this.state =
|
|
57995
|
+
this.state = 849;
|
|
57621
57996
|
if (!(this.precpred(this._ctx, 2))) {
|
|
57622
57997
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
|
|
57623
57998
|
}
|
|
57624
|
-
this.state = 849;
|
|
57625
|
-
this.match(ForgeParser.DOT_TOK);
|
|
57626
57999
|
this.state = 850;
|
|
58000
|
+
this.match(ForgeParser.DOT_TOK);
|
|
58001
|
+
this.state = 851;
|
|
57627
58002
|
this.expr16(0);
|
|
57628
58003
|
}
|
|
57629
58004
|
}
|
|
57630
58005
|
}
|
|
57631
|
-
this.state =
|
|
58006
|
+
this.state = 856;
|
|
57632
58007
|
this._errHandler.sync(this);
|
|
57633
58008
|
_alt = this.interpreter.adaptivePredict(this._input, 99, this._ctx);
|
|
57634
58009
|
}
|
|
@@ -57665,11 +58040,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57665
58040
|
this.enterOuterAlt(_localctx, 1);
|
|
57666
58041
|
{
|
|
57667
58042
|
{
|
|
57668
|
-
this.state =
|
|
58043
|
+
this.state = 858;
|
|
57669
58044
|
this.expr17();
|
|
57670
58045
|
}
|
|
57671
58046
|
this._ctx._stop = this._input.tryLT(-1);
|
|
57672
|
-
this.state =
|
|
58047
|
+
this.state = 864;
|
|
57673
58048
|
this._errHandler.sync(this);
|
|
57674
58049
|
_alt = this.interpreter.adaptivePredict(this._input, 100, this._ctx);
|
|
57675
58050
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -57682,16 +58057,16 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57682
58057
|
{
|
|
57683
58058
|
_localctx = new Expr16Context(_parentctx, _parentState);
|
|
57684
58059
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_expr16);
|
|
57685
|
-
this.state =
|
|
58060
|
+
this.state = 860;
|
|
57686
58061
|
if (!(this.precpred(this._ctx, 1))) {
|
|
57687
58062
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
|
|
57688
58063
|
}
|
|
57689
|
-
this.state =
|
|
58064
|
+
this.state = 861;
|
|
57690
58065
|
this.match(ForgeParser.PRIME_TOK);
|
|
57691
58066
|
}
|
|
57692
58067
|
}
|
|
57693
58068
|
}
|
|
57694
|
-
this.state =
|
|
58069
|
+
this.state = 866;
|
|
57695
58070
|
this._errHandler.sync(this);
|
|
57696
58071
|
_alt = this.interpreter.adaptivePredict(this._input, 100, this._ctx);
|
|
57697
58072
|
}
|
|
@@ -57718,9 +58093,10 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57718
58093
|
this.enterRule(_localctx, 132, ForgeParser.RULE_expr17);
|
|
57719
58094
|
let _la;
|
|
57720
58095
|
try {
|
|
57721
|
-
this.state =
|
|
58096
|
+
this.state = 870;
|
|
57722
58097
|
this._errHandler.sync(this);
|
|
57723
58098
|
switch (this._input.LA(1)) {
|
|
58099
|
+
case ForgeParser.STRING_TOK:
|
|
57724
58100
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
57725
58101
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
57726
58102
|
case ForgeParser.NONE_TOK:
|
|
@@ -57738,7 +58114,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57738
58114
|
case ForgeParser.IDENTIFIER_TOK:
|
|
57739
58115
|
this.enterOuterAlt(_localctx, 1);
|
|
57740
58116
|
{
|
|
57741
|
-
this.state =
|
|
58117
|
+
this.state = 867;
|
|
57742
58118
|
this.expr18();
|
|
57743
58119
|
}
|
|
57744
58120
|
break;
|
|
@@ -57751,7 +58127,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57751
58127
|
case ForgeParser.GET_LABEL_NUM_TOK:
|
|
57752
58128
|
this.enterOuterAlt(_localctx, 2);
|
|
57753
58129
|
{
|
|
57754
|
-
this.state =
|
|
58130
|
+
this.state = 868;
|
|
57755
58131
|
_la = this._input.LA(1);
|
|
57756
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))) {
|
|
57757
58133
|
this._errHandler.recoverInline(this);
|
|
@@ -57763,7 +58139,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57763
58139
|
this._errHandler.reportMatch(this);
|
|
57764
58140
|
this.consume();
|
|
57765
58141
|
}
|
|
57766
|
-
this.state =
|
|
58142
|
+
this.state = 869;
|
|
57767
58143
|
this.expr17();
|
|
57768
58144
|
}
|
|
57769
58145
|
break;
|
|
@@ -57791,83 +58167,83 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57791
58167
|
let _localctx = new Expr18Context(this._ctx, this.state);
|
|
57792
58168
|
this.enterRule(_localctx, 134, ForgeParser.RULE_expr18);
|
|
57793
58169
|
try {
|
|
57794
|
-
this.state =
|
|
58170
|
+
this.state = 890;
|
|
57795
58171
|
this._errHandler.sync(this);
|
|
57796
58172
|
switch (this.interpreter.adaptivePredict(this._input, 102, this._ctx)) {
|
|
57797
58173
|
case 1:
|
|
57798
58174
|
this.enterOuterAlt(_localctx, 1);
|
|
57799
58175
|
{
|
|
57800
|
-
this.state =
|
|
58176
|
+
this.state = 872;
|
|
57801
58177
|
this.const();
|
|
57802
58178
|
}
|
|
57803
58179
|
break;
|
|
57804
58180
|
case 2:
|
|
57805
58181
|
this.enterOuterAlt(_localctx, 2);
|
|
57806
58182
|
{
|
|
57807
|
-
this.state =
|
|
58183
|
+
this.state = 873;
|
|
57808
58184
|
this.qualName();
|
|
57809
58185
|
}
|
|
57810
58186
|
break;
|
|
57811
58187
|
case 3:
|
|
57812
58188
|
this.enterOuterAlt(_localctx, 3);
|
|
57813
58189
|
{
|
|
57814
|
-
this.state = 873;
|
|
57815
|
-
this.match(ForgeParser.AT_TOK);
|
|
57816
58190
|
this.state = 874;
|
|
58191
|
+
this.match(ForgeParser.AT_TOK);
|
|
58192
|
+
this.state = 875;
|
|
57817
58193
|
this.name();
|
|
57818
58194
|
}
|
|
57819
58195
|
break;
|
|
57820
58196
|
case 4:
|
|
57821
58197
|
this.enterOuterAlt(_localctx, 4);
|
|
57822
58198
|
{
|
|
57823
|
-
this.state = 875;
|
|
57824
|
-
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
57825
58199
|
this.state = 876;
|
|
58200
|
+
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
58201
|
+
this.state = 877;
|
|
57826
58202
|
this.name();
|
|
57827
58203
|
}
|
|
57828
58204
|
break;
|
|
57829
58205
|
case 5:
|
|
57830
58206
|
this.enterOuterAlt(_localctx, 5);
|
|
57831
58207
|
{
|
|
57832
|
-
this.state =
|
|
58208
|
+
this.state = 878;
|
|
57833
58209
|
this.match(ForgeParser.THIS_TOK);
|
|
57834
58210
|
}
|
|
57835
58211
|
break;
|
|
57836
58212
|
case 6:
|
|
57837
58213
|
this.enterOuterAlt(_localctx, 6);
|
|
57838
58214
|
{
|
|
57839
|
-
this.state = 878;
|
|
57840
|
-
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
57841
58215
|
this.state = 879;
|
|
57842
|
-
this.
|
|
58216
|
+
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
57843
58217
|
this.state = 880;
|
|
57844
|
-
this.
|
|
58218
|
+
this.quantDeclList();
|
|
57845
58219
|
this.state = 881;
|
|
58220
|
+
this.blockOrBar();
|
|
58221
|
+
this.state = 882;
|
|
57846
58222
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
57847
58223
|
}
|
|
57848
58224
|
break;
|
|
57849
58225
|
case 7:
|
|
57850
58226
|
this.enterOuterAlt(_localctx, 7);
|
|
57851
58227
|
{
|
|
57852
|
-
this.state = 883;
|
|
57853
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
57854
58228
|
this.state = 884;
|
|
57855
|
-
this.
|
|
58229
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
57856
58230
|
this.state = 885;
|
|
58231
|
+
this.expr();
|
|
58232
|
+
this.state = 886;
|
|
57857
58233
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
57858
58234
|
}
|
|
57859
58235
|
break;
|
|
57860
58236
|
case 8:
|
|
57861
58237
|
this.enterOuterAlt(_localctx, 8);
|
|
57862
58238
|
{
|
|
57863
|
-
this.state =
|
|
58239
|
+
this.state = 888;
|
|
57864
58240
|
this.block();
|
|
57865
58241
|
}
|
|
57866
58242
|
break;
|
|
57867
58243
|
case 9:
|
|
57868
58244
|
this.enterOuterAlt(_localctx, 9);
|
|
57869
58245
|
{
|
|
57870
|
-
this.state =
|
|
58246
|
+
this.state = 889;
|
|
57871
58247
|
this.sexpr();
|
|
57872
58248
|
}
|
|
57873
58249
|
break;
|
|
@@ -57893,24 +58269,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57893
58269
|
let _localctx = new ArrowExprContext(this._ctx, this.state);
|
|
57894
58270
|
this.enterRule(_localctx, 136, ForgeParser.RULE_arrowExpr);
|
|
57895
58271
|
try {
|
|
57896
|
-
this.state =
|
|
58272
|
+
this.state = 897;
|
|
57897
58273
|
this._errHandler.sync(this);
|
|
57898
58274
|
switch (this.interpreter.adaptivePredict(this._input, 103, this._ctx)) {
|
|
57899
58275
|
case 1:
|
|
57900
58276
|
this.enterOuterAlt(_localctx, 1);
|
|
57901
58277
|
{
|
|
57902
|
-
this.state =
|
|
58278
|
+
this.state = 892;
|
|
57903
58279
|
this.qualName();
|
|
57904
58280
|
}
|
|
57905
58281
|
break;
|
|
57906
58282
|
case 2:
|
|
57907
58283
|
this.enterOuterAlt(_localctx, 2);
|
|
57908
58284
|
{
|
|
57909
|
-
this.state = 892;
|
|
57910
|
-
this.qualName();
|
|
57911
58285
|
this.state = 893;
|
|
57912
|
-
this.
|
|
58286
|
+
this.qualName();
|
|
57913
58287
|
this.state = 894;
|
|
58288
|
+
this.match(ForgeParser.ARROW_TOK);
|
|
58289
|
+
this.state = 895;
|
|
57914
58290
|
this.arrowExpr();
|
|
57915
58291
|
}
|
|
57916
58292
|
break;
|
|
@@ -57938,7 +58314,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57938
58314
|
try {
|
|
57939
58315
|
this.enterOuterAlt(_localctx, 1);
|
|
57940
58316
|
{
|
|
57941
|
-
this.state =
|
|
58317
|
+
this.state = 899;
|
|
57942
58318
|
this.sexpr();
|
|
57943
58319
|
}
|
|
57944
58320
|
}
|
|
@@ -57964,7 +58340,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57964
58340
|
try {
|
|
57965
58341
|
this.enterOuterAlt(_localctx, 1);
|
|
57966
58342
|
{
|
|
57967
|
-
this.state =
|
|
58343
|
+
this.state = 901;
|
|
57968
58344
|
this.match(ForgeParser.SEXPR_TOK);
|
|
57969
58345
|
}
|
|
57970
58346
|
}
|
|
@@ -57991,18 +58367,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
57991
58367
|
try {
|
|
57992
58368
|
this.enterOuterAlt(_localctx, 1);
|
|
57993
58369
|
{
|
|
57994
|
-
this.state = 902;
|
|
57995
|
-
this.match(ForgeParser.INST_TOK);
|
|
57996
58370
|
this.state = 903;
|
|
57997
|
-
this.
|
|
58371
|
+
this.match(ForgeParser.INST_TOK);
|
|
57998
58372
|
this.state = 904;
|
|
58373
|
+
this.name();
|
|
58374
|
+
this.state = 905;
|
|
57999
58375
|
this.bounds();
|
|
58000
|
-
this.state =
|
|
58376
|
+
this.state = 907;
|
|
58001
58377
|
this._errHandler.sync(this);
|
|
58002
58378
|
_la = this._input.LA(1);
|
|
58003
58379
|
if (_la === ForgeParser.FOR_TOK) {
|
|
58004
58380
|
{
|
|
58005
|
-
this.state =
|
|
58381
|
+
this.state = 906;
|
|
58006
58382
|
this.scope();
|
|
58007
58383
|
}
|
|
58008
58384
|
}
|
|
@@ -58030,7 +58406,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58030
58406
|
try {
|
|
58031
58407
|
this.enterOuterAlt(_localctx, 1);
|
|
58032
58408
|
{
|
|
58033
|
-
this.state =
|
|
58409
|
+
this.state = 909;
|
|
58034
58410
|
this.arrowDecl();
|
|
58035
58411
|
}
|
|
58036
58412
|
}
|
|
@@ -58056,9 +58432,9 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58056
58432
|
try {
|
|
58057
58433
|
this.enterOuterAlt(_localctx, 1);
|
|
58058
58434
|
{
|
|
58059
|
-
this.state = 910;
|
|
58060
|
-
this.match(ForgeParser.EVAL_TOK);
|
|
58061
58435
|
this.state = 911;
|
|
58436
|
+
this.match(ForgeParser.EVAL_TOK);
|
|
58437
|
+
this.state = 912;
|
|
58062
58438
|
this.expr();
|
|
58063
58439
|
}
|
|
58064
58440
|
}
|
|
@@ -58084,17 +58460,17 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58084
58460
|
try {
|
|
58085
58461
|
this.enterOuterAlt(_localctx, 1);
|
|
58086
58462
|
{
|
|
58087
|
-
this.state = 913;
|
|
58088
|
-
this.match(ForgeParser.EXAMPLE_TOK);
|
|
58089
58463
|
this.state = 914;
|
|
58090
|
-
this.
|
|
58464
|
+
this.match(ForgeParser.EXAMPLE_TOK);
|
|
58091
58465
|
this.state = 915;
|
|
58092
|
-
this.
|
|
58466
|
+
this.name();
|
|
58093
58467
|
this.state = 916;
|
|
58094
|
-
this.
|
|
58468
|
+
this.match(ForgeParser.IS_TOK);
|
|
58095
58469
|
this.state = 917;
|
|
58096
|
-
this.
|
|
58470
|
+
this.expr();
|
|
58097
58471
|
this.state = 918;
|
|
58472
|
+
this.match(ForgeParser.FOR_TOK);
|
|
58473
|
+
this.state = 919;
|
|
58098
58474
|
this.bounds();
|
|
58099
58475
|
}
|
|
58100
58476
|
}
|
|
@@ -58120,15 +58496,15 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58120
58496
|
try {
|
|
58121
58497
|
this.enterOuterAlt(_localctx, 1);
|
|
58122
58498
|
{
|
|
58123
|
-
this.state = 920;
|
|
58124
|
-
this.name();
|
|
58125
58499
|
this.state = 921;
|
|
58126
|
-
this.
|
|
58500
|
+
this.name();
|
|
58127
58501
|
this.state = 922;
|
|
58128
|
-
this.
|
|
58502
|
+
this.match(ForgeParser.COLON_TOK);
|
|
58129
58503
|
this.state = 923;
|
|
58130
|
-
this.
|
|
58504
|
+
this.arrowExpr();
|
|
58131
58505
|
this.state = 924;
|
|
58506
|
+
this.match(ForgeParser.EQ_TOK);
|
|
58507
|
+
this.state = 925;
|
|
58132
58508
|
this.expr();
|
|
58133
58509
|
}
|
|
58134
58510
|
}
|
|
@@ -58152,24 +58528,24 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58152
58528
|
let _localctx = new NumberListContext(this._ctx, this.state);
|
|
58153
58529
|
this.enterRule(_localctx, 152, ForgeParser.RULE_numberList);
|
|
58154
58530
|
try {
|
|
58155
|
-
this.state =
|
|
58531
|
+
this.state = 932;
|
|
58156
58532
|
this._errHandler.sync(this);
|
|
58157
58533
|
switch (this.interpreter.adaptivePredict(this._input, 105, this._ctx)) {
|
|
58158
58534
|
case 1:
|
|
58159
58535
|
this.enterOuterAlt(_localctx, 1);
|
|
58160
58536
|
{
|
|
58161
|
-
this.state =
|
|
58537
|
+
this.state = 927;
|
|
58162
58538
|
this.number();
|
|
58163
58539
|
}
|
|
58164
58540
|
break;
|
|
58165
58541
|
case 2:
|
|
58166
58542
|
this.enterOuterAlt(_localctx, 2);
|
|
58167
58543
|
{
|
|
58168
|
-
this.state = 927;
|
|
58169
|
-
this.number();
|
|
58170
58544
|
this.state = 928;
|
|
58171
|
-
this.
|
|
58545
|
+
this.number();
|
|
58172
58546
|
this.state = 929;
|
|
58547
|
+
this.match(ForgeParser.COMMA_TOK);
|
|
58548
|
+
this.state = 930;
|
|
58173
58549
|
this.numberList();
|
|
58174
58550
|
}
|
|
58175
58551
|
break;
|
|
@@ -58197,7 +58573,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58197
58573
|
try {
|
|
58198
58574
|
this.enterOuterAlt(_localctx, 1);
|
|
58199
58575
|
{
|
|
58200
|
-
this.state =
|
|
58576
|
+
this.state = 934;
|
|
58201
58577
|
this.match(ForgeParser.NUM_CONST_TOK);
|
|
58202
58578
|
}
|
|
58203
58579
|
}
|
|
@@ -58222,29 +58598,29 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58222
58598
|
this.enterRule(_localctx, 156, ForgeParser.RULE_bounds);
|
|
58223
58599
|
let _la;
|
|
58224
58600
|
try {
|
|
58225
|
-
this.state =
|
|
58601
|
+
this.state = 948;
|
|
58226
58602
|
this._errHandler.sync(this);
|
|
58227
58603
|
switch (this._input.LA(1)) {
|
|
58228
58604
|
case ForgeParser.LEFT_CURLY_TOK:
|
|
58229
58605
|
this.enterOuterAlt(_localctx, 1);
|
|
58230
58606
|
{
|
|
58231
|
-
this.state =
|
|
58607
|
+
this.state = 936;
|
|
58232
58608
|
this.match(ForgeParser.LEFT_CURLY_TOK);
|
|
58233
|
-
this.state =
|
|
58609
|
+
this.state = 940;
|
|
58234
58610
|
this._errHandler.sync(this);
|
|
58235
58611
|
_la = this._input.LA(1);
|
|
58236
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)) {
|
|
58237
58613
|
{
|
|
58238
58614
|
{
|
|
58239
|
-
this.state =
|
|
58615
|
+
this.state = 937;
|
|
58240
58616
|
this.bound();
|
|
58241
58617
|
}
|
|
58242
58618
|
}
|
|
58243
|
-
this.state =
|
|
58619
|
+
this.state = 942;
|
|
58244
58620
|
this._errHandler.sync(this);
|
|
58245
58621
|
_la = this._input.LA(1);
|
|
58246
58622
|
}
|
|
58247
|
-
this.state =
|
|
58623
|
+
this.state = 943;
|
|
58248
58624
|
this.match(ForgeParser.RIGHT_CURLY_TOK);
|
|
58249
58625
|
}
|
|
58250
58626
|
break;
|
|
@@ -58256,16 +58632,16 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58256
58632
|
case ForgeParser.IDENTIFIER_TOK:
|
|
58257
58633
|
this.enterOuterAlt(_localctx, 2);
|
|
58258
58634
|
{
|
|
58259
|
-
this.state =
|
|
58635
|
+
this.state = 945;
|
|
58260
58636
|
this._errHandler.sync(this);
|
|
58261
58637
|
_la = this._input.LA(1);
|
|
58262
58638
|
if (_la === ForgeParser.EXACTLY_TOK) {
|
|
58263
58639
|
{
|
|
58264
|
-
this.state =
|
|
58640
|
+
this.state = 944;
|
|
58265
58641
|
this.match(ForgeParser.EXACTLY_TOK);
|
|
58266
58642
|
}
|
|
58267
58643
|
}
|
|
58268
|
-
this.state =
|
|
58644
|
+
this.state = 947;
|
|
58269
58645
|
this.qualName();
|
|
58270
58646
|
}
|
|
58271
58647
|
break;
|
|
@@ -58293,31 +58669,31 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58293
58669
|
let _localctx = new AtomNameOrNumberContext(this._ctx, this.state);
|
|
58294
58670
|
this.enterRule(_localctx, 158, ForgeParser.RULE_atomNameOrNumber);
|
|
58295
58671
|
try {
|
|
58296
|
-
this.state =
|
|
58672
|
+
this.state = 955;
|
|
58297
58673
|
this._errHandler.sync(this);
|
|
58298
58674
|
switch (this._input.LA(1)) {
|
|
58299
58675
|
case ForgeParser.BACKQUOTE_TOK:
|
|
58300
58676
|
this.enterOuterAlt(_localctx, 1);
|
|
58301
58677
|
{
|
|
58302
|
-
this.state = 949;
|
|
58303
|
-
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
58304
58678
|
this.state = 950;
|
|
58679
|
+
this.match(ForgeParser.BACKQUOTE_TOK);
|
|
58680
|
+
this.state = 951;
|
|
58305
58681
|
this.name();
|
|
58306
58682
|
}
|
|
58307
58683
|
break;
|
|
58308
58684
|
case ForgeParser.NUM_CONST_TOK:
|
|
58309
58685
|
this.enterOuterAlt(_localctx, 2);
|
|
58310
58686
|
{
|
|
58311
|
-
this.state =
|
|
58687
|
+
this.state = 952;
|
|
58312
58688
|
this.number();
|
|
58313
58689
|
}
|
|
58314
58690
|
break;
|
|
58315
58691
|
case ForgeParser.MINUS_TOK:
|
|
58316
58692
|
this.enterOuterAlt(_localctx, 3);
|
|
58317
58693
|
{
|
|
58318
|
-
this.state = 952;
|
|
58319
|
-
this.match(ForgeParser.MINUS_TOK);
|
|
58320
58694
|
this.state = 953;
|
|
58695
|
+
this.match(ForgeParser.MINUS_TOK);
|
|
58696
|
+
this.state = 954;
|
|
58321
58697
|
this.number();
|
|
58322
58698
|
}
|
|
58323
58699
|
break;
|
|
@@ -58345,33 +58721,33 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58345
58721
|
let _localctx = new BoundContext(this._ctx, this.state);
|
|
58346
58722
|
this.enterRule(_localctx, 160, ForgeParser.RULE_bound);
|
|
58347
58723
|
try {
|
|
58348
|
-
this.state =
|
|
58724
|
+
this.state = 964;
|
|
58349
58725
|
this._errHandler.sync(this);
|
|
58350
58726
|
switch (this.interpreter.adaptivePredict(this._input, 110, this._ctx)) {
|
|
58351
58727
|
case 1:
|
|
58352
58728
|
this.enterOuterAlt(_localctx, 1);
|
|
58353
58729
|
{
|
|
58354
|
-
this.state = 956;
|
|
58355
|
-
this.boundLHS();
|
|
58356
58730
|
this.state = 957;
|
|
58357
|
-
this.
|
|
58731
|
+
this.boundLHS();
|
|
58358
58732
|
this.state = 958;
|
|
58733
|
+
this.compareOp();
|
|
58734
|
+
this.state = 959;
|
|
58359
58735
|
this.bindRHSUnion(0);
|
|
58360
58736
|
}
|
|
58361
58737
|
break;
|
|
58362
58738
|
case 2:
|
|
58363
58739
|
this.enterOuterAlt(_localctx, 2);
|
|
58364
58740
|
{
|
|
58365
|
-
this.state = 960;
|
|
58366
|
-
this.match(ForgeParser.NO_TOK);
|
|
58367
58741
|
this.state = 961;
|
|
58742
|
+
this.match(ForgeParser.NO_TOK);
|
|
58743
|
+
this.state = 962;
|
|
58368
58744
|
this.boundLHS();
|
|
58369
58745
|
}
|
|
58370
58746
|
break;
|
|
58371
58747
|
case 3:
|
|
58372
58748
|
this.enterOuterAlt(_localctx, 3);
|
|
58373
58749
|
{
|
|
58374
|
-
this.state =
|
|
58750
|
+
this.state = 963;
|
|
58375
58751
|
this.qualName();
|
|
58376
58752
|
}
|
|
58377
58753
|
break;
|
|
@@ -58398,15 +58774,15 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58398
58774
|
this.enterRule(_localctx, 162, ForgeParser.RULE_boundLHS);
|
|
58399
58775
|
let _la;
|
|
58400
58776
|
try {
|
|
58401
|
-
this.state =
|
|
58777
|
+
this.state = 976;
|
|
58402
58778
|
this._errHandler.sync(this);
|
|
58403
58779
|
switch (this._input.LA(1)) {
|
|
58404
58780
|
case ForgeParser.CARD_TOK:
|
|
58405
58781
|
this.enterOuterAlt(_localctx, 1);
|
|
58406
58782
|
{
|
|
58407
|
-
this.state = 965;
|
|
58408
|
-
this.match(ForgeParser.CARD_TOK);
|
|
58409
58783
|
this.state = 966;
|
|
58784
|
+
this.match(ForgeParser.CARD_TOK);
|
|
58785
|
+
this.state = 967;
|
|
58410
58786
|
this.qualName();
|
|
58411
58787
|
}
|
|
58412
58788
|
break;
|
|
@@ -58417,7 +58793,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58417
58793
|
case ForgeParser.IDENTIFIER_TOK:
|
|
58418
58794
|
this.enterOuterAlt(_localctx, 2);
|
|
58419
58795
|
{
|
|
58420
|
-
this.state =
|
|
58796
|
+
this.state = 968;
|
|
58421
58797
|
this.qualName();
|
|
58422
58798
|
}
|
|
58423
58799
|
break;
|
|
@@ -58426,21 +58802,21 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58426
58802
|
case ForgeParser.NUM_CONST_TOK:
|
|
58427
58803
|
this.enterOuterAlt(_localctx, 3);
|
|
58428
58804
|
{
|
|
58429
|
-
this.state =
|
|
58805
|
+
this.state = 969;
|
|
58430
58806
|
this.atomNameOrNumber();
|
|
58431
|
-
this.state =
|
|
58807
|
+
this.state = 972;
|
|
58432
58808
|
this._errHandler.sync(this);
|
|
58433
58809
|
_la = this._input.LA(1);
|
|
58434
58810
|
do {
|
|
58435
58811
|
{
|
|
58436
58812
|
{
|
|
58437
|
-
this.state = 969;
|
|
58438
|
-
this.match(ForgeParser.DOT_TOK);
|
|
58439
58813
|
this.state = 970;
|
|
58814
|
+
this.match(ForgeParser.DOT_TOK);
|
|
58815
|
+
this.state = 971;
|
|
58440
58816
|
this.qualName();
|
|
58441
58817
|
}
|
|
58442
58818
|
}
|
|
58443
|
-
this.state =
|
|
58819
|
+
this.state = 974;
|
|
58444
58820
|
this._errHandler.sync(this);
|
|
58445
58821
|
_la = this._input.LA(1);
|
|
58446
58822
|
} while (_la === ForgeParser.DOT_TOK);
|
|
@@ -58480,28 +58856,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58480
58856
|
let _alt;
|
|
58481
58857
|
this.enterOuterAlt(_localctx, 1);
|
|
58482
58858
|
{
|
|
58483
|
-
this.state =
|
|
58859
|
+
this.state = 984;
|
|
58484
58860
|
this._errHandler.sync(this);
|
|
58485
58861
|
switch (this.interpreter.adaptivePredict(this._input, 113, this._ctx)) {
|
|
58486
58862
|
case 1:
|
|
58487
58863
|
{
|
|
58488
|
-
this.state =
|
|
58864
|
+
this.state = 979;
|
|
58489
58865
|
this.bindRHSProduct(0);
|
|
58490
58866
|
}
|
|
58491
58867
|
break;
|
|
58492
58868
|
case 2:
|
|
58493
58869
|
{
|
|
58494
|
-
this.state = 979;
|
|
58495
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58496
58870
|
this.state = 980;
|
|
58497
|
-
this.
|
|
58871
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58498
58872
|
this.state = 981;
|
|
58873
|
+
this.bindRHSUnion(0);
|
|
58874
|
+
this.state = 982;
|
|
58499
58875
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
58500
58876
|
}
|
|
58501
58877
|
break;
|
|
58502
58878
|
}
|
|
58503
58879
|
this._ctx._stop = this._input.tryLT(-1);
|
|
58504
|
-
this.state =
|
|
58880
|
+
this.state = 991;
|
|
58505
58881
|
this._errHandler.sync(this);
|
|
58506
58882
|
_alt = this.interpreter.adaptivePredict(this._input, 114, this._ctx);
|
|
58507
58883
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -58514,18 +58890,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58514
58890
|
{
|
|
58515
58891
|
_localctx = new BindRHSUnionContext(_parentctx, _parentState);
|
|
58516
58892
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_bindRHSUnion);
|
|
58517
|
-
this.state =
|
|
58893
|
+
this.state = 986;
|
|
58518
58894
|
if (!(this.precpred(this._ctx, 2))) {
|
|
58519
58895
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
|
|
58520
58896
|
}
|
|
58521
|
-
this.state = 986;
|
|
58522
|
-
this.match(ForgeParser.PLUS_TOK);
|
|
58523
58897
|
this.state = 987;
|
|
58898
|
+
this.match(ForgeParser.PLUS_TOK);
|
|
58899
|
+
this.state = 988;
|
|
58524
58900
|
this.bindRHSProduct(0);
|
|
58525
58901
|
}
|
|
58526
58902
|
}
|
|
58527
58903
|
}
|
|
58528
|
-
this.state =
|
|
58904
|
+
this.state = 993;
|
|
58529
58905
|
this._errHandler.sync(this);
|
|
58530
58906
|
_alt = this.interpreter.adaptivePredict(this._input, 114, this._ctx);
|
|
58531
58907
|
}
|
|
@@ -58562,28 +58938,28 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58562
58938
|
let _alt;
|
|
58563
58939
|
this.enterOuterAlt(_localctx, 1);
|
|
58564
58940
|
{
|
|
58565
|
-
this.state =
|
|
58941
|
+
this.state = 1000;
|
|
58566
58942
|
this._errHandler.sync(this);
|
|
58567
58943
|
switch (this.interpreter.adaptivePredict(this._input, 115, this._ctx)) {
|
|
58568
58944
|
case 1:
|
|
58569
58945
|
{
|
|
58570
|
-
this.state = 994;
|
|
58571
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58572
58946
|
this.state = 995;
|
|
58573
|
-
this.
|
|
58947
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58574
58948
|
this.state = 996;
|
|
58949
|
+
this.bindRHSProduct(0);
|
|
58950
|
+
this.state = 997;
|
|
58575
58951
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
58576
58952
|
}
|
|
58577
58953
|
break;
|
|
58578
58954
|
case 2:
|
|
58579
58955
|
{
|
|
58580
|
-
this.state =
|
|
58956
|
+
this.state = 999;
|
|
58581
58957
|
this.bindRHSProductBase();
|
|
58582
58958
|
}
|
|
58583
58959
|
break;
|
|
58584
58960
|
}
|
|
58585
58961
|
this._ctx._stop = this._input.tryLT(-1);
|
|
58586
|
-
this.state =
|
|
58962
|
+
this.state = 1007;
|
|
58587
58963
|
this._errHandler.sync(this);
|
|
58588
58964
|
_alt = this.interpreter.adaptivePredict(this._input, 116, this._ctx);
|
|
58589
58965
|
while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
|
|
@@ -58596,11 +58972,11 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58596
58972
|
{
|
|
58597
58973
|
_localctx = new BindRHSProductContext(_parentctx, _parentState);
|
|
58598
58974
|
this.pushNewRecursionContext(_localctx, _startState, ForgeParser.RULE_bindRHSProduct);
|
|
58599
|
-
this.state =
|
|
58975
|
+
this.state = 1002;
|
|
58600
58976
|
if (!(this.precpred(this._ctx, 2))) {
|
|
58601
58977
|
throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
|
|
58602
58978
|
}
|
|
58603
|
-
this.state =
|
|
58979
|
+
this.state = 1003;
|
|
58604
58980
|
_la = this._input.LA(1);
|
|
58605
58981
|
if (!(_la === ForgeParser.ARROW_TOK || _la === ForgeParser.COMMA_TOK)) {
|
|
58606
58982
|
this._errHandler.recoverInline(this);
|
|
@@ -58612,12 +58988,12 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58612
58988
|
this._errHandler.reportMatch(this);
|
|
58613
58989
|
this.consume();
|
|
58614
58990
|
}
|
|
58615
|
-
this.state =
|
|
58991
|
+
this.state = 1004;
|
|
58616
58992
|
this.bindRHSProductBase();
|
|
58617
58993
|
}
|
|
58618
58994
|
}
|
|
58619
58995
|
}
|
|
58620
|
-
this.state =
|
|
58996
|
+
this.state = 1009;
|
|
58621
58997
|
this._errHandler.sync(this);
|
|
58622
58998
|
_alt = this.interpreter.adaptivePredict(this._input, 116, this._ctx);
|
|
58623
58999
|
}
|
|
@@ -58643,7 +59019,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58643
59019
|
let _localctx = new BindRHSProductBaseContext(this._ctx, this.state);
|
|
58644
59020
|
this.enterRule(_localctx, 168, ForgeParser.RULE_bindRHSProductBase);
|
|
58645
59021
|
try {
|
|
58646
|
-
this.state =
|
|
59022
|
+
this.state = 1016;
|
|
58647
59023
|
this._errHandler.sync(this);
|
|
58648
59024
|
switch (this._input.LA(1)) {
|
|
58649
59025
|
case ForgeParser.MINUS_TOK:
|
|
@@ -58651,7 +59027,7 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58651
59027
|
case ForgeParser.NUM_CONST_TOK:
|
|
58652
59028
|
this.enterOuterAlt(_localctx, 1);
|
|
58653
59029
|
{
|
|
58654
|
-
this.state =
|
|
59030
|
+
this.state = 1010;
|
|
58655
59031
|
this.atomNameOrNumber();
|
|
58656
59032
|
}
|
|
58657
59033
|
break;
|
|
@@ -58662,18 +59038,18 @@ class ForgeParser extends Parser_1.Parser {
|
|
|
58662
59038
|
case ForgeParser.IDENTIFIER_TOK:
|
|
58663
59039
|
this.enterOuterAlt(_localctx, 2);
|
|
58664
59040
|
{
|
|
58665
|
-
this.state =
|
|
59041
|
+
this.state = 1011;
|
|
58666
59042
|
this.qualName();
|
|
58667
59043
|
}
|
|
58668
59044
|
break;
|
|
58669
59045
|
case ForgeParser.LEFT_PAREN_TOK:
|
|
58670
59046
|
this.enterOuterAlt(_localctx, 3);
|
|
58671
59047
|
{
|
|
58672
|
-
this.state = 1011;
|
|
58673
|
-
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58674
59048
|
this.state = 1012;
|
|
58675
|
-
this.
|
|
59049
|
+
this.match(ForgeParser.LEFT_PAREN_TOK);
|
|
58676
59050
|
this.state = 1013;
|
|
59051
|
+
this.bindRHSUnion(0);
|
|
59052
|
+
this.state = 1014;
|
|
58677
59053
|
this.match(ForgeParser.RIGHT_PAREN_TOK);
|
|
58678
59054
|
}
|
|
58679
59055
|
break;
|
|
@@ -58848,7 +59224,7 @@ ForgeParser.OPEN_TOK = 1;
|
|
|
58848
59224
|
ForgeParser.LEFT_SQUARE_TOK = 2;
|
|
58849
59225
|
ForgeParser.RIGHT_SQUARE_TOK = 3;
|
|
58850
59226
|
ForgeParser.AS_TOK = 4;
|
|
58851
|
-
ForgeParser.
|
|
59227
|
+
ForgeParser.STRING_TOK = 5;
|
|
58852
59228
|
ForgeParser.VAR_TOK = 6;
|
|
58853
59229
|
ForgeParser.ABSTRACT_TOK = 7;
|
|
58854
59230
|
ForgeParser.SIG_TOK = 8;
|
|
@@ -59079,7 +59455,7 @@ ForgeParser._LITERAL_NAMES = [
|
|
|
59079
59455
|
];
|
|
59080
59456
|
ForgeParser._SYMBOLIC_NAMES = [
|
|
59081
59457
|
undefined, "OPEN_TOK", "LEFT_SQUARE_TOK", "RIGHT_SQUARE_TOK", "AS_TOK",
|
|
59082
|
-
"
|
|
59458
|
+
"STRING_TOK", "VAR_TOK", "ABSTRACT_TOK", "SIG_TOK", "LEFT_CURLY_TOK",
|
|
59083
59459
|
"RIGHT_CURLY_TOK", "EXTENDS_TOK", "IN_TOK", "PLUS_TOK", "LONE_TOK", "SOME_TOK",
|
|
59084
59460
|
"ONE_TOK", "TWO_TOK", "SET_TOK", "FUNC_TOK", "PFUNC_TOK", "DISJ_TOK",
|
|
59085
59461
|
"COLON_TOK", "WHEAT_TOK", "PRED_TOK", "DOT_TOK", "FUN_TOK", "LEFT_PAREN_TOK",
|
|
@@ -59101,7 +59477,7 @@ ForgeParser._SYMBOLIC_NAMES = [
|
|
|
59101
59477
|
];
|
|
59102
59478
|
ForgeParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(ForgeParser._LITERAL_NAMES, ForgeParser._SYMBOLIC_NAMES, []);
|
|
59103
59479
|
ForgeParser._serializedATNSegments = 2;
|
|
59104
|
-
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" +
|
|
59105
59481
|
"\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" +
|
|
59106
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" +
|
|
59107
59483
|
"\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" +
|
|
@@ -59144,57 +59520,57 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59144
59520
|
"\n\x16\f\x16\x0E\x16\u0198\v\x16\x03\x16\x03\x16\x03\x17\x03\x17\x03\x17" +
|
|
59145
59521
|
"\x03\x17\x05\x17\u01A0\n\x17\x03\x17\x03\x17\x05\x17\u01A4\n\x17\x03\x18" +
|
|
59146
59522
|
"\x05\x18\u01A7\n\x18\x03\x18\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03" +
|
|
59147
|
-
"\x19\x05\x19\u01B0\n\x19\x03\x19\x05\x19\
|
|
59148
|
-
"\x1A\x03\x1A\x03\x1A\x05\x1A\
|
|
59149
|
-
"\n\x1A\x03\x1B\x03\x1B\x03\x1B\x05\x1B\
|
|
59150
|
-
"\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B
|
|
59151
|
-
"\x1B\
|
|
59152
|
-
"\n\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x05
|
|
59153
|
-
"\
|
|
59154
|
-
"\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x05\x1D\
|
|
59155
|
-
"\x1D\
|
|
59156
|
-
"\
|
|
59157
|
-
"\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x05\x1F\
|
|
59158
|
-
"\n \x03 \x03 \x03 \x05 \
|
|
59159
|
-
"#\x03#\x07#\
|
|
59160
|
-
"\n$\x03%\x03%\x03%\x03%\x05%\
|
|
59161
|
-
"&\x03&\x07&\
|
|
59162
|
-
"\'\x03\'\x03\'\x03\'\x03\'\x05\'\
|
|
59163
|
-
"\x03(\x03)\x03)\x03)\x03)\x03)\x05)\
|
|
59164
|
-
"\x05*\
|
|
59165
|
-
",\x03,\x05,\
|
|
59166
|
-
"\x03.\x03.\x03.\x05.\
|
|
59167
|
-
"
|
|
59168
|
-
"1\x031\x031\x031\x031\x051\
|
|
59169
|
-
"\x032\x032\x032\x032\x032\x072\
|
|
59170
|
-
"3\x033\x033\x033\x073\
|
|
59171
|
-
"4\x034\x074\
|
|
59172
|
-
"5\
|
|
59173
|
-
"
|
|
59174
|
-
"7\x037\x037\x037\x037\x037\x037\x057\
|
|
59175
|
-
"8\x038\x038\x038\x038\x038\x038\x038\x038\x038\x038\x058\
|
|
59176
|
-
"
|
|
59177
|
-
"
|
|
59178
|
-
"
|
|
59179
|
-
"=\x03=\x03=\x03=\x03=\x07=\
|
|
59180
|
-
">\x03>\x03>\x07>\
|
|
59181
|
-
"?\x03?\x07?\
|
|
59182
|
-
"@\
|
|
59183
|
-
"A\
|
|
59184
|
-
"\nB\x03B\x03B\x03B\x07B\
|
|
59185
|
-
"\x03C\x07C\
|
|
59186
|
-
"
|
|
59187
|
-
"E\x03E\x03E\x03E\x05E\
|
|
59188
|
-
"\x03G\x03G\x03H\x03H\x03I\x03I\x03I\x03I\x05I\
|
|
59189
|
-
"\x03K\x03K\x03L\x03L\x03L\x03L\x03L\x03L\x03L\x03M\x03M\x03M\x03M\x03" +
|
|
59190
|
-
"M\x03M\x03N\x03N\x03N\x03N\x03N\x05N\
|
|
59191
|
-
"P\
|
|
59192
|
-
"P\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\
|
|
59193
|
-
"R\x03R\x05R\
|
|
59194
|
-
"S\
|
|
59195
|
-
"T\x03T\x03T\x07T\
|
|
59196
|
-
"U\x05U\
|
|
59197
|
-
"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" +
|
|
59198
59574
|
"\x84\xA6\xA8W\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02" +
|
|
59199
59575
|
"\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02" +
|
|
59200
59576
|
"&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02" +
|
|
@@ -59206,7 +59582,7 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59206
59582
|
"\x04\x02\x10\x10\x12\x16\x05\x02\x10\x10\x12\x12\x14\x16\x03\x02 !\x03" +
|
|
59207
59583
|
"\x02*.\x04\x02*+--\x03\x0245\x03\x0267\x05\x02\x0E\x0E))af\x03\x02no\x04" +
|
|
59208
59584
|
"\x02\x10\x14gg\x04\x02\x0F\x0F((\x03\x02OP\x04\x02RT]`\x04\x02\\\\kk\x02" +
|
|
59209
|
-
"\
|
|
59585
|
+
"\u0450\x02\xAC\x03\x02\x02\x02\x04\xBB\x03\x02\x02\x02\x06\xD0\x03\x02" +
|
|
59210
59586
|
"\x02\x02\b\xE4\x03\x02\x02\x02\n\xF7\x03\x02\x02\x02\f\xFA\x03\x02\x02" +
|
|
59211
59587
|
"\x02\x0E\u011A\x03\x02\x02\x02\x10\u011C\x03\x02\x02\x02\x12\u011E\x03" +
|
|
59212
59588
|
"\x02\x02\x02\x14\u0120\x03\x02\x02\x02\x16\u0123\x03\x02\x02\x02\x18\u012D" +
|
|
@@ -59214,28 +59590,28 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59214
59590
|
"\u0140\x03\x02\x02\x02 \u015D\x03\x02\x02\x02\"\u015F\x03\x02\x02\x02" +
|
|
59215
59591
|
"$\u0168\x03\x02\x02\x02&\u0179\x03\x02\x02\x02(\u018A\x03\x02\x02\x02" +
|
|
59216
59592
|
"*\u0192\x03\x02\x02\x02,\u01A3\x03\x02\x02\x02.\u01A6\x03\x02\x02\x02" +
|
|
59217
|
-
"0\
|
|
59218
|
-
"6\
|
|
59219
|
-
"<\
|
|
59220
|
-
"B\
|
|
59221
|
-
"H\
|
|
59222
|
-
"N\
|
|
59223
|
-
"T\
|
|
59224
|
-
"Z\
|
|
59225
|
-
"`\
|
|
59226
|
-
"f\
|
|
59227
|
-
"l\
|
|
59228
|
-
"r\
|
|
59229
|
-
"x\
|
|
59230
|
-
"~\
|
|
59231
|
-
"\x02\x84\
|
|
59232
|
-
"\x02\x02\x02\x8A\
|
|
59233
|
-
"\x03\x02\x02\x02\x90\
|
|
59234
|
-
"\
|
|
59235
|
-
"\x02\x9A\
|
|
59236
|
-
"\x02\x02\x02\xA0\
|
|
59237
|
-
"\x03\x02\x02\x02\xA6\
|
|
59238
|
-
"\
|
|
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" +
|
|
59239
59615
|
"\xAE\xAD\x03\x02\x02\x02\xAE\xAF\x03\x02\x02\x02\xAF\xB3\x03\x02\x02\x02" +
|
|
59240
59616
|
"\xB0\xB1\x05J&\x02\xB1\xB2\x07\x1B\x02\x02\xB2\xB4\x03\x02\x02\x02\xB3" +
|
|
59241
59617
|
"\xB0\x03\x02\x02\x02\xB3\xB4\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5" +
|
|
@@ -59347,272 +59723,273 @@ ForgeParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\u
|
|
|
59347
59723
|
"\x05\\/\x02\u01A3\u019B\x03\x02\x02\x02\u01A3\u01A1\x03\x02\x02\x02\u01A4" +
|
|
59348
59724
|
"-\x03\x02\x02\x02\u01A5\u01A7\x07$\x02\x02\u01A6\u01A5\x03\x02\x02\x02" +
|
|
59349
59725
|
"\u01A6\u01A7\x03\x02\x02\x02\u01A7\u01A8\x03\x02\x02\x02\u01A8\u01A9\x05" +
|
|
59350
|
-
"\x9CO\x02\u01A9\u01AA\x05J&\x02\u01AA/\x03\x02\x02\x02\u01AB\
|
|
59351
|
-
"%\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" +
|
|
59352
59728
|
"\x07(\x02\x02\u01AF\u01AE\x03\x02\x02\x02\u01AF\u01B0\x03\x02\x02\x02" +
|
|
59353
|
-
"\u01B0\u01B1\x03\x02\x02\x02\u01B1\
|
|
59354
|
-
"\
|
|
59355
|
-
"\
|
|
59356
|
-
"\x02\
|
|
59357
|
-
"\
|
|
59358
|
-
"\
|
|
59359
|
-
ForgeParser._serializedATNSegment1 = "\x02\x02\
|
|
59360
|
-
"\
|
|
59361
|
-
"\
|
|
59362
|
-
"\x02\
|
|
59363
|
-
"\x03\x02\x02\x02\u01C4\
|
|
59364
|
-
"\
|
|
59365
|
-
"\
|
|
59366
|
-
"\
|
|
59367
|
-
"\
|
|
59368
|
-
"\
|
|
59369
|
-
"\x02\
|
|
59370
|
-
"\
|
|
59371
|
-
"\
|
|
59372
|
-
"\x02\
|
|
59373
|
-
"\x02\u01DC\
|
|
59374
|
-
"\
|
|
59375
|
-
"\
|
|
59376
|
-
"\x02\u01E3\
|
|
59377
|
-
"\x02\x02\x02\u01E5\
|
|
59378
|
-
"\x07
|
|
59379
|
-
"\
|
|
59380
|
-
"\
|
|
59381
|
-
"\x02\
|
|
59382
|
-
"\
|
|
59383
|
-
"\
|
|
59384
|
-
"\
|
|
59385
|
-
"\x02\
|
|
59386
|
-
"\x03\x02\x02\x02\u01FB\
|
|
59387
|
-
"\
|
|
59388
|
-
"
|
|
59389
|
-
"
|
|
59390
|
-
"\
|
|
59391
|
-
"\
|
|
59392
|
-
"\x02\x02\x02\u0206
|
|
59393
|
-
"\
|
|
59394
|
-
"\
|
|
59395
|
-
"
|
|
59396
|
-
"\
|
|
59397
|
-
"\
|
|
59398
|
-
"\x02\x02\
|
|
59399
|
-
"
|
|
59400
|
-
"`1\x02\
|
|
59401
|
-
"\
|
|
59402
|
-
"\
|
|
59403
|
-
"\x02\x02\
|
|
59404
|
-
"
|
|
59405
|
-
"\x03\x02\x02\x02\
|
|
59406
|
-
"\
|
|
59407
|
-
"\x02\u0228\
|
|
59408
|
-
"\
|
|
59409
|
-
"\
|
|
59410
|
-
"\x02\u022D\
|
|
59411
|
-
"
|
|
59412
|
-
"\
|
|
59413
|
-
"\x02\x02\u0234\
|
|
59414
|
-
"\
|
|
59415
|
-
"\
|
|
59416
|
-
"\
|
|
59417
|
-
"
|
|
59418
|
-
"
|
|
59419
|
-
"\
|
|
59420
|
-
"\
|
|
59421
|
-
"\x02\
|
|
59422
|
-
"\
|
|
59423
|
-
"\
|
|
59424
|
-
"\
|
|
59425
|
-
"\
|
|
59426
|
-
"\
|
|
59427
|
-
"\x02\x02\
|
|
59428
|
-
"\
|
|
59429
|
-
"\
|
|
59430
|
-
"\
|
|
59431
|
-
"\
|
|
59432
|
-
"\
|
|
59433
|
-
"
|
|
59434
|
-
"\x02\
|
|
59435
|
-
"\x02\
|
|
59436
|
-
"
|
|
59437
|
-
"\
|
|
59438
|
-
"\
|
|
59439
|
-
"\x02\x02\
|
|
59440
|
-
"\
|
|
59441
|
-
"\
|
|
59442
|
-
"\
|
|
59443
|
-
"\x02\
|
|
59444
|
-
"\x02\
|
|
59445
|
-
"\
|
|
59446
|
-
"\
|
|
59447
|
-
"\
|
|
59448
|
-
"\
|
|
59449
|
-
"\
|
|
59450
|
-
"\
|
|
59451
|
-
"\
|
|
59452
|
-
"\
|
|
59453
|
-
"\
|
|
59454
|
-
"\
|
|
59455
|
-
"\x03\x02\x02\
|
|
59456
|
-
"\
|
|
59457
|
-
"\
|
|
59458
|
-
"\x02\x02\
|
|
59459
|
-
"\
|
|
59460
|
-
"\u02A4\
|
|
59461
|
-
"\x02\x02\u02A6\
|
|
59462
|
-
"\
|
|
59463
|
-
"\
|
|
59464
|
-
"\
|
|
59465
|
-
"\
|
|
59466
|
-
"\
|
|
59467
|
-
"\
|
|
59468
|
-
"\
|
|
59469
|
-
"\x02\x02\u02BA\
|
|
59470
|
-
"
|
|
59471
|
-
"\x03\x02\x02\x02\
|
|
59472
|
-
"\
|
|
59473
|
-
"\u02C4\
|
|
59474
|
-
"\x02\x02\u02C6\
|
|
59475
|
-
"\
|
|
59476
|
-
"\
|
|
59477
|
-
"\
|
|
59478
|
-
"\
|
|
59479
|
-
"\
|
|
59480
|
-
"\
|
|
59481
|
-
"\
|
|
59482
|
-
"\
|
|
59483
|
-
"\
|
|
59484
|
-
"\
|
|
59485
|
-
"\
|
|
59486
|
-
"\
|
|
59487
|
-
"\
|
|
59488
|
-
"\u02E9\
|
|
59489
|
-
"\
|
|
59490
|
-
"\
|
|
59491
|
-
"\x02\
|
|
59492
|
-
"\x02\
|
|
59493
|
-
"\
|
|
59494
|
-
"\
|
|
59495
|
-
"\
|
|
59496
|
-
"\x02\x02\x02\u02F7\
|
|
59497
|
-
"\
|
|
59498
|
-
"\
|
|
59499
|
-
"\
|
|
59500
|
-
"\
|
|
59501
|
-
"\
|
|
59502
|
-
"\
|
|
59503
|
-
"
|
|
59504
|
-
"\
|
|
59505
|
-
"\u030D\
|
|
59506
|
-
"\
|
|
59507
|
-
"\x02\x02\
|
|
59508
|
-
"\x02\x02\
|
|
59509
|
-
"\
|
|
59510
|
-
"\
|
|
59511
|
-
"\x02\
|
|
59512
|
-
"\
|
|
59513
|
-
"\
|
|
59514
|
-
"\x02\u0324\
|
|
59515
|
-
"
|
|
59516
|
-
"\
|
|
59517
|
-
"\
|
|
59518
|
-
"\
|
|
59519
|
-
"\
|
|
59520
|
-
"\x02\x02\
|
|
59521
|
-
"\
|
|
59522
|
-
"\x02\
|
|
59523
|
-
"\x03\x02\x02\x02\u033B\
|
|
59524
|
-
"\
|
|
59525
|
-
"\x02\
|
|
59526
|
-
"\
|
|
59527
|
-
"\
|
|
59528
|
-
"\x02\x02\u0347\
|
|
59529
|
-
"\
|
|
59530
|
-
"\
|
|
59531
|
-
"\
|
|
59532
|
-
"\x02\x02\u0351\
|
|
59533
|
-
"\
|
|
59534
|
-
"\
|
|
59535
|
-
"\x02\x02\x02\u0358\
|
|
59536
|
-
"\
|
|
59537
|
-
"\
|
|
59538
|
-
"\
|
|
59539
|
-
"\
|
|
59540
|
-
"\
|
|
59541
|
-
"\
|
|
59542
|
-
"\
|
|
59543
|
-
"\
|
|
59544
|
-
"\
|
|
59545
|
-
"\
|
|
59546
|
-
"\
|
|
59547
|
-
"\
|
|
59548
|
-
"
|
|
59549
|
-
"
|
|
59550
|
-
"\
|
|
59551
|
-
"\
|
|
59552
|
-
"\
|
|
59553
|
-
"\
|
|
59554
|
-
"\x02\
|
|
59555
|
-
"\
|
|
59556
|
-
"\
|
|
59557
|
-
"\
|
|
59558
|
-
"\
|
|
59559
|
-
"\
|
|
59560
|
-
"\
|
|
59561
|
-
"\
|
|
59562
|
-
"\
|
|
59563
|
-
"\
|
|
59564
|
-
"\
|
|
59565
|
-
"\
|
|
59566
|
-
"
|
|
59567
|
-
"\x02\
|
|
59568
|
-
"\
|
|
59569
|
-
"\
|
|
59570
|
-
"\
|
|
59571
|
-
"\
|
|
59572
|
-
"\x02\x02\
|
|
59573
|
-
"\
|
|
59574
|
-
"\
|
|
59575
|
-
"\
|
|
59576
|
-
"\
|
|
59577
|
-
"\
|
|
59578
|
-
"\
|
|
59579
|
-
"\
|
|
59580
|
-
"\
|
|
59581
|
-
"\
|
|
59582
|
-
"\
|
|
59583
|
-
"\
|
|
59584
|
-
"\x02\
|
|
59585
|
-
"\x02\
|
|
59586
|
-
"\u03D0\x03\x02\x02\x02\u03D0\
|
|
59587
|
-
"\
|
|
59588
|
-
"\
|
|
59589
|
-
"\
|
|
59590
|
-
"\
|
|
59591
|
-
"\x03\x02\x02\x02\u03DA\
|
|
59592
|
-
"\
|
|
59593
|
-
"\
|
|
59594
|
-
"\
|
|
59595
|
-
"\
|
|
59596
|
-
"\
|
|
59597
|
-
"\
|
|
59598
|
-
"\x02\u03EA\
|
|
59599
|
-
"\
|
|
59600
|
-
"\
|
|
59601
|
-
"\x02\x02\u03F1\
|
|
59602
|
-
"\
|
|
59603
|
-
"\
|
|
59604
|
-
"\x02\u03F9\
|
|
59605
|
-
"\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" +
|
|
59606
59983
|
"\xD8\xDC\xE2\xE4\xF7\xFA\xFD\u0100\u0105\u0109\u010D\u0117\u011A\u0123" +
|
|
59607
59984
|
"\u0128\u012D\u0132\u0137\u0144\u0148\u014C\u0155\u015A\u015D\u0161\u0168" +
|
|
59608
59985
|
"\u016D\u0170\u0174\u0179\u017D\u0180\u0184\u018A\u018E\u0196\u019F\u01A3" +
|
|
59609
|
-
"\u01A6\u01AF\
|
|
59610
|
-
"\
|
|
59611
|
-
"\
|
|
59612
|
-
"\
|
|
59613
|
-
"\
|
|
59614
|
-
"\
|
|
59615
|
-
"\
|
|
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";
|
|
59616
59993
|
ForgeParser._serializedATN = Utils.join([
|
|
59617
59994
|
ForgeParser._serializedATNSegment0,
|
|
59618
59995
|
ForgeParser._serializedATNSegment1,
|
|
@@ -59763,7 +60140,7 @@ class ImportDeclContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
59763
60140
|
name() {
|
|
59764
60141
|
return this.tryGetRuleContext(0, NameContext);
|
|
59765
60142
|
}
|
|
59766
|
-
|
|
60143
|
+
STRING_TOK() { return this.tryGetToken(ForgeParser.STRING_TOK, 0); }
|
|
59767
60144
|
constructor(parent, invokingState) {
|
|
59768
60145
|
super(parent, invokingState);
|
|
59769
60146
|
}
|
|
@@ -60601,6 +60978,7 @@ class ConstContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
60601
60978
|
return this.tryGetRuleContext(0, NumberContext);
|
|
60602
60979
|
}
|
|
60603
60980
|
MINUS_TOK() { return this.tryGetToken(ForgeParser.MINUS_TOK, 0); }
|
|
60981
|
+
STRING_TOK() { return this.tryGetToken(ForgeParser.STRING_TOK, 0); }
|
|
60604
60982
|
constructor(parent, invokingState) {
|
|
60605
60983
|
super(parent, invokingState);
|
|
60606
60984
|
}
|
|
@@ -61216,7 +61594,7 @@ class OptionDeclContext extends ParserRuleContext_1.ParserRuleContext {
|
|
|
61216
61594
|
return this.getRuleContext(i, QualNameContext);
|
|
61217
61595
|
}
|
|
61218
61596
|
}
|
|
61219
|
-
|
|
61597
|
+
STRING_TOK() { return this.tryGetToken(ForgeParser.STRING_TOK, 0); }
|
|
61220
61598
|
number() {
|
|
61221
61599
|
return this.tryGetRuleContext(0, NumberContext);
|
|
61222
61600
|
}
|
|
@@ -63333,6 +63711,11 @@ class SimpleGraphQueryEvaluator {
|
|
|
63333
63711
|
// underlying IDataInstance -- callers must signal that themselves.
|
|
63334
63712
|
this.cachedEvaluator = null;
|
|
63335
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 = [];
|
|
63336
63719
|
this.datum = datum;
|
|
63337
63720
|
}
|
|
63338
63721
|
/**
|
|
@@ -63358,6 +63741,24 @@ class SimpleGraphQueryEvaluator {
|
|
|
63358
63741
|
//////// This is empty on parse error? //TODO//////
|
|
63359
63742
|
return tree;
|
|
63360
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
|
+
}
|
|
63361
63762
|
evaluateExpression(forgeExpr) {
|
|
63362
63763
|
// Check cache first
|
|
63363
63764
|
let tree;
|
|
@@ -63373,6 +63774,7 @@ class SimpleGraphQueryEvaluator {
|
|
|
63373
63774
|
}
|
|
63374
63775
|
catch (e) {
|
|
63375
63776
|
// if we can't parse the expression, we return an error
|
|
63777
|
+
this.lastDiagnostics = []; // nothing was evaluated
|
|
63376
63778
|
return {
|
|
63377
63779
|
error: new Error(`Error parsing expression "${forgeExpr}"`)
|
|
63378
63780
|
};
|
|
@@ -63386,12 +63788,20 @@ class SimpleGraphQueryEvaluator {
|
|
|
63386
63788
|
this.cachedEvaluatorDatum = this.datum;
|
|
63387
63789
|
}
|
|
63388
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();
|
|
63389
63794
|
try {
|
|
63390
63795
|
let result = evaluator.visit(tree);
|
|
63796
|
+
this.lastDiagnostics = evaluator.getDiagnostics();
|
|
63391
63797
|
// ensure we're visiting an ExprContext
|
|
63392
63798
|
return result;
|
|
63393
63799
|
}
|
|
63394
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();
|
|
63395
63805
|
// The visit threw mid-traversal, so the evaluator's transient state
|
|
63396
63806
|
// (environment stack) may be inconsistent. Discard the cached
|
|
63397
63807
|
// evaluator so the next call rebuilds from a clean slate. The
|