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 */
 | 
			
		||||
\#[^\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…
	
	Add table
		Add a link
		
	
		Reference in a new issue