[PATCH vkd3d] vkd3d-shader/hlsl: Fix floating point literals matching.

Nikolay Sivov nsivov at codeweavers.com
Mon Feb 7 23:13:52 CST 2022



On 2/8/22 03:20, Zebediah Figura (she/her) wrote:
> On 2/7/22 18:14, Nikolay Sivov wrote:
>> Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
>> ---
>>
>> Immediate issue was that constants like 1e1 were not parsed without a 
>> suffix.
>>
>>   libs/vkd3d-shader/hlsl.l | 6 +-----
>>   1 file changed, 1 insertion(+), 5 deletions(-)
>>
>> diff --git a/libs/vkd3d-shader/hlsl.l b/libs/vkd3d-shader/hlsl.l
>> index e9281ec..60aca79 100644
>> --- a/libs/vkd3d-shader/hlsl.l
>> +++ b/libs/vkd3d-shader/hlsl.l
>> @@ -188,11 +188,7 @@ row_major               {return 
>> KW_ROW_MAJOR;           }
>>                               yylval->floatval = atof(yytext);
>>                               return C_FLOAT;
>>                           }
>> -[0-9]+\.([eE][+-]?[0-9]+)?[h|H|f|F]? {
>> -                            yylval->floatval = atof(yytext);
>> -                            return C_FLOAT;
>> -                        }
>> -[0-9]+([eE][+-]?[0-9]+)?[h|H|f|F] {
>> +[0-9]+(\.)?([eE][+-]?[0-9]+)?[h|H|f|F]? {
>>                               yylval->floatval = atof(yytext);
>>                               return C_FLOAT;
>>                           }
>
> That matches integer constants like "1" as floats, though, unless I'm 
> misreading. I believe it's necessary to introduce a fourth rule 
> instead to avoid that—see the way it's done in preproc.l.
>
I see, thanks.



More information about the wine-devel mailing list