diff --git a/source/src/BNFC/Backend/C/CFtoFlexC.hs b/source/src/BNFC/Backend/C/CFtoFlexC.hs index f5b3da89..333812e2 100644 --- a/source/src/BNFC/Backend/C/CFtoFlexC.hs +++ b/source/src/BNFC/Backend/C/CFtoFlexC.hs @@ -284,7 +284,7 @@ lexChars yylval charToken = -- delimiters. -- -- >>> lexComments ([("{-","-}")],["--"]) --- "--"[^\n]* /* skip */; /* BNFC: comment "--" */ +-- "--"[^\n\r]* /* skip */; /* BNFC: comment "--" */ -- "{-" BEGIN COMMENT; /* BNFC: block comment "{-" "-}" */ -- "-}" BEGIN INITIAL; -- . /* skip */; @@ -305,13 +305,13 @@ commentStates = map ("COMMENT" ++) $ "" : map show [1..] -- comment. -- -- >>> lexSingleComment "--" --- "--"[^\n]* /* skip */; /* BNFC: comment "--" */ +-- "--"[^\n\r]* /* skip */; /* BNFC: comment "--" */ -- -- >>> lexSingleComment "\"" --- "\""[^\n]* /* skip */; /* BNFC: comment "\"" */ +-- "\""[^\n\r]* /* skip */; /* BNFC: comment "\"" */ lexSingleComment :: String -> Doc lexSingleComment c = - "" <> cstring c <> "[^\\n]*" + "" <> cstring c <> "[^\\n\\r]*" <+> "/* skip */;" <+> unless (containsCCommentMarker c) ("/* BNFC: comment" <+> cstring c <+> "*/") diff --git a/source/src/BNFC/Backend/OCaml/CFtoOCamlLex.hs b/source/src/BNFC/Backend/OCaml/CFtoOCamlLex.hs index cc39b68b..eabb3dca 100644 --- a/source/src/BNFC/Backend/OCaml/CFtoOCamlLex.hs +++ b/source/src/BNFC/Backend/OCaml/CFtoOCamlLex.hs @@ -153,11 +153,11 @@ mkRule entrypoint (r:rs) = vcat -- | Create regex for single line comments -- >>> mkRegexSingleLineComment "--" --- "--" (_ # '\n')* +-- "--" [^ '\n' '\r']* -- >>> mkRegexSingleLineComment "\"" --- "\"" (_ # '\n')* +-- "\"" [^ '\n' '\r']* mkRegexSingleLineComment :: String -> Doc -mkRegexSingleLineComment s = cstring s <+> "(_ # '\\n')*" +mkRegexSingleLineComment s = cstring s <+> "[^ '\\n' '\\r']*" -- | Create regex for multiline comments. -- >>> mkRegexMultilineComment ""