protected override void AssignTokenIDTypes( Grammar root ) { // walk token names, assigning values if unassigned foreach ( var token in _tokens.Where( pair => pair.Value == Unassigned ).ToArray() ) { _tokens[token.Key] = root.GetNewTokenType(); } }
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 ); } }