[antlr-interest] Problems parsing numbers
Bolek Vrany
lenochodpetiprsty at seznam.cz
Tue Oct 23 10:15:24 PDT 2007
Hello,
I'm using ANTLR for just a few days. I need to parse a language that has
numerical literals enclosed in $$ like $3.14$. It also allows
identifiers to start with a digit, so 017 is a valid identifier. I
started with creating the grammar
grammar Test;
rule : expr+;
expr : LITERAL
| VALFEATID
| PAD
;
//condition : // A single condition
// (VALFEATID | LONGFEATID) ('=' | '>' | '>=' | '<' | '<=' | '<>')
(VALFEATID | LONGFEATID | LITERAL | PAD);
fragment // Any character allowed in identifiers
IDCHAR : ('a'..'z'|'A'..'Z'|'_'|'0'..'9');
VALFEATID : // Value or short form feature id. It can be either a number
or an alphanumeric sequence
IDCHAR+ ;
//LONGFEATID : // Long form of feature reference, type 01[A].C3G
// IDCHAR IDCHAR '[' ('A' | 'P' | 'B' | 'E' | 'C' | 'I' | 'L' | 'S')
'].' VALFEATID ;
fragment
DIGIT : '0'..'9';
LITERAL : // This is the numerical literal
'$' DIGIT+ '$'
| '$' DIGIT+ '.' DIGIT+ '$'
;
PAD : '{PAD}';
// Newline and whitespace
NEWLINE : '\r'? '\n' ;
WS : (' '|'\t'|'\n'|'\r')+ {skip();} ;
but I got into problems. When I try to parse $c12345.67890" and try to
interpret it inside ANTLRWorks, I end up with a rule having two
expressions, the first being $c12345 and the other one .67890 I don't
know why.
I also tried to copy the first example in The definitive ANTLR reference
book and it behaved much like this but somehow miraculously stopped to
at once. Don't know if it is an installation issue.
I use ANTLR 3.0.1, ANTRLWorks 1.1.3, StringTemplate 3.1b1, XJLibrary 2.0
and Java 1.6.0_03.
Thanks for your help in advance
More information about the antlr-interest
mailing list