Zebediah Figura : vkd3d-shader: Parse comments in the preprocessor.

Alexandre Julliard julliard at winehq.org
Wed Dec 9 15:38:51 CST 2020


Module: vkd3d
Branch: master
Commit: 741c33265895e03457b8b9f651f3c6592a1104cd
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=741c33265895e03457b8b9f651f3c6592a1104cd

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Mon Dec  7 12:56:31 2020 -0600

vkd3d-shader: Parse comments in the preprocessor.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d-shader/preproc.l | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/libs/vkd3d-shader/preproc.l b/libs/vkd3d-shader/preproc.l
index 656ad67..89a4f60 100644
--- a/libs/vkd3d-shader/preproc.l
+++ b/libs/vkd3d-shader/preproc.l
@@ -36,16 +36,33 @@
 %option never-interactive
 %option noinput
 %option nounput
+%option noyy_top_state
 %option noyywrap
 %option prefix="preproc_yy"
 %option reentrant
+%option stack
+
+    /* Because these can both be terminated by EOF, we need states for them. */
+%s C_COMMENT
+%s CXX_COMMENT
 
 WS              [ \t]
 
 %%
 
-{WS}+                               {}
-.                                   {return T_TEXT;}
+<INITIAL>"//"                       {yy_push_state(CXX_COMMENT, yyscanner);}
+<INITIAL>"/*"                       {yy_push_state(C_COMMENT, yyscanner);}
+<CXX_COMMENT>\\\r?\n                {}
+<CXX_COMMENT>\n                     {
+        yy_pop_state(yyscanner);
+        return T_TEXT;
+    }
+<C_COMMENT>"*/"                     {yy_pop_state(yyscanner);}
+<C_COMMENT,CXX_COMMENT><<EOF>>      {yy_pop_state(yyscanner);}
+<C_COMMENT,CXX_COMMENT>.            {}
+
+<INITIAL>{WS}+                      {}
+<INITIAL>.                          {return T_TEXT;}
 
 %%
 




More information about the wine-cvs mailing list