pair alpha beta ::= Pair alpha beta ;
list item ::= Nil | Cons item (list item) ;
annExprM bindAnn nodeAnn
::= AVar name |
ANum num |
AConstr name |
AAp (pair nodeAnn (annExprM bindAnn nodeAnn))
(pair nodeAnn (annExprM bindAnn nodeAnn)) |
ALet bool (list (pair bindAnn (pair nodeAnn (annExprM bindAnn nodeAnn))))
(pair nodeAnn (annExprM bindAnn nodeAnn)) |
ACase (pair nodeAnn (annExprM bindAnn nodeAnn))
(list (pair name (pair (list bindAnn)
(pair nodeAnn (annExprM bindAnn nodeAnn))))) |
ALam (list bindAnn) (pair nodeAnn (annExprM bindAnn nodeAnn)) ;
;;
main = 42
|