[antlr-interest] newbie roblem about expressions & number representations
Duygu Altinok
duygu_the_duygu at yahoo.com
Thu Dec 10 16:41:56 PST 2009
Hi ,
I have a small expression language and two types of numbers: integer and float , defined as :
protected DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
INT : (DIGIT )+
;
FLOAT
: ('0'..'9')+ '.' ('0'..'9')* (EXPONENT)?
| '.' ('0'..'9')+ (EXPONENT)?
| ('0'..'9')+ EXPONENT
;
protected:
EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
var_name : ID ;
ID : ('a'..'z'|'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9'|('_'(('a'..'z')|('A'..'Z')|('0'..'9'))))*
alg_expr : expr1 ;
expr1 : a_expr ((LEQ| NEQ | LT | ISEQ) a_expr)*;
a_expr : term ((PLUS | MINUS) term)*;
term : factor ((MULT | DIV ) factor)* ;
factor : var_name | INT |FLOAT | LPAREN expr1 RPAREN ;
For instance when I say 16 + 1.1 it gives a huge parsing error:
line 1:23: expecting '.', found ' '
at CFlatLexer.nextToken(CFlatLexer.java:245)
at antlr.TokenBuffer.fill(TokenBuffer.java:69)
at antlr.TokenBuffer.LA(TokenBuffer.java:80)
at antlr.LLkParser.LA(LLkParser.java:52)
at CFlatParser.factor(CFlatParser.java:1185)
at CFlatParser.term(CFlatParser.java:1126)
at CFlatParser.a_expr(CFlatParser.java:1067)
at CFlatParser.expr1(CFlatParser.java:992)
at CFlatParser.alg_expr(CFlatParser.java:258)
at CFlatParser.var_assignment(CFlatParser.java:872)
at CFlatParser.assignment(CFlatParser.java:776)
at CFlatParser.exx(CFlatParser.java:727)
at CFlatParser.exprr(CFlatParser.java:1724)
at CFlatParser.compound_f(CFlatParser.java:1789)
at CFlatParser.func_body(CFlatParser.java:1550)
at CFlatParser.func_defn(CFlatParser.java:1406)
at CFlatParser.program(CFlatParser.java:2293)
at Main.main(Main.java:13)
line 1:23: expecting '.', found ' '
I'm using antlr v2 , any help is appreciated.
Thanx in advance,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20091210/f434f78f/attachment.html
More information about the antlr-interest
mailing list