def set_last_word!(expr, aref_or_aset=nil)
debugprint "expr(before set_last_word)=#{expr}"
if aref_or_aset
opchars = ""
else
opchars = expr.slice!(/\s*[#{OPERATOR_CHARS}]+$/)
debugprint "expr(strip opchars)=#{expr}"
end
expr.replace(if expr =~ /[\"\'\`]$/
"''"
else
fill_literal! expr
phrase = current_phrase(expr)
if aref_or_aset
expr.eval_string = expr[0..-2]
expr.meth = aref_or_aset
elsif phrase.match( /^(.+)\.(.*)$/ )
expr.eval_string, expr.meth = $1, $2
elsif opchars != ''
expr
end
debugprint "expr.eval_string=#{expr.eval_string}", "expr.meth=#{expr.meth}"
phrase
end << (opchars || ''))
debugprint "expr(after set_last_word)=#{expr}"
end