------------------------------------------------------------------------- -- Pretty printing of ruler AST1 ------------------------------------------------------------------------- %%[1 ag ATTR AllAS1 AGItf [ | | pp USE {>-<} {empty} : PP_Doc ] SEM AGItf | AGItf lhs . pp = {- @decls.pp >-< "---------- dt gam" >-< ppGam @dtGam >-< -} "---------- dt inv gam" >-< ppGam @dtInvGam >-< {- "---------- rw gam" >-< ppRwGam @rwGam >-< "---------- fm gam" >-< ppGam @fmGam >-< -} "---------- scheme gam" >-< ppGam @scGam >-< "---------- rule set gam" >-< ppGam @rsGam >-< "---------- sc dpd graph" >-< pp @scDpdGr >-< "---------- vw dpd graph" >-< pp @vwDpdGr SEM Decl | Scheme lhs . pp = "scheme" >#< @scKind >#< @nm >-< "=" >#< @decls.pp | SchemeDeriv lhs . pp = "scheme" >#< @scKind >#< @nm >#< ":" >#< @scDeriv >-< "=" >#< @decls.pp | Fmt lhs . pp = "format" >#< @fmKind >#< @matchExpr.pp >#< "=" >#< @expr.pp | ScmView lhs . pp = "view" >#< @nm >-< "=" >#< @decls.pp | RulView lhs . pp = "view" >#< @nm >-< "=" >#< @jdIntros.pp | Rules lhs . pp = "rules" >#< @nm >#< "scheme" >#< @schemeNm >-< "=" >#< @decls.pp | RulesGroup lhs . pp = "rulesgroup" >#< @nm >#< "scheme" >#< @schemeNm >-< "=" >#< (vlist . map (\(rs,r) -> "rule" >#< rs >#< r) $ @rlNms) | Rule lhs . pp = "rule" >#< @nm >#< "viewsel" >#< pp @viewSel >-< "=" >#< @decls.pp | ViewHierarchy lhs . pp = "viewhierarchy" >#< text (show @nmOrder) | ShpJudge lhs . pp = "judgeshape" >#< @expr.pp | ShpDel lhs . pp = "judgeshape" >#< "-" >#< ppCommas' @fmKinds | Attr lhs . pp = "holes" >#< @intros.pp | Explain lhs . pp = "explain" >#< @mbNm >#< "=" >#< ppParens @expr.pp SEM RuleJudgeIntro | PrePost lhs . pp = @pre.pp >-< "---" >-< @post.pp SEM RExpr | Judge lhs . pp = "judge" >#< maybe empty (\n -> pp n >#< "=") @mbRNm >#< pp @schemeNm >#< @eqns.pp | Del lhs . pp = "judge" >#< "-" >#< ppCommas @nms SEM AttrIntro | Intro lhs . pp = pp @props >#< pp @nm >#< ":" >#< pp @ty SEM AttrEqn | Eqn lhs . pp = "|" >#< pp @nm >#< "=" >#< @expr.pp SEM AttrIntroDecl | Attrs lhs . pp = "inh" >#< @inhs.pp >-< "i+s" >#< @inhsyns.pp >-< "syn" >#< @syns.pp %%]