class Pione::Lang::ParamDeclaration
ParamDeclaration
is a declaration thae the parameter is neeeded.
Public Instance Methods
eval(env)
click to toggle source
Add the parameter in current rule definition.
# File lib/pione/lang/declaration.rb, line 131 def eval(env) # get variable var = get_reference(env, expr1, Variable) # we don't permit to declare parameters of other packages if not(var.package_id.nil?) and var.package_id != env.current_package_id raise ParamDeclarationError.new(self) end # get the value(don't evaluate in this time) default_val = expr2 begin env.variable_get(var) rescue UnboundError # bind default value env.variable_set(var, default_val) end param = ParameterDefinition.new(type, var.name, default_val) # select target definition definition = nil if env.current_definition # in rule definition context definition = env.current_definition else # in package context definition = env.package_get(PackageExpr.new(package_id: var.package_id)) end if definition.param_definition[var.name] raise RebindError.new(var) else definition.param_definition[var.name] = param end end
set_type(new_type)
click to toggle source
# File lib/pione/lang/declaration.rb, line 126 def set_type(new_type) set(type: new_type) end