State Transition Table for GraphViz2::Marpa V 1.11

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

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 (?:"[^"]*"|<\s*<.*?>\s*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)) ID
. . . (?:graph|digraph) graph_id . . :(?:"[^"]+"|<\s*<.*?>\s*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)) : + ID
. . . \/\*.*?\*\/ initial . . \/\*.*\*\/ .
. . . \s+ initial . . :(?:"[^"]+"|<\s*<.*?>\s*>|[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 (?:"[^"]*"|<\s*<.*?>\s*>|[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 . save_id_1 . .
. . . (?:"[^"]*"|<\s*<.*?>\s*>|[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 . .
. . . (?:"[^"]*"|<\s*<.*?>\s*>|[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 . . . .
. . . :(?:"[^"]+"|<\s*<.*?>\s*>|[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 . . . .
. . . :(?:"[^"]+"|<\s*<.*?>\s*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)) statement_list_1 . . . .
. . . (?:"[^"]*"|<\s*<.*?>\s*>|[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 . . . .
. . . :(?:"[^"]+"|<\s*<.*?>\s*>|[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 . . . .
. . . :(?:"[^"]+"|<\s*<.*?>\s*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)) statement_list_1 . . . .
. . . (?:"[^"]*"|<\s*<.*?>\s*>|[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 . .
. . . (?:"[^"]*"|<\s*<.*?>\s*>|[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 (?:"[^"]*"|<\s*<.*?>\s*>|[a-zA-Z_][a-zA-Z_0-9]*|-?(?:\.[0-9]+|[0-9]+(?:\.[0-9])*)) attribute_a . save_attribute . .
. . . ] statement_list_1 . . . .
. . . } statement_list_1 . . . .
. . . \/\*.*?\*\/ attribute_list . . . .
. . . \s+ attribute_list . . . .
. . . . . . . . .
. . attribute_a (?:"[^"]*"|<\s*<.*?>\s*>|[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 (?:"[^"]*"|<\s*<.*?>\s*>|[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 . .
. . . (?:"[^"]*"|<\s*<.*?>\s*>|[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

Links

Index page for all graph module demos

Demo page for GraphViz2::Marpa

Module and script attributes


Environment

Author
Date
2013-06-11
OS
Debian V 6
Perl
5.14.2