def parse str
      chars=str.split(//)
      nodes=Nodes.new(chars.length+2,@mat)
      nodes.add(0,Node.mk_bos_eos)
      nodes.add(chars.length+1,Node.mk_bos_eos)
      str.length.times{|i|
        @dic.possible_words(str,i).each{|w|
          nodes.add(i+1,Node.new(w))
        }
      }
      nodes
    end
def parse str
      chars=str.split(//)
      nodes=Nodes.new(chars.length+2,@mat)
      nodes.add(0,Node.mk_bos_eos)
      nodes.add(chars.length+1,Node.mk_bos_eos)
      str.length.times{|i|
        @dic.possible_words(str,i).each{|w|
          nodes.add(i+1,Node.new(w))
        }
      }
      nodes
    end
-> Nodes