Exemplo n.º 1
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (!(obj is ElementLiteral))
            {
                return(false);
            }
            ElementLiteral literal = (ElementLiteral)obj;

            if (literal.Type != this.Type)
            {
                return(false);
            }

            if (this.Type == TokenType.StringLiteral)
            {
                return((string)this.Value == (string)literal.Value);
            }
            else if (this.Type == TokenType.DecimalLiteral || this.Type == TokenType.IntegerLiteral)
            {
                double leftValue  = Convert.ToDouble(this.Value);
                double rightValue = Convert.ToDouble(literal.Value);
                return(leftValue == rightValue);
            }
            else if (this.Type == TokenType.BooleanLiteral)
            {
                return((bool)this.Value == (bool)literal.Value);
            }
            return(this.Value == literal.Value);
        }
Exemplo n.º 2
0
        internal static bool Parse(Parser.ParseContext context)
        {
            TokenType tokenType = TokenType.None;
            object    value     = null;
            bool      isLiteral = ParseString(context, out tokenType, out value);

            if (!isLiteral)
            {
                isLiteral = ParseNumeric(context, out tokenType, out value);
            }
            if (!isLiteral)
            {
                isLiteral = ParseBool(context, out tokenType, out value);
            }
            if (!isLiteral)
            {
                return(false);
            }
            ElementLiteral element = new ElementLiteral(tokenType, value);

            context.Ouput.Push(element);
            return(true);
        }