A toy dynamic programming language written in Ruby
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

function_definition.rb 515B

123456789101112131415161718192021
  1. class AST::FunctionDefinition
  2. attr_reader :name, :parameters, :body, :env
  3. def initialize(name, parameters, body, env = nil)
  4. @name = name
  5. @parameters = parameters
  6. @body = body
  7. @env = env
  8. end
  9. def ==(other)
  10. other.is_a?(AST::FunctionDefinition) && other.name == @name &&
  11. other.parameters == @parameters &&
  12. other.body == @body
  13. end
  14. def execute(env)
  15. return AST::FunctionDefinition.new(@name, @parameters, @body, env) if @name.nil?
  16. env.set(@name.name, self)
  17. end
  18. end