Wrap In List
Pop operand arguments from the parse stack of the current potential message send. Create an operand-element list with them, and push the list back onto the parse stack.
This is the equivalent of pushing an empty list prior to pushing those arguments, then using AppendArgument after each argument is parsed to add them to the list. The advantage of using this operation instead is to allow the pure stack manipulation operations to occur after parsing an argument and/or fixed tokens, which increases the conformity between the non-repeating and repeating clauses, which in turn reduces (at least) the number of actions executed each time the root bundle tree is used to start parsing a subexpression.
Properties
Whether this operation can run successfully if there is a pre-parsed first argument that has not yet been consumed.
Assume that the instruction encodes an operand that represents the index of an argument to be checked (for grammatical restrictions): answer the operand.
Whether this instance commutes with ParsePart instructions.
A Statistic that records the number of nanoseconds spent while expanding occurrences of this ParsingOperation.
Assume that the instruction encodes an operand that represents a message part index: answer the operand. Answer 0 if the operand does not represent a message part.
A Statistic that records the number of nanoseconds spent while executing occurrences of this ParsingOperation.
Functions
Given a ParsingOperation, answer an equal operation object that is equal to it, possibly itself, such that all invocations of intern with equal operations will produce the same object. It uses the weak internedInstructions map(s).
Given a program counter, answer the list of successor program counters that should be explored. For example, a BranchForward instruction will need to visit both the next program counter and the branch target.