Data Splitter does its work by processing a set of "nodes" contained in a user-defined PGraph. A node is an object that has properties associated with it, including a tag, a pattern (or a string) and optional actions to perform when the pattern / string is recognized in the input stream. A node can also have links to and from other nodes.
Every node should have an associated pattern or string. If neither is defined an error message will be produced when the Run option is selected. If both are defined for a node the pattern definition will take precedence (i.e. the string definition will be ignored).
A node's properties can be defined via a menu that can be accessed when the node is selected. To select a node, single-click the left mouse button on the node's graphic. To access the node's drop-down menu, press the Enter key when the node is selected, or double-click on the node's graphic.
When a node is selected the Tab key can be used to select other nodes. Pressing the Tab key advances the node selection through the node numbers (node number is a node property). Pressing Shift+Tab moves the node selection backwards through the node numbers. The node number currently has no purpose other than to define the tabbing sequence.
A node can be assigned an optional tag. The same tag can be assigned to more than one node. That tag can then be used to define a group of nodes that have been assigned that tag. When this non-unique tag is used (in an action), for example, it refers to the node in the group that was most recently recognized in the current input stream. If none of the nodes in the group has been recognized in the current input stream that tag refers to a "null node" (described below) whose pattern length is zero.
A node's tag is optional. If the node is not referred to anywhere else in the solution (for example, if the node is not referred to by any actions) the node tag is optional and may be omitted.
Every solution has exactly one "start node". This is the node at which scanning starts: at the start of the scanning of an input stream the Data Splitter engine will advance through the input stream until a pattern matching that of the start node is encountered. The start node is sought again when the Data Splitter engine cannot make the transition from the current node to a next node, i.e. when it needs to resynchronize.
To set the start node: select the "Start node" option from the node properties menu.
A "null node" is one whose maximum pattern length is zero. A pattern of this type has a maximum length of zero, for example: zero to zero "anythings". The null node is defined as recognized at two points during the run :
- immediately before scanning starts,
- immediately after scanning finishes.
A null node may be used, for example, to perform an action conditionally at the end of an input stream, where a post-stream action (which would always execute) is inappropriate.