class CommandParser def self.snippet(str) self.parse(self.lex(str)) end def self.lex(str) tokens = [] until str.nil? || str.empty? case str when /\A(?:\w|\.)+\(/ tokens << [:fun_begin,$&] when /\A[\w.]+\s*