ADHOC Node Types
An ADHOC project consists of a tree of nodes, each of which represents a logical concept in programming. There are 6 main types of nodes in ADHOC:
- Action Nodes represent actions in the AOP model. They are generally composed of children that represent simpler actions. Actions belong to packages, and the root node for any project is always an action definition for the highest-level function of the project (e.g. “Run Web Server”). Once an action is defined, it can be used in other parts of the project. Some important system actions are already defined, and can be called from any project. Action definitions appear as green rectangles and action calls appear as blue rectangles.
- Group Nodes are a way of establishing relationships between other particular other nodes. The “serial group” indicates that any actions within it always be performed in sequence, while otherwise, sibling actions can may be performed concurrently at the discretion of the code generation process. Serial groups appear as dashed gray rectangles around their children.
- Control Nodes help to control the logical flow of a program. The include things like conditionals, iteration, and explicit execution forking. Control nodes appear as magenta triangles.
- Operator Nodes are like action calls, in that they take arguments and almost always yield a result, however, they are typically much simpler than actions, and their behaviors are generally intuitive or have standard programming meanings. Operator nodes appear as purple circles.
- Variable Nodes represent named values. Just as in other programming languages, algebra, or symbolic logic, a variable’s name is used as a temporary stand-in for an actual value. The variable is said to “hold” that value until and unless it is “assigned” a new one. Variable nodes appear as black or white text with no border.
- Literal Nodes represent exact values, such as numbers, text, or collections of things. Literal nodes appear as orange text with no border.
The tree of nodes functions like an abstract syntax tree which represents just the general logic of a program. Because of this, the ADHOC back-end is able to generate code in multiple different languages from the tree.