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
3 changed files with 61 additions and 1 deletions
|
@ -189,7 +189,7 @@ or { return OR_KW; }
|
||||||
|
|
||||||
[ \t\r\n]+ /* eat up whitespace */
|
[ \t\r\n]+ /* eat up whitespace */
|
||||||
\#[^\r\n]* /* single-line comments */
|
\#[^\r\n]* /* single-line comments */
|
||||||
\/\*([^*]|\*[^\/])*\*\/ /* long comments */
|
\/\*([^*]|\*+[^*/])*\*+\/ /* long comments */
|
||||||
|
|
||||||
. return yytext[0];
|
. 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