Use StringFragment to avoid creating new strings
moved static string instantiation outside switch

MSVC++ kicks up a fuss if you instantiate a static const inside of a
switch statement
Both EOF pushs can use the same string for the EOF char