Method: Keisan::AST::Assignment#evaluate

Defined in:
lib/keisan/ast/assignment.rb

#evaluate(context = nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/keisan/ast/assignment.rb', line 25

def evaluate(context = nil)
  context ||= Context.new

  lhs = children.first
  rhs = children.last

  if is_variable_definition?
    evaluate_variable_assignment(context, lhs, rhs)
  elsif is_function_definition?
    evaluate_function_assignment(context, lhs, rhs)
  elsif is_list_assignment?
    evaluate_list_assignment(context, lhs, rhs)
  else
    # Try cell assignment
    evaluate_cell_assignment(context, lhs, rhs)
  end
end