Fix comments parsing
Fixed the parsing of multiline strings ending with an even number of stars, like /** this **/. Added test cases for comments.
This commit is contained in:
parent
dd77f7d593
commit
a5e761dddb
|
@ -189,7 +189,7 @@ or { return OR_KW; }
|
|||
|
||||
[ \t\r\n]+ /* eat up whitespace */
|
||||
\#[^\r\n]* /* single-line comments */
|
||||
\/\*([^*]|\*[^\/])*\*\/ /* long comments */
|
||||
\/\*([^*]|\*+[^*/])*\*+\/ /* long comments */
|
||||
|
||||
. return yytext[0];
|
||||
|
||||
|
|
1
tests/lang/eval-okay-comments.exp
Normal file
1
tests/lang/eval-okay-comments.exp
Normal file
|
@ -0,0 +1 @@
|
|||
"abcdefghijklmnopqrstuvwxyz"
|
59
tests/lang/eval-okay-comments.nix
Normal file
59
tests/lang/eval-okay-comments.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
# A simple comment
|
||||
"a"+ # And another
|
||||
## A double comment
|
||||
"b"+ ## And another
|
||||
# Nested # comments #
|
||||
"c"+ # and # some # other #
|
||||
# An empty line, following here:
|
||||
|
||||
"d"+ # and a comment not starting the line !
|
||||
|
||||
"e"+
|
||||
/* multiline comments */
|
||||
"f" +
|
||||
/* multiline
|
||||
comments,
|
||||
on
|
||||
multiple
|
||||
lines
|
||||
*/
|
||||
"g" +
|
||||
# Small, tricky comments
|
||||
/**/ "h"+ /*/*/ "i"+ /***/ "j"+ /* /*/ "k"+ /*/* /*/ "l"+
|
||||
# Comments with an even number of ending '*' used to fail:
|
||||
"m"+
|
||||
/* */ /* **/ /* ***/ /* ****/ "n"+
|
||||
/* */ /** */ /*** */ /**** */ "o"+
|
||||
/** **/ /*** ***/ /**** ****/ "p"+
|
||||
/* * ** *** **** ***** */ "q"+
|
||||
# Random comments
|
||||
/* ***** ////// * / * / /* */ "r"+
|
||||
# Mixed comments
|
||||
/* # */
|
||||
"s"+
|
||||
# /* #
|
||||
"t"+
|
||||
# /* # */
|
||||
"u"+
|
||||
# /*********/
|
||||
"v"+
|
||||
## */*
|
||||
"w"+
|
||||
/*
|
||||
* Multiline, decorated comments
|
||||
* # This ain't a nest'd comm'nt
|
||||
*/
|
||||
"x"+
|
||||
''${/** with **/"y"
|
||||
# real
|
||||
/* comments
|
||||
inside ! # */
|
||||
|
||||
# (and empty lines)
|
||||
|
||||
}''+ /* And a multiline comment,
|
||||
on the same line,
|
||||
after some spaces
|
||||
*/ # followed by a one-line comment
|
||||
"z"
|
||||
/* EOF */
|
Loading…
Reference in a new issue