[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] [PATCH] pp should interpret #num as #line num
From: |
Sergey Korshunoff |
Subject: |
Re: [Tinycc-devel] [PATCH] pp should interpret #num as #line num |
Date: |
Wed, 7 Jan 2015 06:01:49 +0300 |
Using a strtoul with TOK_PPNUM to convert string to number is a
standard method in tcc. And strtoul() is much shorter and faster then
parse_number(). parse_number deal with floats and long long integers
and ... And there is no need to declare any function or move it.
2015-01-07 1:26 GMT+03:00, Thomas Preud'homme <address@hidden>:
> Le mardi 6 janvier 2015, 12:52:06 Sergey Korshunoff a écrit :
>> v2 of the patch, which uses strtoul() insteed of the parse_number()
>
> As I said, I was just looking for some explanation about why the
> parse_number
> was necessary. The reason is that when dealing with TOK_LINE, next() is
> called. next() will call next_nomacro() and then execute this piece of
> code:
>
> /* convert preprocessor tokens into C tokens */
> if (tok == TOK_PPNUM &&
> (parse_flags & PARSE_FLAG_TOK_NUM)) {
> parse_number((char *)tokc.cstr->data);
> }
>
> And at the top of the function preprocess that deal with TOK_LINE:
>
> parse_flags = PARSE_FLAG_PREPROCESS | PARSE_FLAG_TOK_NUM |
> PARSE_FLAG_LINEFEED;
>
> So yeah, the next token after TOK_LINE becomes a number and can be found in
>
> tokc.i. If dealing with a #N macro, it would be a TOK_PPNUM and you'd need
> to
> use parse_number to turn it into a normal number.
>
> Therefore the approach in your first patch was perfectly fine. One thing
> though:
> could you rather move parse_number just before preprocess rather than
> predeclare it? Unless there is a reason for it to be at this place in the
> file
> in which case you can at least move the prototype declaration close the
> next_nomacro_spc () one.
>
> Thanks for your patch.
>
> Best regards,
>
> Thomas
>