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); }
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); }