cli: support macros inside underscores

Support the following case:

    FOO: BAR
    ___FOO___ -> _BAR_

This is common. For example, paths with macros that have underscores in
them.

Note: I had to redefine what it means to be a token: they must not end
with an underscore. Regular expressions without recursion are simply
not powerful enough (they'll be too greedy or not greedy enough).
Instead of trying to support a trailing underscore, we can restrict the
definition to still allow simple regex matching.