fix shift-reduce conflict
add a catch-all rule for unknown characters