Class: SQLTree::Node::Expression

Inherits:
Base
  • Object
show all
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.

Class Method Summary collapse

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