Renamed concrete GrammarReader class as it can read more than a string. Using canXX where something is options and shouldXX where it is not optional.