static Expression CreateRangeExpr(ParseNode x, ref int i) { Expression r = CreateOrExpr(x, ref i); if (ChildNodeMatches(x, ref i, "..")) { r = new BinaryOperation("..", r, CreateOrExpr(x, ref i)); } return(r); }
public static Expression CreateAndExpr(ParseNode x, ref int i) { Expression r = CreateXOrExpr(x, ref i); if (ChildNodeMatches(x, ref i, "&&")) { r = new BinaryOperation("&&", r, CreateXOrExpr(x, ref i)); } return(r); }
public static Expression CreateEqExpr(ParseNode x, ref int i) { Expression r = CreateTypeOpExpr(x, ref i); if (ChildNodeMatches(x, ref i, "==")) { r = new BinaryOperation("==", r, CreateTypeOpExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, "!=")) { r = new BinaryOperation("!=", r, CreateTypeOpExpr(x, ref i)); } return(r); }
public static Expression CreateMultExpr(ParseNode x, ref int i) { Expression r = CreateUnaryExpr(x, ref i); if (ChildNodeMatches(x, ref i, "*")) { r = new BinaryOperation("*", r, CreateUnaryExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, "/")) { r = new BinaryOperation("/", r, CreateUnaryExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, "%")) { r = new BinaryOperation("%", r, CreateUnaryExpr(x, ref i)); } return(r); }
public static Expression CreateAddExpr(ParseNode x, ref int i) { Expression r = CreateMultExpr(x, ref i); while (i < x.GetNumChildren()) { if (ChildNodeMatches(x, ref i, "+")) { r = new BinaryOperation("+", r, CreateMultExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, "-")) { r = new BinaryOperation("-", r, CreateMultExpr(x, ref i)); } else { return(r); } } return(r); }
public static Expression CreateRelExpr(ParseNode x, ref int i) { Expression r = CreateAddExpr(x, ref i); if (ChildNodeMatches(x, ref i, ">")) { r = new BinaryOperation(">", r, CreateAddExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, "<")) { r = new BinaryOperation("<", r, CreateAddExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, ">=")) { r = new BinaryOperation(">=", r, CreateAddExpr(x, ref i)); } else if (ChildNodeMatches(x, ref i, "<=")) { r = new BinaryOperation("<=", r, CreateAddExpr(x, ref i)); } return(r); }