[antlr-interest] Lexer for 0.Equals(..)

Sam Harwell sam at tunnelvisionlabs.com
Mon Jan 23 06:48:22 PST 2012


It looks like your lexer is matching "0.E" as a REAL_LITERAL. You need to
make sure that the exponent part includes non-optional digits after the E.

--
Sam Harwell
Owner, Lead Developer
http://tunnelvisionlabs.com


-----Original Message-----
From: Christian [mailto:chwchw at gmx.de] 
Sent: Monday, January 23, 2012 7:31 AM
To: antlr-interest at antlr.org
Subject: [antlr-interest] Lexer for 0.Equals(..)

Hello,

my lexer does not recognize 0.Equals(..) and reports the error:
    required (...)+ loop did not match anything at character 'E'

I understand why but I do not know how to resolve it. Here are the
participating rules in order:

INTEGER_LITERAL
  : Decimal_integer_literal
  | Hexadecimal_integer_literal
  ;

REAL_LITERAL
  : Decimal_digits DOT Decimal_digits Exponent_part? Real_type_suffix?
  | DOT Decimal_digits Exponent_part? Real_type_suffix?
  | Decimal_digits Exponent_part Real_type_suffix?
  | Decimal_digits Real_type_suffix
  ;

DOT : '.';

The lexer tries to match the statement from above with the first branch in
the REAL_LITERAL rule but fails after the DOT. Of course. However, why
doesn't it try to match it with other rules after failing?
Furthermore, how can I resolve the problem?

If you need more information, please let me know.

Regards,
Christian

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