C# grammar using ANTLR 3

Viewed 183

I'm now writing C# grammar using Antlr 3 based on this grammar file.

But, I found some definitions I can't understand.

NUMBER:
    Decimal_digits INTEGER_TYPE_SUFFIX? ;
// For the rare case where 0.ToString() etc is used.
GooBall
@after        
{
    CommonToken int_literal = new CommonToken(NUMBER, $dil.text);
    CommonToken dot = new CommonToken(DOT, ".");
    CommonToken iden = new CommonToken(IDENTIFIER, $s.text);

    Emit(int_literal); 
    Emit(dot); 
    Emit(iden); 
    Console.Error.WriteLine("\tFound GooBall {0}", $text); 
}
    :
    dil = Decimal_integer_literal d = '.' s=GooBallIdentifier
    ;

fragment GooBallIdentifier
    : IdentifierStart IdentifierPart* ;

The above fragments contain the definition of 'GooBall'. I have some questions about this definition.

Why is GooBall needed? Why does this grammar define lexer rules to parse '0.ToString()' instead of parser rules?

2 Answers
Related