/** * Lambda calculus grammar * * The lambda calculus grammar used here matches * the input grammar of the Lambda evaluator tool * created by Michael I. Schwartzbach. * * @author Jacob Andersen */ { $ = [\ \n\r]* ; ShortId = [^\ \n\r\\.()<>] ; LongId = * ; Name.shortid : ShortId ; Name.longid : "<" LongId ">" ; Exp.short : Short ; Exp.app : Exp Short ; Short.paren : "(" Exp ")" ; Short.lam : "\\" Name Body ; Short.var : Name ; Body.exp : "." Exp ; Body.lam : Name Body ; }