--- VVar. Var ::= Ident ;
--- VAss. Var ::= Ident "=" Exp;
-
-ELt. Exp ::= Exp1 "<" Exp1 ;
-EELt. Exp ::= Exp1 "<=" Exp1 ;
-EGt. Exp ::= Exp1 ">" Exp1 ;
-EEGt. Exp ::= Exp1 ">=" Exp1 ;
-EEq. Exp ::= Exp1 "==" Exp1 ;
-ENEq. Exp ::= Exp1 "!=" Exp1 ;
-EPlus. Exp1 ::= Exp1 "+" Exp2 ;
-EMinus. Exp1 ::= Exp1 "-" Exp2 ;
-ETimes. Exp2 ::= Exp2 "*" Exp3 ;
-EDiv. Exp2 ::= Exp2 "/" Exp3 ;
-EIncr. Exp3 ::= Ident "++" ;
-EDecr. Exp3 ::= Ident "--" ;
+SReturn. Stm ::= "return" Exp ";" ;
+
+
+
+EAss. Exp ::= Ident "=" Exp;
+
+compExp. Exp ::= Exp1 Op0 Exp1 ;
+define compExp e1 o e2 = BiOpExp e1 o e2 ;
+
+op1. Exp1 ::= Exp1 Op1 Exp2 ;
+define op1 e1 o e2 = BiOpExp e1 o e2 ;
+
+op2. Exp2 ::= Exp2 Op2 Exp3 ;
+define op2 e1 o e2 = BiOpExp e1 o e2 ;
+
+postIncr. Exp3 ::= Ident "++" ;
+define postIncr i = EPost i Plus ;
+
+postDecr. Exp3 ::= Ident "--" ;
+define postDecr i = EPost i Minus ;
+