Fix multi-line comment regular expression to handle (non) nested comments.

Ken reminded me of a couple cases that I should be testing. These are
the non-nestedness of things that look like nested comments as well as
potentially tricky things like "/*/" and "/*/*/".

The (non) nested comment case was not working in the case of the
comment terminator with multiple '*' characters. We fix this by not
considering a '*' as the "non-slash" to terminate a sequence of '*'
characters within the comment. We also fix the final match of the
terminator to use '+' rather than '*' to require the presence of a
final '*' character in the comment terminator.
This commit is contained in:
Carl Worth
2010-06-02 10:48:47 -07:00
parent 2571415d1a
commit 4c22f4dba7
2 changed files with 6 additions and 1 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
}
/* Multi-line comments */
[/][*]([^*]*[*]+[^/])*[^*]*[*]*[/] {
[/][*]([^*]*[*]+[^*/])*[^*]*[*]+[/] {
if (yyextra->space_tokens)
return SPACE;
}
+5
View File
@@ -13,3 +13,8 @@ and slashes / *** /
and other stuff.
****/
more code here
/* Test that /* nested
comments */
are not treated like comments.
/*/ this is a comment */
/*/*/