Antlr3.Tool.Grammar.DefineLexerRuleForStringLiteral C# (CSharp) Method

DefineLexerRuleForStringLiteral() public method

public DefineLexerRuleForStringLiteral ( string literal, int tokenType ) : void
literal string
tokenType int
return void
        public virtual void DefineLexerRuleForStringLiteral( string literal, int tokenType )
        {
            //[email protected]("defineLexerRuleForStringLiteral: "+literal+" "+tokenType);
            // compute new token name like T237 and define it as having tokenType
            string tokenID = ComputeTokenNameFromLiteral( tokenType, literal );
            DefineToken( tokenID, tokenType );
            // tell implicit lexer to define a rule to match the literal
            if ( IsRoot )
            { // don't build lexers for delegates
                LexerGrammarTemplate.SetAttribute( "literals.{ruleName,type,literal}",
                                            tokenID,
                                            tokenType,
                                            literal );
            }
        }

Usage Example

 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 );
     }
 }
Grammar