- let newline = (x : MatcheePair) =>{
- let wrapped_x = toSome(x);
- // nl = \r?\n
- let result = thenDo(thenDo(wrapped_x,
- zeroOrOnceDo(match1Char('\r'))), match1Char('\n'));
- if (result._tag == "Some"){
- result.value.matched_type = TokenType.NL;
- }
- return result;
+
+ return ret};
+
+let callees = orDo(callees1, callees2);
+
+
+
+/** %apply R combinating token */
+let applyToken = {
+ text: "%apply",
+ type: tk.TokenType.ID,
+ col: 0,
+ ln: 0,
+}
+
+/** facAux = callees facAux | callees */
+let facAux1 = (x: TokenMatcheePair)=>{
+ var ret = thenDo(thenDo(tk.toSome(x), callees), facAux);
+ if (ret._tag == "Some"){
+ console.log("1232345"+repr(tkTreeToSExp(ret.value.ast[ret.value.ast.length-1])));
+ let last1 = ret.value.ast[ret.value.ast.length-1];
+ let last2 = ret.value.ast[ret.value.ast.length-2];
+
+
+ let b : tkTree[] = [applyToken];
+ ret.value.ast = [b.concat([last2, last1])];
+ console.log("11111"+repr(tkTreeToSExp(ret.value.ast)));
+
+ };
+
+return ret;}
+let facAux2 = callees;
+let facAux = orDo(facAux1, facAux2);
+
+
+
+/** fac = single facAux | single
+ * Issue1 to be fixed.
+ */
+let fac1 = (x: TokenMatcheePair)=>{
+ var ret = thenDo(thenDo(tk.toSome(x), single),facAux);
+ if(ret._tag == "Some"){
+ console.log("777"+repr(tkTreeToSExp(ret.value.ast)));
+ ret.value.ast = [applyToken, ret.value.ast[ret.value.ast.length-2],
+ ret.value.ast[ret.value.ast.length-1]];
+ ret.value.ast;
+ rearrangeTree(ret.value.ast);
+ console.log("888"+repr(tkTreeToSExp(ret.value.ast)));
+