%Litereum.Term.Self(P:@(:Litereum.Term) *) @(var:@(name:String) (P (Litereum.Term.var name))) @(call:@(bond:String) @(args:(List Litereum.Term)) (P ((Litereum.Term.call bond) args))) @(let:@(name:String) @(type:Litereum.Type) @(expr:Litereum.Term) @(body:Litereum.Term) (P ((((Litereum.Term.let name) type) expr) body))) @(create:@(ctor:String) @(vals:(List Litereum.Term)) (P ((Litereum.Term.create ctor) vals))) @(match:@(name:String) @(data:String) @(cses:(List Litereum.Term)) (P (((Litereum.Term.match name) data) cses))) @(word:@(numb:U64) (P (Litereum.Term.word numb))) @(compare:@(val0:Litereum.Term) @(val1:Litereum.Term) @(iflt:Litereum.Term) @(ifeq:Litereum.Term) @(ifgt:Litereum.Term) (P (((((Litereum.Term.compare val0) val1) iflt) ifeq) ifgt))) @(operate:@(oper:Litereum.Operation) @(val0:Litereum.Term) @(val1:Litereum.Term) (P (((Litereum.Term.operate oper) val0) val1))) @(set:@(file:String) @(expr:Litereum.Term) @(body:Litereum.Term) (P (((Litereum.Term.set file) expr) body))) @(get:@(name:String) @(file:String) @(body:Litereum.Term) (P (((Litereum.Term.get name) file) body))) @(bind:@(name:String) @(type:Litereum.Type) @(expr:Litereum.Term) @(body:Litereum.Term) (P ((((Litereum.Term.bind name) type) expr) body))) @(return:@(expr:Litereum.Term) (P (Litereum.Term.return expr))) (P Litereum.Term.Self)