[antlr-interest] enums in v4 ANTLR Java code generation considered useless

Terence Parr parrt at cs.usfca.edu
Tue May 18 13:52:29 PDT 2010


hi Edgar :)

Don't i have to pass objects around then instead of ints with extra method calls etc...?

void match(TokenType t) {
  int ttype = t.getType();
}

no autoboxing etc... 

match(GeneratedTokenType.ID);

Also i need Parser.GeneratedTokenType.ID in outside code.  pretty ugly.

I guess i don't see enum advantages for token types and they cause confusion. "enum GeneratedTokenType implements TokenType" vs "int", in other words.

Ter

On May 18, 2010, at 1:47 PM, Edgar Espina wrote:

> Hi,
> 
> TokenType can be an interface. Then your generated tokens can implemented
> this interface.
> 
> enum GeneratedTokenType implements TokenType {
> ID(3);
> }
> 
> Thanks,
> edgar
> 
> On Tue, May 18, 2010 at 5:42 PM, Terence Parr <parrt at cs.usfca.edu> wrote:
> 
>> A lot of you have wondered why I'd don't use enum types for token types in
>> the generated Java-based parsers:
>> 
>> enum TokenType { ID(3), INT(4) };
>> 
>> I gave it my best shot but once again I found that enums just don't seem to
>> work for me. For example, without inheritance how can I define the match
>> method?
>> 
>> void match(TokenType t) {....}
>> 
>> Unfortunately this is in the superclass not the generated class so
>> TokenType is not yet defined. Without inheritance, I have to use match(int).
>> That means that there's no point in using the enum.
>> 
>> But, you say, I should be using generics on the parser to pass in the token
>> type enum type. Fair enough, And I'll try once I tried to generic'ize the v3
>> runtime for v4. We've had some discussion of this on the dev list.
>> 
>> Ter
>> 
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe:
>> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>> 
> 
> 
> 
> -- 
> edgar
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address



More information about the antlr-interest mailing list