diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-11-14T10·06+0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-14T10·06+0100 |
commit | b8d9616af141ff669c94308da3b40f8be824cc83 (patch) | |
tree | 58f947476eca68487bc924c420f6a94d5fa2baaa | |
parent | dd77f7d5931e500585b6539b52ef5a5f3b549a4e (diff) | |
parent | a5e761dddb6b090b233aebe29dc30ebfbc058dab (diff) |
Merge pull request #1129 from layus/fix-comments
Fix comments parsing
-rw-r--r-- | src/libexpr/lexer.l | 2 | ||||
-rw-r--r-- | tests/lang/eval-okay-comments.exp | 1 | ||||
-rw-r--r-- | tests/lang/eval-okay-comments.nix | 59 |
3 files changed, 61 insertions, 1 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index f3660ab43723..3ac7ce723cb3 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -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]; diff --git a/tests/lang/eval-okay-comments.exp b/tests/lang/eval-okay-comments.exp new file mode 100644 index 000000000000..7182dc2f9b8e --- /dev/null +++ b/tests/lang/eval-okay-comments.exp @@ -0,0 +1 @@ +"abcdefghijklmnopqrstuvwxyz" diff --git a/tests/lang/eval-okay-comments.nix b/tests/lang/eval-okay-comments.nix new file mode 100644 index 000000000000..cb2cce218029 --- /dev/null +++ b/tests/lang/eval-okay-comments.nix @@ -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 */ |