Class: SQLTree::Node::Expression
- Defined in:
- lib/sql_tree/node/expression.rb
Overview
Base class for all SQL expressions.
This is an asbtract class and should not be used directly. Use one of the subclasses instead.
Direct Known Subclasses
AllFieldsExpression, ArithmeticExpression, ComparisonExpression, FunctionExpression, LogicalExpression, LogicalNotExpression, SetExpression
Class Method Summary collapse
- .parse(tokens) ⇒ Object
-
.parse_atomic(tokens) ⇒ Object
Parses a single, atomic SQL expression.
Methods inherited from Base
[], #inspect, #quote_str, #quote_var
Class Method Details
.parse(tokens) ⇒ Object
9 10 11 |
# File 'lib/sql_tree/node/expression.rb', line 9 def self.parse(tokens) SQLTree::Node::LogicalExpression.parse(tokens) end |
.parse_atomic(tokens) ⇒ Object
Parses a single, atomic SQL expression. This can be either:
-
a full expression (or set of expressions) within parentheses.
-
a logical NOT expression
-
an SQL variable
-
an SQL function
-
a literal SQL value (numeric or string)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/sql_tree/node/expression.rb', line 19 def self.parse_atomic(tokens) case tokens.peek when SQLTree::Token::LPAREN tokens.consume(SQLTree::Token::LPAREN) expr = SQLTree::Node::Expression.parse(tokens) tokens.consume(SQLTree::Token::RPAREN) expr when SQLTree::Token::NOT SQLTree::Node::LogicalNotExpression.parse(tokens) when SQLTree::Token::Variable if tokens.peek(2) == SQLTree::Token::LPAREN SQLTree::Node::FunctionExpression.parse(tokens) else SQLTree::Node::Variable.parse(tokens) end else SQLTree::Node::Value.parse(tokens) end end |