class Pione::Lang::ParamContext

ParamContext is a context for parameter block. This context takes special interpretation of variable binding declaration.

Public Instance Methods

eval(env) click to toggle source
Calls superclass method Pione::Lang::StructuralContext#eval
# File lib/pione/lang/context.rb, line 139
def eval(env)
  if elements.any? {|elt| elt.is_a?(VariableBindingDeclaration)}
    set(elements: elements.map {|elt| transform(elt)}).eval(env)
  else
    super
  end
end
transform(declaration) click to toggle source

Trasform variable binding declarations into param declarations.

# File lib/pione/lang/context.rb, line 148
def transform(declaration)
  if declaration.is_a?(VariableBindingDeclaration)
    ParamDeclaration.new(type, declaration.expr1, declaration.expr2)
  else
    declaration
  end
end