rspivak / slimit

SlimIt - a JavaScript minifier/parser in Python
MIT License
550 stars 94 forks source link

Parser fails on strings with octal escape sequences #70

Open miszczu opened 10 years ago

miszczu commented 10 years ago

Parser fails on following string (notice double backslash): "var x = '\071[90m%s';"

parser = Parser() parser.parse("var x = '\071[90m%s';") Illegal character "'" at 1:8 after LexToken(EQ,'=',1,6) Illegal character '\' at 1:9 after LexToken(EQ,'=',1,6) Traceback (most recent call last): File "", line 1, in File "C:\Users\Karol\venv\lib\site-packages\slimit\parser.py", line 93, in parse return self.parser.parse(text, lexer=self.lexer, debug=debug) File "C:\Users\Karol\venv\lib\site-packages\ply\yacc.py", line 265, in parse return self.parseopt_notrack(input,lexer,debug,tracking,tokenfunc) File "C:\Users\Karol\venv\lib\site-packages\ply\yacc.py", line 1047, in parse opt_notracktok = self.errorfunc(errtoken) File "C:\Users\Karol\venv\lib\site-packages\slimit\parser.py", line 116, in p_error self._raise_syntax_error(token) File "C:\Users\Karol\venv\lib\site-packages\slimit\parser.py", line 89, in _raise_syntax_error self.lexer.prev_token, self.lexer.token()) SyntaxError: Unexpected token (ID, 'm') at 1:16 between LexToken(NUMBER,'90',1,14) and LexToken(MOD,'%',1,17)