Esempio n. 1
0
 public static Expression VarName(string token, TokenPosition position, Expression[] terms)
 {
     return(new VariableExpression(position, token));
 }
Esempio n. 2
0
 public static OrElseExpression OrElse(TokenPosition position, Expression left, Expression right)
 {
     return(new OrElseExpression(position, left, right));
 }
Esempio n. 3
0
 public static AddExpression Add(TokenPosition position, Expression left, Expression right)
 {
     return(new AddExpression(position, left, right));
 }
Esempio n. 4
0
 public static ValueExpression <T> Value <T>(TokenPosition position, T value)
 {
     return(new ValueExpression <T>(position, value));
 }
Esempio n. 5
0
 public static BinaryArithmicExpression Op(TokenPosition position, string op, Expression left, Expression right)
 {
     return(new BinaryArithmicExpression(position, op, left, right));
 }
Esempio n. 6
0
 public NegationExpression(TokenPosition position, Expression value) : base(position)
 {
     _value = value;
 }
Esempio n. 7
0
 public UnknownTokenException(TokenPosition position, string token) : base(position, token)
 {
 }
Esempio n. 8
0
        public static Expression Constructor(string token, TokenPosition position, Expression[] terms)
        {
            string className = token.Substring(3).Trim();

            return(new ConstructorExpression(position, new VariableExpression(position, className), terms));
        }
Esempio n. 9
0
 public static Expression NumericRange(string token, TokenPosition position, Expression[] terms)
 {
     return(new RangeExpression(position, terms[0], terms[1]));
 }
Esempio n. 10
0
 public static Expression Assignment(string token, TokenPosition position, Expression[] terms)
 {
     return(new AssignmentExpression(position, terms[0], terms[1]));
 }
Esempio n. 11
0
        public static Expression StringLiteral(string token, TokenPosition position, Expression[] terms)
        {
            string s = token.Substring(1, token.Length - 2);

            if (s.IndexOf('\\') < 0)
            {
                return(Exp.Value(position, s));
            }

            string output = "";

            bool   inEscape  = false;
            string hexString = null;

            for (int i = 0; i < s.Length; i++)
            {
                char c = s[i];

                if (inEscape)
                {
                    if (c == 'x')
                    {
                        hexString = "";
                        continue;
                    }

                    if (hexString == null && (c != 'x' || c != 'X'))
                    {
                        output  += UnEscape("\\" + c, position);
                        inEscape = false;
                        continue;
                    }

                    if (hexString == null)
                    {
                        inEscape = false;
                    }
                    else
                    {
                        if (((char.ToLower(c) < 'a' || char.ToLower(c) > 'f') && (c < '0' || c > '9')) || hexString.Length == 4)
                        {
                            output   += UnEscape("\\x" + hexString, position);
                            inEscape  = false;
                            hexString = null;
                        }
                        else
                        {
                            hexString += c;
                            continue;
                        }
                    }
                }

                if (c != '\\')
                {
                    output += c;

                    continue;
                }

                inEscape = true;
            }

            return(Exp.Value(position, output));
        }
Esempio n. 12
0
 public static Expression Operator(string token, TokenPosition position, Expression[] terms)
 {
     return(Exp.Op(position, token, terms[0], terms[1]));
 }
Esempio n. 13
0
 public static Expression DefaultValueOperator(string token, TokenPosition position, Expression[] terms)
 {
     return(new DefaultValueExpression(position, terms[0], terms[1]));
 }
Esempio n. 14
0
 public static Expression Coalesce(string token, TokenPosition position, Expression[] terms)
 {
     return(new CoalesceExpression(position, terms[0], terms[1]));
 }
Esempio n. 15
0
 public UnaryMinusExpression(TokenPosition position, Expression value) : base(position)
 {
     _value = value;
 }
Esempio n. 16
0
 public static Expression TypeCast(string token, TokenPosition position, Expression[] terms)
 {
     return(new TypeCastExpression(position, new VariableExpression(position, token.Substring(1, token.Length - 2).Trim()), terms[0]));
 }
Esempio n. 17
0
 public TextNode(TokenPosition position, string text)
 {
     Text     = text;
     Position = position;
 }
Esempio n. 18
0
 public static Expression Ternary(string token, TokenPosition position, Expression[] terms)
 {
     return(new ConditionalExpression(position, terms[0], terms[1], terms[2]));
 }
Esempio n. 19
0
 public IsExpression(TokenPosition position, Expression objectExpression, Expression typeExpression) : base(position)
 {
     _objectExpression = objectExpression;
     _typeExpression   = typeExpression;
 }
Esempio n. 20
0
 public ConditionalExpression(TokenPosition position, Expression condition, Expression trueValue, Expression falseValue) : base(position)
 {
     _condition  = condition;
     _trueValue  = trueValue;
     _falseValue = falseValue;
 }
Esempio n. 21
0
 public static DivideExpression Divide(TokenPosition position, Expression left, Expression right)
 {
     return(new DivideExpression(position, left, right));
 }
Esempio n. 22
0
 public SubtractExpression(TokenPosition position, Expression left, Expression right) : base(position, "-", left, right)
 {
 }
Esempio n. 23
0
 public static ValueExpression Value(TokenPosition position, object value, Type type)
 {
     return(new ValueExpression(position, value, type));
 }
Esempio n. 24
0
 public RangeExpression(TokenPosition tokenPosition, Expression from, Expression to) : base(tokenPosition)
 {
     _from = from;
     _to   = to;
 }
Esempio n. 25
0
 public static AndAlsoExpression AndAlso(TokenPosition position, Expression left, Expression right)
 {
     return(new AndAlsoExpression(position, left, right));
 }
Esempio n. 26
0
 public AddExpression(TokenPosition position, Expression left, Expression right) : base(position, "+", left, right)
 {
 }
Esempio n. 27
0
 protected Expression(TokenPosition tokenPosition)
 {
     TokenPosition = tokenPosition;
 }
Esempio n. 28
0
 public TypeCastExpression(TokenPosition position, VariableExpression typeExpression, Expression targetExpression) : base(position)
 {
     _typeExpression   = typeExpression;
     _targetExpression = targetExpression;
 }
Esempio n. 29
0
 public static SubtractExpression Subtract(TokenPosition position, Expression left, Expression right)
 {
     return(new SubtractExpression(position, left, right));
 }
Esempio n. 30
0
        public static Expression Number(string token, TokenPosition position, Expression[] terms)
        {
            string s = token;

            Type type = null;

            if (!char.IsDigit(s[s.Length - 1]))
            {
                string suffix = "" + char.ToUpper(s[s.Length - 1]);

                s = s.Remove(s.Length - 1);

                if (!char.IsDigit(s[s.Length - 1]))
                {
                    suffix = char.ToUpper(s[s.Length - 1]) + suffix;

                    s = s.Remove(s.Length - 1);
                }

                switch (suffix)
                {
                case "M":
                    type = typeof(decimal);
                    break;

                case "D":
                    type = typeof(double);
                    break;

                case "F":
                    type = typeof(float);
                    break;

                case "L":
                    type = typeof(long);
                    break;

                case "U":
                    type = typeof(uint);
                    break;

                case "LU":
                case "UL":
                    type = typeof(ulong);
                    break;
                }
            }

            if (type != null)
            {
                return(new ValueExpression(position, Convert.ChangeType(s, type, _numberFormat), type));
            }

            if (s.LastIndexOf('.') >= 0)
            {
                return(Exp.Value(position, Convert.ToDouble(s, _numberFormat)));
            }
            else
            {
                long n = Convert.ToInt64(s);

                if (n > Int32.MaxValue || n < Int32.MinValue)
                {
                    return(Exp.Value(position, n));
                }
                else
                {
                    return(Exp.Value(position, (int)n));
                }
            }
        }