After the dispatch builder 512 has generated dispatch operations 514 from the fundamental model 510, for example as expressed in a dispatch tree, a back-end generator 516 of the compiler 114 can transform the dispatch operations 514 into an execution structure 518 using a pre-binary format, such as a JavaScript Object Notation (JSON) representation. The pre-binary format can be a flat, linear representation of an execution structure 518. In some examples, a three-address code form can be used to flatten the execution structure 518, such that a hierarchical expression can be converted into an expression for at least temporary storage.
For example, the back-end generator 516 can flatten a dispatch tree produced by the dispatch builder 512 to flatten and/or rewrite the dispatch tree to have a single level with inter-tree references. The back-end generator 516 may also transform random-access style references in such inter-tree references to a linearized representation suitable for binary formats. The back-end generator 516 can build context collection formats 136 by transforming references into context collection formats 136 for new behavior production into indexed references. The back-end generator 516 can also construct a three-address form for the execution structure 518 by decomposing and transforming multi-step expressions into instructions that use temporary registers. The back-end generator 516 can additionally construct the execution structure 518 in a pre-binary format, such as a JSON format, by transforming each type of instruction to a representation in the pre-binary format.