diff --git a/src/macro/MacroFlex.ll b/src/macro/MacroFlex.ll index b33411c2c0d547766fd1349d7b53f3220bd47337..96905460a66d0357b2ec884d60bb790a30639045 100644 --- a/src/macro/MacroFlex.ll +++ b/src/macro/MacroFlex.ll @@ -41,6 +41,8 @@ using token = Macro::parser::token; Unfortunately yyterminate by default returns 0, which is not of token_type. */ #define yyterminate() return Macro::parser::token_type (0); + +int macro_comment_caller; %} %option c++ @@ -49,6 +51,7 @@ using token = Macro::parser::token; %option case-insensitive noyywrap nounput batch debug never-interactive +%x COMMENT %x STMT %x EXPR %x FOR_BODY @@ -74,6 +77,9 @@ CONT \\\\ // Ignore inline comments <INITIAL,STMT,EXPR,FOR_BODY,THEN_BODY,ELSE_BODY>%.* { yylloc->step(); ECHO; } <INITIAL,STMT,EXPR,FOR_BODY,THEN_BODY,ELSE_BODY>\/{2}.* { yylloc->step(); ECHO; } +<INITIAL,STMT,EXPR,FOR_BODY,THEN_BODY,ELSE_BODY>"/*" { ECHO; macro_comment_caller = YY_START; BEGIN COMMENT; } +<COMMENT>"*/" { BEGIN macro_comment_caller; ECHO; } +<COMMENT>. { yylloc->step(); ECHO; } <INITIAL>^{SPC}*@#{SPC}*includepath{SPC}+\"([^\"\r\n:;|<>]*){1}(:[^\"\r\n:;|<>]*)*\"{SPC}*{EOL} { yylloc->lines(1);