>>643
根本的な解決になってるか知らんが、
<|> の右辺と左辺を逆にしたらいかんの?

(string "-" <|> (option "" (string "+"))) >> string "1"

つまり、εを含む文法を OR の一番最後で判定する