RegExp fix for javascript tokenizer
							parent
							
								
									acb6d3a312
								
							
						
					
					
						commit
						4394cb08f6
					
				| 
						 | 
				
			
			@ -21,3 +21,7 @@ IN: peg.javascript.tokenizer.tests
 | 
			
		|||
} [
 | 
			
		||||
  "123; 'hello'; foo(x);" tokenize-javascript ast>>
 | 
			
		||||
] unit-test
 | 
			
		||||
 | 
			
		||||
{ V{ T{ ast-regexp f "<(w+)[^>]*?)/>" "g" } } } [
 | 
			
		||||
  "/<(\\w+)[^>]*?)\\/>/g" tokenize-javascript ast>>
 | 
			
		||||
] unit-test
 | 
			
		||||
| 
						 | 
				
			
			@ -57,15 +57,15 @@ StringChars3       = (EscapeChar | !("'") .)* => [[ >string ]]
 | 
			
		|||
Str                =   '"""' StringChars1:cs '"""' => [[ cs ast-string boa ]]
 | 
			
		||||
                     | '"' StringChars2:cs '"' => [[ cs ast-string boa ]]
 | 
			
		||||
                     | "'" StringChars3:cs "'" => [[ cs ast-string boa ]]
 | 
			
		||||
RegExpFlags        = NameRest*
 | 
			
		||||
RegExpFlags        = NameRest* => [[ >string ]]
 | 
			
		||||
NonTerminator      = !("\n" | "\r") .
 | 
			
		||||
BackslashSequence  = "\\" NonTerminator
 | 
			
		||||
BackslashSequence  = "\\" NonTerminator => [[ second ]]
 | 
			
		||||
RegExpFirstChar    =   !("*" | "\\" | "/") NonTerminator
 | 
			
		||||
                     | BackslashSequence
 | 
			
		||||
RegExpChar         =   !("\\" | "/") NonTerminator
 | 
			
		||||
                     | BackslashSequence
 | 
			
		||||
RegExpChars        = RegExpChar*
 | 
			
		||||
RegExpBody         = RegExpFirstChar RegExpChars
 | 
			
		||||
RegExpBody         = RegExpFirstChar RegExpChars => [[ first2 swap prefix >string ]]
 | 
			
		||||
RegExp             = "/" RegExpBody:b "/" RegExpFlags:fl => [[ b fl ast-regexp boa ]]
 | 
			
		||||
Special            =   "("   | ")"   | "{"   | "}"   | "["   | "]"   | ","   | ";"
 | 
			
		||||
                     | "?"   | ":"   | "!==" | "!="  | "===" | "=="  | "="   | ">="
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue