This is the State Transition Table (STT) for Graph::Easy's graph description language.

This table has been exported from an OpenOffice Calc spreadsheet as a CSV file, with the latter being incorporated into this HTML.

The lexer which reads the spreadsheet, or the CSV version, does not use the last 2 columns, Regexp and Interpretation.

The Regexp column is referred to in the spreadsheet by formulas, and the Interpretation column is just for the reader.

Clearly, this table does not quite cover all of the syntax supported by Graph::Easy.

Graph::Easy::Marpa::Lexer reads this STT, and outputs tokens in an intermediary language.

The lexer uses Set::FA::Element to actually process the graph definition.

Graph::Easy::Marpa::Parser reads those tokens and builds a data structure in memory representing the graph.

Start
Accept
State
Event
Next
Entry
Exit
Regexp
Interpretation
Yes
.
global
[a-z][a-z0-9_]*
class
.
save_class_name
[a-z][a-z0-9_]*
Attribute name
.
.
.
{
start_class_attribute
.
.
[a-z][a-z0-9_]*
Class name
.
.
.
\(
start_group
.
.
[-<=>~.]+
Edge name
.
.
.
\[
start_node
.
.
[a-zA-Z_][a-zA-Z_0-9]*
Event name
.
.
.
[-<=>~.]+
edge
.
.
[a-zA-Z_][a-zA-Z_0-9]*
Node name
.
.
.
\s+
global
.
.
[a-zA-Z_][a-zA-Z_0-9]*
State name
.
.
.
.
.
.
.
[a-z][a-z0-9_]*
Subclass name
.
.
class
,
class_daisy_chain
.
validate_class_name
.
.
.
.
.
\.
start_subclass
.
.
.
.
.
.
.
{
start_class_attribute
.
.
.
.
.
.
.
\(
start_group
.
.
.
.
.
.
.
\[
start_node
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
\s+
class
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
start_class_attribute
[\w :;]+
class_attribute
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
class_daisy_chain
[a-z][a-z0-9_]*
class
.
.
.
.
.
.
.
\.
subclass
.
.
.
.
.
.
.
\s+
class_daisy_chain
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
start_subclass
[a-z][a-z0-9_]*
subclass
.
save_class_name
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
subclass
,
class_daisy_chain
.
validate_subclass_name
.
.
.
.
.
{
start_class_attribute
.
.
.
.
.
.
.
\(
start_group
.
.
.
.
.
.
.
\[
node
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
\s+
subclass
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
class_attribute
[\w :;]+
class_attribute
save_class_attribute
validate_class_attribute
.
.
.
.
.
}
post_class_attribute
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
post_class_attribute
[a-z][a-z0-9_]*
class
.
save_class_name
.
.
.
.
.
\(
start_group
.
.
.
.
.
.
.
\[
start_node
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
,
daisy_chain
.
.
.
.
.
.
.
\s+
post_class_attribute
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
start_group
[\w.:]+
group
push_group
save_group_name
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
\)
post_group
.
.
.
.
.
.
.
\s+
start_group
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
group
[a-z][a-z0-9_]*
class
.
validate_group_name
.
.
.
.
.
\[
start_node
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
\s+
group
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
post_group
\[
start_node
pop_group
.
.
.
.
.
.
\(
start_group
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
\s+
post_group
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
start_node
[\w.]+
node
.
save_node_name
.
.
.
.
.
]
post_node
.
.
.
.
.
.
.
\s+
start_node
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
node
]
post_node
.
.
.
.
.
.
.
\s+
node
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
post_node
{
start_attribute
validate_node_name
.
.
.
.
.
.
\(
start_group
.
.
.
.
.
.
.
\)
post_group
.
.
.
.
.
.
.
\[
start_node
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
,
daisy_chain
.
.
.
.
.
.
.
\s+
post_node
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
start_attribute
[\w :;]+
attribute
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
attribute
[\w :;]+
attribute
save_attribute
.
.
.
.
.
.
}
post_attribute
.
validate_attribute
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
post_attribute
\[
start_node
.
.
.
.
.
.
.
\)
post_group
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
,
daisy_chain
.
.
.
.
.
.
.
\s+
post_attribute
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
edge
{
start_attribute
save_edge_name
validate_edge_name
.
.
.
.
.
\(
start_group
.
.
.
.
.
.
.
\)
post_group
.
.
.
.
.
.
.
\[
start_node
.
.
.
.
.
.
.
,
daisy_chain
.
.
.
.
.
.
.
\s+
edge
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
daisy_chain
\[
start_node
.
.
.
.
.
.
.
[-<=>~.]+
edge
.
.
.
.
.
.
.
\s+
daisy_chain
.
.
.
.
Start
Accept
State
Event
Next
Entry
Exit
Regexp
Interpretation