vkd3d-shader/preproc: Allow capital U and L after integer constants as well.

Technically we shouldn't allow "uu" or "ll" either, but we also don't really
handle preprocessor parsing errors the way we should.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-02-02 13:46:16 +01:00 committed by Alexandre Julliard
parent 4e36c1825d
commit 13a1ba4263
2 changed files with 37 additions and 3 deletions

View File

@ -57,6 +57,7 @@ static void update_location(struct preproc_ctx *ctx);
NEWLINE \r?\n NEWLINE \r?\n
WS [ \t] WS [ \t]
IDENTIFIER [A-Za-z_][A-Za-z0-9_]* IDENTIFIER [A-Za-z_][A-Za-z0-9_]*
INT_SUFFIX [uUlL]{0,2}
%% %%
@ -92,9 +93,9 @@ IDENTIFIER [A-Za-z_][A-Za-z0-9_]*
<INITIAL>[0-9]+\.([eE][+-]?[0-9]+)?[hHfF]? {return T_TEXT;} <INITIAL>[0-9]+\.([eE][+-]?[0-9]+)?[hHfF]? {return T_TEXT;}
<INITIAL>[0-9]+([eE][+-]?[0-9]+)?[hHfF] {return T_TEXT;} <INITIAL>[0-9]+([eE][+-]?[0-9]+)?[hHfF] {return T_TEXT;}
<INITIAL>[0-9]+[eE][+-]?[0-9]+ {return T_TEXT;} <INITIAL>[0-9]+[eE][+-]?[0-9]+ {return T_TEXT;}
<INITIAL,LINE>0[xX][0-9a-fA-f]+[ul]{0,2} {return T_INTEGER;} <INITIAL,LINE>0[xX][0-9a-fA-f]+{INT_SUFFIX} {return T_INTEGER;}
<INITIAL,LINE>0[0-7]*[ul]{0,2} {return T_INTEGER;} <INITIAL,LINE>0[0-7]*{INT_SUFFIX} {return T_INTEGER;}
<INITIAL,LINE>[1-9][0-9]*[ul]{0,2} {return T_INTEGER;} <INITIAL,LINE>[1-9][0-9]*{INT_SUFFIX} {return T_INTEGER;}
<INITIAL>## {return T_CONCAT;} <INITIAL>## {return T_CONCAT;}

View File

@ -99,6 +99,39 @@ pass
pass pass
#endif #endif
[preproc]
#if 2u == 2
pass
#else
fail
#endif
[preproc]
#if 2l == 2
pass
#else
fail
#endif
[preproc]
#if 2Ul == 2
pass
#else
fail
#endif
[preproc]
#if 2uL == 2
pass
#else
fail
#endif
[preproc]
#if 012lu == 10
pass
#endif
[preproc] [preproc]
/* All math is done using unsigned 32-bit integers. */ /* All math is done using unsigned 32-bit integers. */
#if 8 / -3 == 2 #if 8 / -3 == 2