def process_masgn(exp)
lhs = exp.shift
rhs = exp.empty? ? nil : exp.shift
case lhs.first
when :array then
lhs.shift
lhs = lhs.map do |l|
case l.first
when :masgn then
"(#{process(l)})"
else
process(l)
end
end
when :lasgn then
lhs = [ splat(lhs.last) ]
when :splat then
lhs = [ "*""*" ]
else
raise "no clue: #{lhs.inspect}"
end
if context[1] == :iter and rhs then
lhs << splat(rhs[1])
rhs = nil
end
unless rhs.nil? then
t = rhs.first
rhs = process rhs
rhs = rhs[1..-2] if t == :array
return "#{lhs.join(", ")} = #{rhs}"
else
return lhs.join(", ")
end
end