class Seaquel::AST::Expression

Base class for all expression-type AST nodes.

Public Class Methods

binop(op, *aliases) click to toggle source
# File lib/seaquel/ast/expression.rb, line 6
def self.binop op, *aliases
  define_method(op) do |exp|
    BinOp.new(op, self, exp)
  end

  aliases.each do |op_alias|
    alias_method(op_alias, op)
  end
end
joinop(op, *aliases) click to toggle source
# File lib/seaquel/ast/expression.rb, line 15
def self.joinop op, *aliases
  define_method(op) do |exp|
    JoinOp.new(op, [self, exp])
  end

  aliases.each do |op_alias|
    alias_method(op_alias, op)
  end
end
unaryop(op, *aliases) click to toggle source
# File lib/seaquel/ast/expression.rb, line 24
def self.unaryop op, *aliases
  define_method(op) do
    Unary.new(op, self)
  end

  aliases.each do |op_alias|
    alias_method(op_alias, op)
  end
end

Public Instance Methods

as(name) click to toggle source
# File lib/seaquel/ast/expression.rb, line 79
def as name
  Alias.new(name, self)
end
asc() click to toggle source
# File lib/seaquel/ast/expression.rb, line 83
def asc
  Order.new(:asc, self)
end
desc() click to toggle source
# File lib/seaquel/ast/expression.rb, line 86
def desc
  Order.new(:desc, self)
end
lisp_inspect(type, *args) click to toggle source
# File lib/seaquel/ast/expression.rb, line 90
def lisp_inspect type, *args
  "(" + 
    [type.to_s, args.map(&:inspect)].join(' ') + ")"
end