[Grammar] Add the prioritized choice, it closes #1. Be Careful, it uses a non-standard Rust compiler, you need the method  in Iterator (which is a fold without initial element).