srecord IfThen(Exp in, Exp out) {} sclass Exp {} srecord Func(S name, Exp arg) extends Exp {} srecord And(Exp a, Exp b) extends Exp {} abstract sclass Literal extends Exp { abstract S text(); } srecord Sentence(L tok) extends Literal { S text() { ret join(tok); } } srecord Sentence2(S text) extends Literal { S text() { ret text; } } srecord Eq(Exp left, Exp right) extends Exp {}