Ruler data types
Below is just a temporary dump of gathered information.
| ARule || AG rules |
| AttrProps? || Direction of an attribute |
| Wr || Wrapper (around expressions) |
| Rw || Complex (non-variable) expressions |
| Sc || Scheme |
| Fm || Format (tex, ag, haskell, spec?,constr?) |
| At || Attribute (i.e. parameters of a type scheme) |
| Rn || Rename |
| Constr || A Constr is an expression with a type (e \bar ty). Related to ECnstr and WrapConstr? . ECnstr: Ty(=names)/Var/Empty |
| AtProp? || Properties of an attribute, such as Node, Thread, Retain, Extern, Inh, Syn. AtDir? is an Alias for AtProp? . |
| Expr || A ruler expression (i.e. variables (Nm/ANm), applications, unique/retain) |
| Sel || Dotted notation for sub/super/over script |
SVN Revision 3
Ruler is only used for lhs2TeX generation. A ruler file consists of declarations of two types: judgements and rules. A judgement contains a JExpr which denotes the type of the judgement (more a syntactic check than a type check, because the Cnstr mechanism isn't introduced yet). The JExpr is the definition of the judgement. A rule constains a bunch of RExprs as preconditions (above the line) and postcondition (below the line). An RExpr is either the use of a judgement or a condition, where a condition is just a normal JExpr.
Static analysis in this release amounts to verifying that all judgements are defined and that each use is syntactially correct (by unifying the definition of a judgment with a use-site of a judgement).
Translation to LaTeX?
is straightforward in this revision: for each rule, create a latex version of a type scheme with pretty printed judgements below and above the line.
SVN Revision 11,13,44
Only cosmetic changes.
SVN Revision 55, 131
Some concept of aliasses was introduced (a predecessor of the "ag"-like attribute definition style)
SVN Revision 157
Introduction of views. Addition of keywords scheme, rule and lets. No inheritance between views. I have the impression that in this revision the scheme should encapsulate all views, and that for each view then the judgements are taken that belong to this view (possibly controlled by "viewas" instructions).
- 17 Nov 2006