protected override void AssignStringTypes( Grammar root ) { // walk string literals assigning types to unassigned ones foreach ( var literal in _stringLiterals.Where( pair => pair.Value < Label.MIN_TOKEN_TYPE ).ToArray() ) { int type = root.GetNewTokenType(); _stringLiterals[literal.Key] = type; // if string referenced in combined grammar parser rule, // automatically define in the generated lexer root.DefineLexerRuleForStringLiteral( literal.Key, type ); } }