/**
* 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"] \
)