packages feed

ruler-0.4.0.0: src/AS1/Pretty.cag

-------------------------------------------------------------------------
-- 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

%%]