These guys do this:
JS> (ps a!)
"abang;"
JS> (ps a!!)
"abangbang;"
JS> (ps a%)
"apercent;"
JS> (ps a%%)
"apercentpercent;"
But these guys do this:
JS> (ps a+)
"aplus;"
JS> (ps a++)
";"
JS> (ps a*)
"astar;"
JS> (ps a**)
";"
I'm sure this has something to do with translation of *NAMES-LIKE-THIS* and +NAMES-LIKE-THIS+. But presumably those should be special cases where * and + are truly delimiting the name?