//public bool Read<T>(out T token) //{ // var baseRead = Read(out token); // if (!(token is T)) // throw new Exception("Expected " + typeof(T)); // return baseRead; //} public bool Read(out BooleanExpressionToken token) { Position++; if (IsEof) { token = null; return(false); } token = Tokens[Position]; return(true); }
private ScalarValueExpression ReadScalar(BooleanExpressionToken token) { if (token is VariableReference _variable) { return new IdentifierExpression { Name = _variable.Name } } ; if (token is DecimalLiteral @decimal) { return new LiteralDecimalExpression { Value = @decimal.Value } } ; if (token is StringLiteral @string) { return new LiteralStringExpression { Value = @string.Value } } ; if (token is IntegerLiteral @int) { return new LiteralIntExpression { Value = @int.Value } } ; if (token is GuidLiteral @guid) { return new LiteralGuidExpression { Value = @guid.Value } } ; throw new ArgumentException("Invalid scalar expression."); }