/** * Utils for pretty-printing SDF. */ module stratego/sdf/verbalize imports stratego/asfix/signature Sdf2 strategies /** * @type Symbol -> List(String) */ pp-sdf-symbol = rec x( \ cf(sym) -> <concat> [["<"], <x> sym, ["-CF>"]] \ + \ lex(sym) -> <concat> [["<"], <x> sym, ["-LEX>"]] \ + \ empty() -> ["()"] \ + \ seq(s,ss) -> <concat> [["("], <map(x)> [s|ss], [")"]] \ + \ opt(sym) -> <x;at-end(!["opt"])> sym \ + \ iter(sym) -> <x;at-end(!["+"])> sym \ + \ iter-star(sym) -> <x;at-end(!["*"])> sym \ + \ iter-sep(sym,sep) -> <concat> [["{"], <x> sym, <x> sep, ["}+"]] \ + \ iter-star-sep(sym,sep) -> <concat> [["{"], <x> sym, <x> sep,["}*"]] \ + \ func(ss,s) -> <concat> [<filter(x);concat> ss, ["to"], <x> s] \ + \ alt(s1,s2) -> <concat> [<x>s1, ["|"], <x>s2] \ + \ sort(str) -> [str] \ + \ lit(str) -> [<try(un-double-quote; unescape)> str] \ + \ label(str,_) -> [<try(un-double-quote; unescape)> str] \ + \ layout() -> ["LAYOUT"] \ )