|
|
@ -167,13 +167,13 @@ interpreter.addAttribute<Affinity>("affinity", { |
|
|
|
affinity(affinityNode: NonterminalNode): Affinity { |
|
|
|
affinity(affinityNode: NonterminalNode): Affinity { |
|
|
|
return (affinityNode as InterpreterNode).affinity |
|
|
|
return (affinityNode as InterpreterNode).affinity |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, elementalType: IterationNode): Affinity { |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, _elementalType: IterationNode): Affinity { |
|
|
|
return (affinity as InterpreterNode).affinity |
|
|
|
return (affinity as InterpreterNode).affinity |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, resource: IterationNode, elementalType: IterationNode): Affinity { |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, _resource: IterationNode, _elementalType: IterationNode): Affinity { |
|
|
|
return (affinity as InterpreterNode).affinity |
|
|
|
return (affinity as InterpreterNode).affinity |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, elementalType: IterationNode): Affinity { |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, _elementalType: IterationNode): Affinity { |
|
|
|
return (affinity as InterpreterNode).affinity |
|
|
|
return (affinity as InterpreterNode).affinity |
|
|
|
}, |
|
|
|
}, |
|
|
|
_iter(...children: readonly Node[]): Affinity { |
|
|
|
_iter(...children: readonly Node[]): Affinity { |
|
|
@ -194,8 +194,8 @@ interpreter.addAttribute<Affinity>("affinity", { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
interpreter.addAttribute<NumberSign>("sign", { |
|
|
|
interpreter.addAttribute<NumberSign>("sign", { |
|
|
|
deltaOperator(oper: NonterminalNode): NumberSign { |
|
|
|
deltaOperator(operator: NonterminalNode): NumberSign { |
|
|
|
return (oper as InterpreterNode).sign |
|
|
|
return (operator as InterpreterNode).sign |
|
|
|
}, |
|
|
|
}, |
|
|
|
plus(_: TerminalNode): NumberSign.Positive { |
|
|
|
plus(_: TerminalNode): NumberSign.Positive { |
|
|
|
return NumberSign.Positive |
|
|
|
return NumberSign.Positive |
|
|
@ -230,13 +230,13 @@ interpreter.addAttribute<number>("numberValue", { |
|
|
|
return number |
|
|
|
return number |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, elementalType: IterationNode): number { |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, _affinity: IterationNode, _elementalType: IterationNode): number { |
|
|
|
return (delta as InterpreterNode).numberValue |
|
|
|
return (delta as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, resource: IterationNode, elementalType: IterationNode): number { |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, _affinity: IterationNode, _resource: IterationNode, _elementalType: IterationNode): number { |
|
|
|
return (delta as InterpreterNode).numberValue |
|
|
|
return (delta as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, elementalType: IterationNode): number { |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, delta: NonterminalNode, _affinity: IterationNode, _elementalType: IterationNode): number { |
|
|
|
return (delta as InterpreterNode).numberValue |
|
|
|
return (delta as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
MaxValue(separator: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
MaxValue(separator: NonterminalNode, integer: NonterminalNode): number { |
|
|
@ -245,7 +245,7 @@ interpreter.addAttribute<number>("numberValue", { |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode, resource: NonterminalNode): number { |
|
|
|
SetValueOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode, _resource: NonterminalNode): number { |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, integer: NonterminalNode): number { |
|
|
@ -254,7 +254,7 @@ interpreter.addAttribute<number>("numberValue", { |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
|
return (maxvalue as InterpreterNode).numberValue; |
|
|
|
return (maxvalue as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode, resource: NonterminalNode): number { |
|
|
|
SetMaxOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode, _resource: NonterminalNode): number { |
|
|
|
return (maxvalue as InterpreterNode).numberValue; |
|
|
|
return (maxvalue as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
@ -263,7 +263,7 @@ interpreter.addAttribute<number>("numberValue", { |
|
|
|
StatusOrItemCounterUnwrapped(x: IterationNode, integer: NonterminalNode): number { |
|
|
|
StatusOrItemCounterUnwrapped(x: IterationNode, integer: NonterminalNode): number { |
|
|
|
return (integer as InterpreterNode).numberValue |
|
|
|
return (integer as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemCounterWrapped(lParen: TerminalNode, counter: NonterminalNode, rParen: TerminalNode): number { |
|
|
|
StatusOrItemCounterWrapped(lParen: TerminalNode, counter: NonterminalNode, _rParen: TerminalNode): number { |
|
|
|
return (counter as InterpreterNode).numberValue |
|
|
|
return (counter as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemAddOperation(operands: NonterminalNode, colon: NonterminalNode, deltaOperator: NonterminalNode, identifier: NonterminalNode, counter: IterationNode): number { |
|
|
|
StatusOrItemAddOperation(operands: NonterminalNode, colon: NonterminalNode, deltaOperator: NonterminalNode, identifier: NonterminalNode, counter: IterationNode): number { |
|
|
@ -308,13 +308,13 @@ interpreter.addAttribute<string>("identifier", { |
|
|
|
identifier(_: TerminalNode, __: IterationNode): string { |
|
|
|
identifier(_: TerminalNode, __: IterationNode): string { |
|
|
|
return this.sourceString |
|
|
|
return this.sourceString |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemAddOperation(operands: NonterminalNode, colon: NonterminalNode, deltaOperator: NonterminalNode, identifier: NonterminalNode, counter: NonterminalNode): string { |
|
|
|
StatusOrItemAddOperation(operands: NonterminalNode, colon: NonterminalNode, deltaOperator: NonterminalNode, identifier: NonterminalNode, _counter: NonterminalNode): string { |
|
|
|
return (identifier as InterpreterNode).identifier |
|
|
|
return (identifier as InterpreterNode).identifier |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemCounterDeltaOperation(operands: NonterminalNode, colon: NonterminalNode, identifier: NonterminalNode, delta: NonterminalNode): string { |
|
|
|
StatusOrItemCounterDeltaOperation(operands: NonterminalNode, colon: NonterminalNode, identifier: NonterminalNode, _delta: NonterminalNode): string { |
|
|
|
return (identifier as InterpreterNode).identifier |
|
|
|
return (identifier as InterpreterNode).identifier |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemCounterSetOperation(operands: NonterminalNode, colon: NonterminalNode, identifier: NonterminalNode, counter: NonterminalNode): string { |
|
|
|
StatusOrItemCounterSetOperation(operands: NonterminalNode, colon: NonterminalNode, identifier: NonterminalNode, _counter: NonterminalNode): string { |
|
|
|
return (identifier as InterpreterNode).identifier |
|
|
|
return (identifier as InterpreterNode).identifier |
|
|
|
}, |
|
|
|
}, |
|
|
|
_iter(): never { |
|
|
|
_iter(): never { |
|
|
@ -406,24 +406,24 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
ZpResource(_: TerminalNode): MeteredResource.Zero { |
|
|
|
ZpResource(_: TerminalNode): MeteredResource.Zero { |
|
|
|
return MeteredResource.Zero; |
|
|
|
return MeteredResource.Zero; |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, elementalType: IterationNode): Resource { |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, _colon: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _elementalType: IterationNode): Resource { |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
if (r === null) { |
|
|
|
if (r === null) { |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, resource: IterationNode, elementalType: IterationNode): Resource|null { |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, resource: IterationNode, _elementalType: IterationNode): Resource|null { |
|
|
|
return (resource as InterpreterNode).resource |
|
|
|
return (resource as InterpreterNode).resource |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, elementalType: IterationNode): Resource { |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _elementalType: IterationNode): Resource { |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
if (r === null) { |
|
|
|
if (r === null) { |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode): Resource { |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, _colon: NonterminalNode, _integer: NonterminalNode): Resource { |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
if (r === null) { |
|
|
|
if (r === null) { |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
@ -437,14 +437,14 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, integer: NonterminalNode): Resource { |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, _integer: NonterminalNode): Resource { |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
if (r === null) { |
|
|
|
if (r === null) { |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode): MeteredResource { |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, _colon: NonterminalNode, _maxvalue: NonterminalNode): MeteredResource { |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in max operation`) |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in max operation`) |
|
|
@ -458,7 +458,7 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, maxvalue: NonterminalNode): MeteredResource { |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, _maxvalue: NonterminalNode): MeteredResource { |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in max operation`) |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in max operation`) |
|
|
@ -481,7 +481,7 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
_terminal(): never { |
|
|
|
_terminal(): never { |
|
|
|
throw Error(`No idea what to say ${this.ctorName} terminal node's resource value is`) |
|
|
|
throw Error(`No idea what to say ${this.ctorName} terminal node's resource value is`) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, value: NonterminalNode): MeteredResource { |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, _colon: NonterminalNode, _value: NonterminalNode): MeteredResource { |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in metered set`) |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in metered set`) |
|
|
@ -495,14 +495,14 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, value: NonterminalNode): MeteredResource { |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, _value: NonterminalNode): MeteredResource { |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
const r = (resource as InterpreterNode).resource; |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
if (!r || !isMeteredResource(r)) { |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in metered set`) |
|
|
|
throw Error(`unexpected null or unmetered resource ${r} in metered set`) |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, nul: NonterminalNode): Resource { |
|
|
|
ClearOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, _colon: NonterminalNode, _nul: NonterminalNode): Resource { |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
if (r === null) { |
|
|
|
if (r === null) { |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
@ -516,7 +516,7 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
} |
|
|
|
} |
|
|
|
return r |
|
|
|
return r |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, nul: NonterminalNode): Resource { |
|
|
|
ClearOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, _nul: NonterminalNode): Resource { |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
const r = (resource as InterpreterNode).resource |
|
|
|
if (r === null) { |
|
|
|
if (r === null) { |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
|
throw Error("unexpected null resource in required resource node") |
|
|
@ -526,52 +526,52 @@ interpreter.addAttribute<Resource|null>("resource", { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
interpreter.addAttribute<Operands>("operands", { |
|
|
|
interpreter.addAttribute<Operands>("operands", { |
|
|
|
CompleteOperation(silence: IterationNode, operation: NonterminalNode, terminator: NonterminalNode): Operands { |
|
|
|
CompleteOperation(silence: IterationNode, operation: NonterminalNode, _terminator: NonterminalNode): Operands { |
|
|
|
return (operation as InterpreterNode).operands |
|
|
|
return (operation as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
Operation(operation: NonterminalNode): Operands { |
|
|
|
Operation(operation: NonterminalNode): Operands { |
|
|
|
return (operation as InterpreterNode).operands |
|
|
|
return (operation as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, nul: NonterminalNode): Operands { |
|
|
|
ClearOperation(operands: NonterminalNode, _space: NonterminalNode, _resource: NonterminalNode, _colon: NonterminalNode, _nul: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, nul: NonterminalNode, resource: NonterminalNode): Operands { |
|
|
|
ClearOperationAlternate(operands: NonterminalNode, _colon: NonterminalNode, _nul: NonterminalNode, _resource: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, nul: NonterminalNode): Operands { |
|
|
|
ClearOperationAlternate2(operands: NonterminalNode, _colon: NonterminalNode, _resource: NonterminalNode, _nul: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, element: IterationNode): Operands { |
|
|
|
DeltaOperation(operands: NonterminalNode, _space: NonterminalNode, _resource: NonterminalNode, colon: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _element: IterationNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, resource: IterationNode, element: IterationNode): Operands { |
|
|
|
DeltaOperationAlternate(operands: NonterminalNode, _colon: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _resource: IterationNode, _element: IterationNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, delta: NonterminalNode, affinity: IterationNode, element: IterationNode): Operands { |
|
|
|
DeltaOperationAlternate2(operands: NonterminalNode, _colon: NonterminalNode, _resource: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _element: IterationNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
}, |
|
|
|
}, |
|
|
|
FailOperation(operands: NonterminalNode, colon: NonterminalNode, fail: NonterminalNode): Operands { |
|
|
|
FailOperation(operands: NonterminalNode, _colon: NonterminalNode, _fail: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
return (operands as InterpreterNode).operands; |
|
|
|
}, |
|
|
|
}, |
|
|
|
PrintOperation(_: NonterminalNode, __: NonterminalNode): Set<never> { |
|
|
|
PrintOperation(_: NonterminalNode, __: NonterminalNode): Set<never> { |
|
|
|
return OperandItems<never>() |
|
|
|
return OperandItems<never>() |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, max: NonterminalNode): Operands { |
|
|
|
SetMaxOperation(operands: NonterminalNode, _space: NonterminalNode, _resource: NonterminalNode, _colon: NonterminalNode, _max: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, max: NonterminalNode, resource: NonterminalNode): Operands { |
|
|
|
SetMaxOperationAlternate(operands: NonterminalNode, _colon: NonterminalNode, _max: NonterminalNode, _resource: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, max: NonterminalNode): Operands { |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, _colon: NonterminalNode, _resource: NonterminalNode, _max: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, meter: NonterminalNode): Operands { |
|
|
|
SetMeteredOperation(operands: NonterminalNode, _space: NonterminalNode, _resource: NonterminalNode, _colon: NonterminalNode, _meter: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, meter: NonterminalNode, resource: NonterminalNode): Operands { |
|
|
|
SetMeteredOperationAlternate(operands: NonterminalNode, _colon: NonterminalNode, _meter: NonterminalNode, _resource: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, meter: NonterminalNode): Operands { |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, _colon: NonterminalNode, _resource: NonterminalNode, _meter: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetSourceOperation(source: NonterminalNode, operands: NonterminalNode): Operands { |
|
|
|
SetSourceOperation(source: NonterminalNode, operands: NonterminalNode): Operands { |
|
|
@ -580,22 +580,22 @@ interpreter.addAttribute<Operands>("operands", { |
|
|
|
SetTargetOperation(target: NonterminalNode, operands: NonterminalNode): Operands { |
|
|
|
SetTargetOperation(target: NonterminalNode, operands: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, value: NonterminalNode): Operands { |
|
|
|
SetValueOperation(operands: NonterminalNode, _space: NonterminalNode, _resource: NonterminalNode, _colon: NonterminalNode, _value: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, value: NonterminalNode, resource: NonterminalNode): Operands { |
|
|
|
SetValueOperationAlternate(operands: NonterminalNode, _colon: NonterminalNode, _value: NonterminalNode, _resource: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, value: NonterminalNode): Operands { |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, _colon: NonterminalNode, _resource: NonterminalNode, _value: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemCounterDeltaOperation(operands: NonterminalNode, colon: NonterminalNode, statusOrItem: NonterminalNode, delta: NonterminalNode): Operands { |
|
|
|
StatusOrItemCounterDeltaOperation(operands: NonterminalNode, _colon: NonterminalNode, _statusOrItem: NonterminalNode, _delta: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemCounterSetOperation(operands: NonterminalNode, colon: NonterminalNode, statusOrItem: NonterminalNode, value: NonterminalNode): Operands { |
|
|
|
StatusOrItemCounterSetOperation(operands: NonterminalNode, _colon: NonterminalNode, _statusOrItem: NonterminalNode, _value: NonterminalNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemAddOperation(operands: NonterminalNode, colon: NonterminalNode, delta: NonterminalNode, statusOrItem: NonterminalNode, counter: IterationNode): Operands { |
|
|
|
StatusOrItemAddOperation(operands: NonterminalNode, _colon: NonterminalNode, _delta: NonterminalNode, _statusOrItem: NonterminalNode, _counter: IterationNode): Operands { |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
return (operands as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
Operands(arg0: NonterminalNode): Operands { |
|
|
|
Operands(arg0: NonterminalNode): Operands { |
|
|
@ -604,8 +604,8 @@ interpreter.addAttribute<Operands>("operands", { |
|
|
|
_iter(...children: readonly Node[]): Operands { |
|
|
|
_iter(...children: readonly Node[]): Operands { |
|
|
|
return OperandSets(children.map((child) => (child as InterpreterNode).operands)) |
|
|
|
return OperandSets(children.map((child) => (child as InterpreterNode).operands)) |
|
|
|
}, |
|
|
|
}, |
|
|
|
operand(oper: NonterminalNode): Operands { |
|
|
|
operand(operand: TerminalNode): Operands { |
|
|
|
return (oper as InterpreterNode).operands |
|
|
|
return (operand as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
identifier(_: TerminalNode, __: NonterminalNode): Set<string> { |
|
|
|
identifier(_: TerminalNode, __: NonterminalNode): Set<string> { |
|
|
|
return OperandItems((this as InterpreterNode).identifier) |
|
|
|
return OperandItems((this as InterpreterNode).identifier) |
|
|
@ -628,13 +628,13 @@ interpreter.addAttribute<Operands>("operands", { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
interpreter.addAttribute<Operands>("targets", { |
|
|
|
interpreter.addAttribute<Operands>("targets", { |
|
|
|
Block(start: NonterminalNode, terminator: NonterminalNode, code: NonterminalNode, end: NonterminalNode, terminator2: NonterminalNode): Operands { |
|
|
|
Block(start: NonterminalNode, _terminator: NonterminalNode, _code: NonterminalNode, _end: NonterminalNode, _terminator2: NonterminalNode): Operands { |
|
|
|
return (start as InterpreterNode).targets |
|
|
|
return (start as InterpreterNode).targets |
|
|
|
}, |
|
|
|
}, |
|
|
|
BlockStart(silenced: IterationNode, begin: NonterminalNode, source: IterationNode, target: IterationNode, title: NonterminalNode): Operands { |
|
|
|
BlockStart(silenced: IterationNode, begin: NonterminalNode, source: IterationNode, target: IterationNode, _title: NonterminalNode): Operands { |
|
|
|
return (target as InterpreterNode).operands |
|
|
|
return (target as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetTargetOperation(arg0: NonterminalNode, arg1: NonterminalNode): Operands { |
|
|
|
SetTargetOperation(_arg0: NonterminalNode, _arg1: NonterminalNode): Operands { |
|
|
|
return (this as InterpreterNode).operands |
|
|
|
return (this as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
_iter(): Operands { |
|
|
|
_iter(): Operands { |
|
|
@ -649,13 +649,13 @@ interpreter.addAttribute<Operands>("targets", { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
interpreter.addAttribute<Operands>("sources", { |
|
|
|
interpreter.addAttribute<Operands>("sources", { |
|
|
|
Block(start: NonterminalNode, terminator: NonterminalNode, code: NonterminalNode, end: NonterminalNode, terminator2: NonterminalNode): Operands { |
|
|
|
Block(start: NonterminalNode, _terminator: NonterminalNode, _code: NonterminalNode, _end: NonterminalNode, _terminator2: NonterminalNode): Operands { |
|
|
|
return (start as InterpreterNode).sources |
|
|
|
return (start as InterpreterNode).sources |
|
|
|
}, |
|
|
|
}, |
|
|
|
BlockStart(silenced: IterationNode, begin: NonterminalNode, source: IterationNode, target: IterationNode, title: NonterminalNode): Operands { |
|
|
|
BlockStart(silenced: IterationNode, begin: NonterminalNode, source: IterationNode, _target: IterationNode, _title: NonterminalNode): Operands { |
|
|
|
return (source as InterpreterNode).operands |
|
|
|
return (source as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetSourceOperation(arg0: NonterminalNode, arg1: NonterminalNode): Operands { |
|
|
|
SetSourceOperation(_arg0: NonterminalNode, _arg1: NonterminalNode): Operands { |
|
|
|
return (this as InterpreterNode).operands |
|
|
|
return (this as InterpreterNode).operands |
|
|
|
}, |
|
|
|
}, |
|
|
|
_iter(): Operands { |
|
|
|
_iter(): Operands { |
|
|
@ -670,13 +670,13 @@ interpreter.addAttribute<Operands>("sources", { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
interpreter.addAttribute<boolean>("silenced", { |
|
|
|
interpreter.addAttribute<boolean>("silenced", { |
|
|
|
Block(start: NonterminalNode, terminator: NonterminalNode, code: NonterminalNode, end: NonterminalNode, terminator2: NonterminalNode): boolean { |
|
|
|
Block(start: NonterminalNode, _terminator: NonterminalNode, _code: NonterminalNode, _end: NonterminalNode, _terminator2: NonterminalNode): boolean { |
|
|
|
return (start as InterpreterNode).silenced |
|
|
|
return (start as InterpreterNode).silenced |
|
|
|
}, |
|
|
|
}, |
|
|
|
BlockStart(silenced: IterationNode, begin: NonterminalNode, source: IterationNode, target: IterationNode, title: NonterminalNode): boolean { |
|
|
|
BlockStart(silenced: IterationNode, begin: NonterminalNode, source: IterationNode, target: IterationNode, _title: NonterminalNode): boolean { |
|
|
|
return (target as InterpreterNode).silenced |
|
|
|
return (target as InterpreterNode).silenced |
|
|
|
}, |
|
|
|
}, |
|
|
|
CompleteOperation(silenced: IterationNode, operation: NonterminalNode, terminator: NonterminalNode): boolean { |
|
|
|
CompleteOperation(silenced: IterationNode, _operation: NonterminalNode, _terminator: NonterminalNode): boolean { |
|
|
|
return (silenced as InterpreterNode).silenced |
|
|
|
return (silenced as InterpreterNode).silenced |
|
|
|
}, |
|
|
|
}, |
|
|
|
silentOperator(_: TerminalNode): boolean { |
|
|
|
silentOperator(_: TerminalNode): boolean { |
|
|
@ -703,19 +703,19 @@ interpreter.addAttribute<number>("currentValue", { |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
SetValueOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode, resource: NonterminalNode): number { |
|
|
|
SetValueOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, integer: NonterminalNode, _resource: NonterminalNode): number { |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
SetValueOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, integer: NonterminalNode): number { |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
return (integer as InterpreterNode).numberValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
MeteredValue(current: NonterminalNode, max: NonterminalNode): number { |
|
|
|
MeteredValue(current: NonterminalNode, _max: NonterminalNode): number { |
|
|
|
return (current as InterpreterNode).numberValue |
|
|
|
return (current as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, value: NonterminalNode): number { |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, value: NonterminalNode): number { |
|
|
|
return (value as InterpreterNode).currentValue; |
|
|
|
return (value as InterpreterNode).currentValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, value: NonterminalNode, resource: NonterminalNode): number { |
|
|
|
SetMeteredOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, value: NonterminalNode, _resource: NonterminalNode): number { |
|
|
|
return (value as InterpreterNode).currentValue; |
|
|
|
return (value as InterpreterNode).currentValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, value: NonterminalNode): number { |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, value: NonterminalNode): number { |
|
|
@ -739,13 +739,13 @@ interpreter.addAttribute<number>("currentValue", { |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
interpreter.addAttribute<number>("maxValue", { |
|
|
|
interpreter.addAttribute<number>("maxValue", { |
|
|
|
MaxValue(sep: TerminalNode, num: NonterminalNode) { |
|
|
|
MaxValue(_sep: TerminalNode, _num: NonterminalNode) { |
|
|
|
return (this as InterpreterNode).numberValue |
|
|
|
return (this as InterpreterNode).numberValue |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
|
SetMaxOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
|
return (maxvalue as InterpreterNode).maxValue; |
|
|
|
return (maxvalue as InterpreterNode).maxValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode, resource: NonterminalNode): number { |
|
|
|
SetMaxOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, maxvalue: NonterminalNode, _resource: NonterminalNode): number { |
|
|
|
return (maxvalue as InterpreterNode).maxValue; |
|
|
|
return (maxvalue as InterpreterNode).maxValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
|
SetMaxOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, maxvalue: NonterminalNode): number { |
|
|
@ -757,7 +757,7 @@ interpreter.addAttribute<number>("maxValue", { |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, value: NonterminalNode): number { |
|
|
|
SetMeteredOperation(operands: NonterminalNode, space: NonterminalNode, resource: NonterminalNode, colon: NonterminalNode, value: NonterminalNode): number { |
|
|
|
return (value as InterpreterNode).maxValue; |
|
|
|
return (value as InterpreterNode).maxValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, value: NonterminalNode, resource: NonterminalNode): number { |
|
|
|
SetMeteredOperationAlternate(operands: NonterminalNode, colon: NonterminalNode, value: NonterminalNode, _resource: NonterminalNode): number { |
|
|
|
return (value as InterpreterNode).maxValue; |
|
|
|
return (value as InterpreterNode).maxValue; |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, value: NonterminalNode): number { |
|
|
|
SetMeteredOperationAlternate2(operands: NonterminalNode, colon: NonterminalNode, resource: NonterminalNode, value: NonterminalNode): number { |
|
|
@ -986,11 +986,11 @@ interpreter.addOperation<EvaluationContext>("evaluate(ctx)", { |
|
|
|
return (items as InterpreterNode).evaluate(ctx) |
|
|
|
return (items as InterpreterNode).evaluate(ctx) |
|
|
|
}, |
|
|
|
}, |
|
|
|
EmptyLines(_: TerminalNode): EvaluationContext { |
|
|
|
EmptyLines(_: TerminalNode): EvaluationContext { |
|
|
|
// Has no effect; is just for funsies.
|
|
|
|
// Has no effect
|
|
|
|
return (this as EvaluationNode).args.ctx |
|
|
|
return (this as EvaluationNode).args.ctx |
|
|
|
}, |
|
|
|
}, |
|
|
|
Block(start: NonterminalNode, terminator: NonterminalNode, code: NonterminalNode, |
|
|
|
Block(start: NonterminalNode, terminator: NonterminalNode, code: NonterminalNode, |
|
|
|
end: NonterminalNode, finalTerminator: NonterminalNode): EvaluationContext { |
|
|
|
_end: NonterminalNode, _finalTerminator: NonterminalNode): EvaluationContext { |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
ctx = (start as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (start as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (code as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (code as InterpreterNode).evaluate(ctx) |
|
|
@ -998,58 +998,58 @@ interpreter.addOperation<EvaluationContext>("evaluate(ctx)", { |
|
|
|
}, |
|
|
|
}, |
|
|
|
BlockStart(silentOperator: IterationNode, beginKeyword: NonterminalNode, |
|
|
|
BlockStart(silentOperator: IterationNode, beginKeyword: NonterminalNode, |
|
|
|
source: IterationNode, target: IterationNode, |
|
|
|
source: IterationNode, target: IterationNode, |
|
|
|
title: IterationNode): EvaluationContext { |
|
|
|
_title: IterationNode): EvaluationContext { |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
ctx = (source as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (source as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (target as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (target as InterpreterNode).evaluate(ctx) |
|
|
|
return ctx |
|
|
|
return ctx |
|
|
|
}, |
|
|
|
}, |
|
|
|
CompleteOperation(silenced: IterationNode, operation: NonterminalNode, terminator: NonterminalNode): EvaluationContext { |
|
|
|
CompleteOperation(silenced: IterationNode, operation: NonterminalNode, _terminator: NonterminalNode): EvaluationContext { |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
ctx = (operation as InterpreterNode).evaluate(ctx) |
|
|
|
ctx = (operation as InterpreterNode).evaluate(ctx) |
|
|
|
return ctx |
|
|
|
return ctx |
|
|
|
}, |
|
|
|
}, |
|
|
|
Operation(oper: NonterminalNode): EvaluationContext { |
|
|
|
Operation(operator: NonterminalNode): EvaluationContext { |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
let ctx = (this as EvaluationNode).args.ctx |
|
|
|
return (oper as InterpreterNode).evaluate(ctx) |
|
|
|
return (operator as InterpreterNode).evaluate(ctx) |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: IterationNode): EvaluationContext { |
|
|
|
DeltaOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode, _arg5: IterationNode, _arg6: IterationNode): EvaluationContext { |
|
|
|
return EvaluateDelta(this as EvaluationNode) |
|
|
|
return EvaluateDelta(this as EvaluationNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate(opers: NonterminalNode, colon: NonterminalNode, delt: NonterminalNode, affin: IterationNode, res: IterationNode, element: IterationNode): EvaluationContext { |
|
|
|
DeltaOperationAlternate(_operators: NonterminalNode, _colon: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _res: IterationNode, _element: IterationNode): EvaluationContext { |
|
|
|
return EvaluateDelta(this as EvaluationNode) |
|
|
|
return EvaluateDelta(this as EvaluationNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: IterationNode, arg5: IterationNode): EvaluationContext { |
|
|
|
DeltaOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: IterationNode, _arg5: IterationNode): EvaluationContext { |
|
|
|
return EvaluateDelta(this as EvaluationNode) |
|
|
|
return EvaluateDelta(this as EvaluationNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): EvaluationContext { |
|
|
|
SetMeteredOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateMeteredSet(this as EvaluationNode) |
|
|
|
return EvaluateMeteredSet(this as EvaluationNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
SetMeteredOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateMeteredSet(this as EvaluationNode) |
|
|
|
return EvaluateMeteredSet(this as EvaluationNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
SetMeteredOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateMeteredSet(this as EvaluationNode) |
|
|
|
return EvaluateMeteredSet(this as EvaluationNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): EvaluationContext { |
|
|
|
SetValueOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateValueSet(this as EvaluationNode); |
|
|
|
return EvaluateValueSet(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
SetValueOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateValueSet(this as EvaluationNode); |
|
|
|
return EvaluateValueSet(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
SetValueOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateValueSet(this as EvaluationNode); |
|
|
|
return EvaluateValueSet(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): EvaluationContext { |
|
|
|
SetMaxOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateMaxSet(this as EvaluationNode); |
|
|
|
return EvaluateMaxSet(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
SetMaxOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateMaxSet(this as EvaluationNode); |
|
|
|
return EvaluateMaxSet(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
SetMaxOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateMaxSet(this as EvaluationNode); |
|
|
|
return EvaluateMaxSet(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
StatusOrItemAddOperation(opers: NonterminalNode, colon: NonterminalNode, sign: NonterminalNode, identifier: NonterminalNode, counter: IterationNode): EvaluationContext { |
|
|
|
StatusOrItemAddOperation(_operators: NonterminalNode, _colon: NonterminalNode, _sign: NonterminalNode, _identifier: NonterminalNode, _counter: IterationNode): EvaluationContext { |
|
|
|
const ctx = (this as EvaluationNode).args.ctx |
|
|
|
const ctx = (this as EvaluationNode).args.ctx |
|
|
|
const operands = evaluateOperands((this as InterpreterNode).operands, ctx) |
|
|
|
const operands = evaluateOperands((this as InterpreterNode).operands, ctx) |
|
|
|
const statusOrItemId = (this as InterpreterNode).identifier |
|
|
|
const statusOrItemId = (this as InterpreterNode).identifier |
|
|
@ -1064,13 +1064,13 @@ interpreter.addOperation<EvaluationContext>("evaluate(ctx)", { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): EvaluationContext { |
|
|
|
ClearOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateClear(this as EvaluationNode); |
|
|
|
return EvaluateClear(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
ClearOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateClear(this as EvaluationNode); |
|
|
|
return EvaluateClear(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
ClearOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): EvaluationContext { |
|
|
|
ClearOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): EvaluationContext { |
|
|
|
return EvaluateClear(this as EvaluationNode); |
|
|
|
return EvaluateClear(this as EvaluationNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetSourceOperation(_: TerminalNode, __: NonterminalNode): EvaluationContext { |
|
|
|
SetSourceOperation(_: TerminalNode, __: NonterminalNode): EvaluationContext { |
|
|
@ -1452,46 +1452,56 @@ interpreter.addOperation<MarkdownOutput>("renderMarkdown(ctx)", { |
|
|
|
let ctx = (this as MarkdownNode).args.ctx |
|
|
|
let ctx = (this as MarkdownNode).args.ctx |
|
|
|
return (items as InterpreterNode).renderMarkdown(ctx) |
|
|
|
return (items as InterpreterNode).renderMarkdown(ctx) |
|
|
|
}, |
|
|
|
}, |
|
|
|
EmptyLines(items: IterationNode): MarkdownOutput { |
|
|
|
EmptyLines(_items: IterationNode): MarkdownOutput { |
|
|
|
let ctx = (this as MarkdownNode).args.ctx |
|
|
|
let ctx = (this as MarkdownNode).args.ctx |
|
|
|
return {...ctx, output: null} |
|
|
|
return {...ctx, output: null} |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode, arg5: IterationNode, arg6: IterationNode): MarkdownOutput { |
|
|
|
DeltaOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode, _arg5: IterationNode, _arg6: IterationNode): MarkdownOutput { |
|
|
|
return RenderDelta(this as MarkdownNode) |
|
|
|
return RenderDelta(this as MarkdownNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate(opers: NonterminalNode, colon: NonterminalNode, delt: NonterminalNode, affin: IterationNode, res: IterationNode, element: IterationNode): MarkdownOutput { |
|
|
|
DeltaOperationAlternate(_operators: NonterminalNode, _colon: NonterminalNode, _delta: NonterminalNode, _affinity: IterationNode, _res: IterationNode, _element: IterationNode): MarkdownOutput { |
|
|
|
return RenderDelta(this as MarkdownNode) |
|
|
|
return RenderDelta(this as MarkdownNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
DeltaOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: IterationNode, arg5: IterationNode): MarkdownOutput { |
|
|
|
DeltaOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: IterationNode, _arg5: IterationNode): MarkdownOutput { |
|
|
|
return RenderDelta(this as MarkdownNode) |
|
|
|
return RenderDelta(this as MarkdownNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): MarkdownOutput { |
|
|
|
SetMeteredOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderMeteredSet(this as MarkdownNode) |
|
|
|
return RenderMeteredSet(this as MarkdownNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): MarkdownOutput { |
|
|
|
SetMeteredOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderMeteredSet(this as MarkdownNode) |
|
|
|
return RenderMeteredSet(this as MarkdownNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMeteredOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): MarkdownOutput { |
|
|
|
SetMeteredOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderMeteredSet(this as MarkdownNode) |
|
|
|
return RenderMeteredSet(this as MarkdownNode) |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): MarkdownOutput { |
|
|
|
SetValueOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderValueSet(this as MarkdownNode); |
|
|
|
return RenderValueSet(this as MarkdownNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): MarkdownOutput { |
|
|
|
SetValueOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderValueSet(this as MarkdownNode); |
|
|
|
return RenderValueSet(this as MarkdownNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetValueOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): MarkdownOutput { |
|
|
|
SetValueOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderValueSet(this as MarkdownNode); |
|
|
|
return RenderValueSet(this as MarkdownNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperation(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode, arg4: NonterminalNode): MarkdownOutput { |
|
|
|
SetMaxOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderMaxSet(this as MarkdownNode); |
|
|
|
return RenderMaxSet(this as MarkdownNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): MarkdownOutput { |
|
|
|
SetMaxOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderMaxSet(this as MarkdownNode); |
|
|
|
return RenderMaxSet(this as MarkdownNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
SetMaxOperationAlternate2(arg0: NonterminalNode, arg1: NonterminalNode, arg2: NonterminalNode, arg3: NonterminalNode): MarkdownOutput { |
|
|
|
SetMaxOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
return RenderMaxSet(this as MarkdownNode); |
|
|
|
return RenderMaxSet(this as MarkdownNode); |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
ClearOperation(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode, _arg4: NonterminalNode): MarkdownOutput { |
|
|
|
|
|
|
|
return RenderClear(this as MarkdownNode); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
ClearOperationAlternate(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
|
|
|
|
return RenderClear(this as MarkdownNode); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
ClearOperationAlternate2(_arg0: NonterminalNode, _arg1: NonterminalNode, _arg2: NonterminalNode, _arg3: NonterminalNode): MarkdownOutput { |
|
|
|
|
|
|
|
return RenderClear(this as MarkdownNode); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
_iter(...children: readonly Node[]): MarkdownOutput { |
|
|
|
_iter(...children: readonly Node[]): MarkdownOutput { |
|
|
|
let ctx = (this as MarkdownNode).args.ctx |
|
|
|
let ctx = (this as MarkdownNode).args.ctx |
|
|
|
const output = [] |
|
|
|
const output = [] |
|
|
|