define macro graph
{ graph ( ?connections:* ) }
=> { begin
let g = make(<graph>);
add-edges(g, list(?connections));
g;
end }
connections:
{ } => { }
{ ?snode:name -> ?tnode:name ; ... } =>
{ ?"snode", ?"tnode" , ... }
{ ?snode:name -> ?tnode:name -> ?unode:name ; ... } =>
{ ?"snode", ?"tnode", ?"tnode", ?"unode", ... }
{ ?snode:name -> ?tnode:name -> ?unode:name -> ?vnode:name ; ... } =>
{ ?"snode", ?"tnode", ?"tnode", ?"unode", ?"unode", ?"vnode", ... }
end;
I would like to have only two rules in the connections auxiliary macrodefine macro graph
{ graph ( ?edges:* ) }
=> { begin
let g = make(<graph>);
?edges;
add-edges(g, list(?connections));
g;
end }
edges:
{ } => { }
{ ?connections ; ... } =>
{ add-edges(g, list(?connections)) }
connections:
{ ?node:name } => { ?"node" }
{ ?node:name -> ... } { ?"node", ... }
end;