123456789101112131415161718192021222324252627 |
- module Chervil::AST
- class Application
- attr_reader :expr
- attr_reader :arguments
-
- def initialize(expr, arguments)
- @expr = expr
- @arguments = arguments
- end
-
- def ==(other)
- @expr == other.expr && @arguments == other.arguments
- end
-
- def evaluate(env)
- if @expr.class == Identifier
- function = env.get(@expr.name)
-
- if function.nil?
- ::Chervil::Error.new("Unbound variable #{@expr.name}")
- else
- function.call(@arguments.map { |arg| arg.evaluate(env) })
- end
- end
- end
- end
- end
|