class MetaCL::DSL::Expression

Attributes

tree[R]

Public Class Methods

construct(program, &block) click to toggle source
# File lib/metacl/dsl/expression.rb, line 25
def self.construct(program, &block)
  Expression.new(program, &block).tree
end
new(program, &block) click to toggle source
# File lib/metacl/dsl/expression.rb, line 6
def initialize(program, &block)
  @program = program
  @tree = instance_eval(&block)
end

Public Instance Methods

method_missing(name, *args) click to toggle source
# File lib/metacl/dsl/expression.rb, line 19
def method_missing(name, *args)
  sub_expression = @program.resources.expressions_hash[name.to_sym]
  substitution = sub_expression.args.map.with_index { |param, index| [param, args[index]] }.to_h
  sub_expression.root_node.get_tree_with_substitution(substitution)
end
mul(index, from, to, expression) click to toggle source
# File lib/metacl/dsl/expression.rb, line 15
def mul(index, from, to, expression)
  Logic::Node.new :aggregator, expression, nil, index: index, from: from, to: to, type: :*
end
sum(index, from, to, expression) click to toggle source
# File lib/metacl/dsl/expression.rb, line 11
def sum(index, from, to, expression)
  Logic::Node.new :aggregator, expression, nil, index: index, from: from, to: to, type: :+
end