Class: SQLTree::Node::ArithmeticExpression

Inherits:
Expression show all
Defined in:
lib/sql_tree/node/expression.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Expression

parse_atomic

Methods inherited from Base

[], #inspect, #quote_str, #quote_var

Constructor Details

#initialize(operator, lhs, rhs) ⇒ ArithmeticExpression

Returns a new instance of ArithmeticExpression.



186
187
188
189
190
# File 'lib/sql_tree/node/expression.rb', line 186

def initialize(operator, lhs, rhs)
  @lhs = lhs
  @rhs = rhs
  @operator = operator
end

Instance Attribute Details

#lhsObject

Returns the value of attribute lhs.



184
185
186
# File 'lib/sql_tree/node/expression.rb', line 184

def lhs
  @lhs
end

#operatorObject

Returns the value of attribute operator.



184
185
186
# File 'lib/sql_tree/node/expression.rb', line 184

def operator
  @operator
end

#rhsObject

Returns the value of attribute rhs.



184
185
186
# File 'lib/sql_tree/node/expression.rb', line 184

def rhs
  @rhs
end

Class Method Details

.parse(tokens) ⇒ Object



196
197
198
# File 'lib/sql_tree/node/expression.rb', line 196

def self.parse(tokens)
  self.parse_primary(tokens)
end

.parse_primary(tokens) ⇒ Object



200
201
202
203
204
205
206
# File 'lib/sql_tree/node/expression.rb', line 200

def self.parse_primary(tokens)
  expr = self.parse_secondary(tokens)
  while [SQLTree::Token::PLUS, SQLTree::Token::MINUS].include?(tokens.peek)
    expr = self.new(tokens.next.literal, expr, self.parse_secondary(tokens))
  end
  return expr
end

.parse_secondary(tokens) ⇒ Object



208
209
210
211
212
213
214
# File 'lib/sql_tree/node/expression.rb', line 208

def self.parse_secondary(tokens)
  expr = Expression.parse_atomic(tokens)
  while [SQLTree::Token::PLUS, SQLTree::Token::MINUS].include?(tokens.peek)
    expr = self.new(tokens.next.literal, expr, SQLTree::Node::Expression.parse_atomic(tokens))
  end
  return expr
end

Instance Method Details

#to_sqlObject



192
193
194
# File 'lib/sql_tree/node/expression.rb', line 192

def to_sql
  "(#{@lhs.to_sql} #{@operator} #{@rhs.to_sql})"
end