def self.node_class_for(type)
case type
when :params
ParameterNode
when :call, :fcall, :vcall, :command, :command_call
MethodCallNode
when :if, :elsif, :if_mod, :unless, :unless_mod
ConditionalNode
when :for, :while, :while_mod, :until, :until_mod
LoopNode
when :def, :defs
MethodDefinitionNode
when :class, :sclass
ClassNode
when :module
ModuleNode
else
if type.to_s =~ /_ref\Z/
ReferenceNode
elsif type.to_s =~ /_literal\Z/
LiteralNode
elsif KEYWORDS.has_key?(type)
KeywordNode
else
AstNode
end
end
end