diff --git a/src/Language/SystemVerilog/Parser/Preprocess.hs b/src/Language/SystemVerilog/Parser/Preprocess.hs index 6f607dc..1b2de99 100644 --- a/src/Language/SystemVerilog/Parser/Preprocess.hs +++ b/src/Language/SystemVerilog/Parser/Preprocess.hs @@ -546,6 +546,10 @@ preprocessInput = do '/' : '*' : _ -> removeThrough "*/" '`' : '"' : _ -> handleBacktickString '"' : _ -> handleString + '/' : '`' : '`' : '*' : _ -> + if null macroStack + then consume + else removeThrough "*``/" '`' : '`' : _ -> do if null macroStack then do diff --git a/test/error/stray_escaped_vendor_comment.sv b/test/error/stray_escaped_vendor_comment.sv new file mode 100644 index 0000000..014d755 --- /dev/null +++ b/test/error/stray_escaped_vendor_comment.sv @@ -0,0 +1,4 @@ +// pattern: Parse error +module top; + /``* some awful garbage *``/ +endmodule diff --git a/test/lex/macro_vendor_comment.sv b/test/lex/macro_vendor_comment.sv new file mode 100644 index 0000000..9e77d7e --- /dev/null +++ b/test/lex/macro_vendor_comment.sv @@ -0,0 +1,4 @@ +`define YUCK /``* some awful garbage *``/ +module top; + `YUCK +endmodule