new deterministic choice

the second alternative is only tried if the first one failed without
consuming any input
code cleanup in parser library
change choice strategy for token expansion