2009/1/15 Francois Gouget <fgou...@free.fr> > On Wed, 14 Jan 2009, Eric Pouech wrote: > > > Francois Gouget a écrit : > > > Hi, > > > > > > I have noticed that expr_alloc_uconstant() is unused in winedbg. > > > Is that normal? > > > > > > > the main point is that the lexer only returns signed integers, while it > > should return both signed and unsigned integers > > Actually, as far as I can tell, the lexer can only match unsigned > integers: > > DIGIT [0-9] > HEXDIGIT [0-9a-fA-F] > "0x"{HEXDIGIT}+ { sscanf(yytext, "%x", &dbg_lval.integer); return tNUM; > } > {DIGIT}+ { sscanf(yytext, "%d", &dbg_lval.integer); return tNUM; > } > > Both 'regexps' only match unsigned integers. And yet they are scanned > with %d instead of %u. And then this continues in the grammar: > > tNUM { $$ = expr_alloc_sconstant($1); } > > So maybe we should treat all these as unsigned, use > expr_alloc_uconstant(), and then it is expr_alloc_sconstant() that would > be unused? > > Or should we really accept negative integers in the lexer? > > actually, doing what you suggest would help the lexer, but will put the issue a bit later in the expression computation package, where only signed ints are computed (and moreover that code is likely to be broken on a 64bit CPU) so, moving to a unsigned requipes also to fix expr.c A+
> > > -- > -- > Eric Pouech >