[antlr-interest] Lexer Compiles in 4.0 but not in 3.4

Terence Parr parrt at cs.usfca.edu
Mon Jan 30 16:01:37 PST 2012


INT matches all these other tokens

INT     :   BININT
       |   OCTINT
       |   DECINT
       |   HEXINT
       ;

Ter

On Jan 30, 2012, at 3:56 PM, Hans Uhlig wrote:

> Hi all, I am a bit confused. My Lexer Grammar seems to compile fine in
> antlr 4.0 but seems to have trouble in 3.4 Perhaps I am being daft but I
> cant for the life of me figure out why.
> 
> error(208): essex_lexer.g:23:1: The following token definitions can never
> be matched because prior tokens match the same input:
> BININT,OCTINT,DECINT,HEXINT
> 
> http://pastebin.com/FUWQjpvj
> 
> lexer grammar essex_lexer;
> 
> ID      :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
> 
> INT     :   BININT
>        |   OCTINT
>        |   DECINT
>        |   HEXINT
>        ;
> 
> BININT  :   '0b' BIN_DIGIT+
>        ;
> 
> OCTINT  :   '0o' OCT_DIGIT+
>        ;
> 
> DECINT  :   DIGIT+
>        ;
> 
> HEXINT  :   '0x' HEX_DIGIT+
>        ;
> 
> FLOAT   :   DIGIT+ '.' DIGIT+ EXPONENT?
>        |   DIGIT+ EXPONENT
>        |   DIGIT+ 'f'
>        ;
> 
> fragment
> BIN_DIGIT
>        :   ('0' | '1')
>        ;
> 
> fragment
> OCT_DIGIT
>        :   ('0'..'7')
>        ;
> 
> fragment
> DIGIT
>        :   ('0'..'9')
>        ;
> 
> fragment
> HEX_DIGIT
>        :   (DIGIT | 'a'..'f' | 'A'..'F')
>        ;
> 
> 
> fragment
> EXPONENT:   ('e'|'E') ('+'|'-')? DIGIT+ ;
> 
> WS      :   ( ' ' | '\t' | '\r' | '\n' ) {$channel=HIDDEN;} ;
> 
> STRING  :   '"' ( ESC_SEQ | ~('\\'|'"') )* '"' ;
> 
> CHAR    :   '\''( ESC_SEQ | ~('\''|'\\')) '\'' ;
> 
> fragment
> ESC_SEQ :   '\\' ('\\'|'\''|'\"'|'a'|'b'|'f'|'n'|'r'|'t'|'v') | OCT_ESC |
> HEX_ESC | UNICODE_ESC ;
> 
> fragment
> HEX_ESC :   '\\x' HEX_DIGIT HEX_DIGIT ;
> 
> fragment
> OCT_ESC
>        :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
>        |   '\\' ('0'..'7') ('0'..'7')
>        |   '\\' ('0'..'7')
>        ;
> 
> fragment
> UNICODE_ESC
>        :   '\\u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
>        |   '\\U' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
> HEX_DIGIT HEX_DIGIT HEX_DIGIT
>        ;
> 
> 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