コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }