simple_graph_grammar.g4

all_matches

centralmatch ';' centralmatch

node

LPAR STAR VEC multiple_labels COL OTHERS RPAR

centralmatch

OTHERS EQ node many_edges edge_joining WHERE test_expr REWRITE_TO rewrite_to node

many_edges

edge

rewrite_to

'del' OTHERS 'new' OTHERS 'set' rewrite_expr 'as' rewrite_expr

rewrite_expr

'𝜉' OTHERS '@' rewrite_expr 'ℓ' OTHERS '@' rewrite_expr '𝜋' rewrite_expr '@' rewrite_expr 'φ' rewrite_expr ',' rewrite_expr 'label' rewrite_expr 'src' rewrite_expr 'dst' rewrite_expr IF LPAR test_expr RPAR THEN rewrite_expr ELSE rewrite_expr OTHERS LPAR rewrite_expr RPAR 'SCRIPT' EscapedString

test_expr

test_expr_side '=' test_expr_side test_expr_side '≠' test_expr_side test_expr_side '<' test_expr_side test_expr_side '≤' test_expr_side test_expr '∨' test_expr test_expr '∧' test_expr LPAR test_expr RPAR 'TEST' EscapedString OTHERS 'unmatched' OTHERS '.' OTHERS OTHERS 'matched' OTHERS '.' OTHERS

test_expr_side

rewrite_expr OTHERS

edge

'--' edgelabel '->' node '<-' edgelabel '--' node '--' edgelabel 'hook'

edge_joining

node edge

edgelabel

QPAR FORALL QM OTHERS COL multiple_labels PPAR

multiple_labels

OTHERS '||' OTHERS

WHERE

'where'

IF

'if'

THEN

'then'

ELSE

'else'

AS

'as'

VEC

'>>'

REWRITE_TO

'↪'

FORALL

'∀'

QM

'?'

EQ

'='

STAR

'*'

LPAR

'('

RPAR

')'

COL

':'

QPAR

'['

PPAR

']'

EscapedString

'"' not [\"] '\' [\"] '"'

OTHERS

not [;*():=][|∀> \t\r\n-]

SPACE

[ \t\r\n]

COMMENT

'/*' any char '*/'

LINE_COMMENT

'//' not [\r\n]