+ *
+ * fac1 = int MUL int
+ */
+//let fac1 = midfix((x : TokenMatcheePair)=>
+// thenDo(thenDo(thenDo(tk.toSome(x), tInt), tMul), tInt));
+
+let fac1 = (x : TokenMatcheePair) => {
+ let a = midfix((x : TokenMatcheePair)=>
+ thenDo(thenDo(thenDo(tk.toSome(x), tInt), tMul), tInt), "fac1")(x);
+
+ return a;
+}
+
+
+/**
+ *
+ * fac2 = int MUL int
+ */
+let fac2 = tInt;
+
+/**
+ * fac = fac1 | fac2
+ */
+let fac = orDo(fac1, fac2);
+
+
+/**
+ *
+ * expr1 = fac ADD fac
+ */
+let expr1 = midfix((x : TokenMatcheePair)=>
+ thenDo(thenDo(thenDo(tk.toSome(x), fac), tAdd), fac), "expr1");
+/**
+ * expr2 = fac