State Transition Table for GraphViz2::Marpa V 1.00

This is the STT for GraphViz2::Marpa V 1.00.

It covers most, but perhaps not quite all, of the Graphviz dot 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 STT 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.

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

The STT is actually at the end of Lexer.pm, but options to new() allow you to override that source for the STT.

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

GraphViz2::Marpa::Parser reads lexed tokens and builds a data structure in memory representing the graph.

Lastly, the default rendering engine GraphViz2::Marpa::Renderer::GraphViz2 uses this data structure to re-create the input to the lexer, although the formatting might be slightly different.

Start
Accept
State
Event
Next
Entry
Exit
Regexp
Interpretation
Yes
.
initial
strict
graph
.
save_prefix
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
ID
.
.
.
(?:graph|digraph)
graph_id
.
.
:(?:"[^"]+"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
: + ID
.
.
.
\/\*.*?\*\/
initial
.
.
\/\*.*?\*\/
.
.
.
.
\s+
initial
.
.
:(?:"[^"]+"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)):(?:n|ne|e|se|s|sw|w|nw|c|_)(?![a-zA-Z_0-9])
: + ID + : + Compass point
.
.
.
.
.
.
.
:(?:n|ne|e|se|s|sw|w|nw|c|_)(?![a-zA-Z_0-9])
: + Compass point
.
.
graph
(?:graph|digraph)
graph_id
.
save_prefix
(?:->|--)
Edge
.
.
.
\s+
graph
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
graph_id
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
open_brace
.
save_graph_id
.
.
.
.
.
{
statement_list_1
.
.
.
.
.
.
.
\/\*.*?\*\/
graph_id
.
.
.
.
.
.
.
\s+
graph_id
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
open_brace
{
statement_list_1
.
start_statements
.
.
.
.
.
\/\*.*?\*\/
open_brace
.
.
.
.
.
.
.
\s+
open_brace
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
start_statement
{
statement_list_1
.
start_statements
.
.
.
.
.
\/\*.*?\*\/
start_statement
.
.
.
.
.
.
.
\s+
start_statement
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
statement_list_1
subgraph
graph_id
reset_attribute_list
save_id_1
.
.
.
.
.
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
id_a
.
.
.
.
.
.
.
(?:->|--)
edge_id
.
.
.
.
.
.
.
(?:\[)
attribute_list
.
.
.
.
.
.
.
{
statement_list_2
.
.
.
.
.
.
.
}
end_statement
.
.
.
.
.
.
.
;
statement_list_1
.
.
.
.
.
.
.
\/\*.*?\*\/
statement_list_1
.
.
.
.
.
.
.
\s+
statement_list_1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
statement_list_2
subgraph
graph_id
.
save_id_1
.
.
.
.
.
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
id_a
.
.
.
.
.
.
.
(?:->|--)
edge_id
.
.
.
.
.
.
.
(?:\[)
attribute_list
.
.
.
.
.
.
.
{
statement_list_1
.
.
.
.
.
.
.
}
end_statement
.
.
.
.
.
.
.
;
statement_list_2
.
.
.
.
.
.
.
\/\*.*?\*\/
statement_list_2
.
.
.
.
.
.
.
\s+
statement_list_2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
id_a
subgraph
graph_id
.
save_id_2
.
.
.
.
.
:(?:n|ne|e|se|s|sw|w|nw|c|_)(?![a-zA-Z_0-9])
statement_list_1
.
.
.
.
.
.
.
:(?:"[^"]+"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)):(?:n|ne|e|se|s|sw|w|nw|c|_)(?![a-zA-Z_0-9])
statement_list_1
.
.
.
.
.
.
.
:(?:"[^"]+"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
statement_list_1
.
.
.
.
.
.
.
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
id_b
.
.
.
.
.
.
.
{
statement_list_1
.
.
A stand-alone {
.
.
.
.
}
end_statement
.
.
.
.
.
.
.
(?:->|--)
id_b
.
.
.
.
.
.
.
\[
attribute_list
.
.
.
.
.
.
.
=
id_b
.
.
.
.
.
.
.
;
id_a
.
.
.
.
.
.
.
\/\*.*?\*\/
id_a
.
.
.
.
.
.
.
\s+
id_a
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
id_b
subgraph
graph_id
.
save_id_2
.
.
.
.
.
:(?:n|ne|e|se|s|sw|w|nw|c|_)(?![a-zA-Z_0-9])
statement_list_1
.
.
.
.
.
.
.
:(?:"[^"]+"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)):(?:n|ne|e|se|s|sw|w|nw|c|_)(?![a-zA-Z_0-9])
statement_list_1
.
.
.
.
.
.
.
:(?:"[^"]+"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
statement_list_1
.
.
.
.
.
.
.
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
id_a
.
.
.
.
.
.
.
{
statement_list_1
.
.
A stand-alone {
.
.
.
.
}
end_statement
.
.
.
.
.
.
.
(?:->|--)
id_a
.
.
.
.
.
.
.
\[
attribute_list
.
.
.
.
.
.
.
=
id_a
.
.
.
.
.
.
.
;
id_b
.
.
.
.
.
.
.
\/\*.*?\*\/
id_b
.
.
.
.
.
.
.
\s+
id_b
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
edge_id
subgraph
id_a
.
save_id_1
.
.
.
.
.
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
id_a
.
.
.
.
.
.
.
(?:->|--)
statement_list_1
.
.
.
.
.
.
.
}
end_statement
.
.
.
.
.
.
.
\/\*.*?\*\/
edge_id
.
.
.
.
.
.
.
\s+
edge_id
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
attribute_list
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
attribute_a
set_attribute_list
save_attribute
.
.
.
.
.
}
statement_list_1
.
.
.
.
.
.
.
\/\*.*?\*\/
attribute_list
.
.
.
.
.
.
.
\s+
attribute_list
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
attribute_a
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
attribute_b
.
save_attribute
.
.
.
.
.
=
attribute_b
.
.
.
.
.
.
.
,
attribute_list
.
.
.
.
.
.
.
]
statement_list_1
.
.
.
.
.
.
.
\/\*.*?\*\/
attribute_a
.
.
.
.
.
.
.
\s+
attribute_a
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
attribute_b
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
attribute_a
.
save_attribute
.
.
.
.
.
=
attribute_a
.
.
.
.
.
.
.
,
attribute_list
.
.
.
.
.
.
.
]
statement_list_1
.
.
.
.
.
.
.
\/\*.*?\*\/
attribute_b
.
.
.
.
.
.
.
\s+
attribute_b
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
end_statement
subgraph
graph_id
.
save_id_1
.
.
.
.
.
(?:"[^"]*"|<[^>]*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*))
id_a
.
.
.
.
.
.
.
(?:->|--)
edge_id
.
.
.
.
.
.
.
\[
attribute_list
.
.
.
.
.
.
.
{
statement_list_1
.
.
.
.
.
.
.
}
statement_list_1
.
.
.
.
.
.
.
\/\*.*?\*\/
end_statement
.
.
.
.
.
.
.
\s+
end_statement
.
.
.
.
Start
Accept
State
Event
Next
Entry
Exit
Regexp
Interpretation