...................... ---------------------------------------------------------------------- Ran 22 tests in 0.006s OK 7 --- echo \" \\ hi` --- (Token id:Id.Backtick_Other span_id:0 val:'echo ') (Token id:Id.Backtick_Quoted span_id:1 val:'\\"') (Token id:Id.Backtick_Other span_id:2 val:' ') (Token id:Id.Backtick_Quoted span_id:3 val:'\\\\') (Token id:Id.Backtick_Other span_id:4 val:' hi') (Token id:Id.Backtick_Right span_id:5 val:'`') (Token id:Id.Eof_Real span_id:6 val:'') --- ` --- (Token id:Id.Backtick_Right span_id:0 val:'`') (Token id:Id.Eof_Real span_id:1 val:'') --- --- (Token id:Id.Eof_Real span_id:0 val:'') (Token id:Id.Char_Literals span_id:0 val:'foo bar') (Token id:Id.Char_OneChar span_id:1 val:'\\n') --- @[ ] --- (Token id:Id.Expr_Reserved span_id:0 val:'@[') (Token id:Id.Ignored_Space span_id:1 val:_) (Token id:Id.Op_RBracket span_id:2 val:_) (Token id:Id.Eof_Real span_id:3 val:'') --- hello %s\n --- (Token id:Id.Char_Literals span_id:0 val:'hello ') (Token id:Id.Format_Percent span_id:1 val:'%') (Token id:Id.Char_Literals span_id:2 val:s) (Token id:Id.Char_OneChar span_id:3 val:'\\n') (Token id:Id.Eof_Real span_id:4 val:'') --- %% percent %%\377 --- (Token id:Id.Format_EscapedPercent span_id:0 val:'%%') (Token id:Id.Char_Literals span_id:1 val:' percent ') (Token id:Id.Format_EscapedPercent span_id:2 val:'%%') (Token id:Id.Char_Octal3 span_id:3 val:'\\377') (Token id:Id.Eof_Real span_id:4 val:'') --- -3.3f --- (Token id:Id.Format_Flag span_id:0 val:-) (Token id:Id.Format_Num span_id:1 val:3) (Token id:Id.Format_Dot span_id:2 val:.) (Token id:Id.Format_Num span_id:3 val:3) (Token id:Id.Format_Type span_id:4 val:f) (Token id:Id.Eof_Real span_id:5 val:'') --- 03d --- (Token id:Id.Format_Zero span_id:0 val:0) (Token id:Id.Format_Num span_id:1 val:3) (Token id:Id.Format_Type span_id:2 val:d) (Token id:Id.Eof_Real span_id:3 val:'') (Token id:Id.Left_SingleQuote span_id:0 val:'\'') [(329, 'a'), (330, '..'), (329, 'z')] [(328, '100'), (330, '..'), (328, '300')] [(328, '-300'), (330, '..'), (328, '-100'), (330, '..'), (328, '1')] [(328, '1'), (331, '.'), (328, '3')] [(329, 'a'), (329, 'a')] [(167, 'newline '), (158, '\\n'), (167, ' NUL '), (158, '\\0'), (167, ' octal '), (162, '\\0377'), (167, ' hex '), (160, '\\x00')] [(167, 'unicode '), (163, '\\u0065'), (167, ' '), (164, '\\U00000065')] [(50, '\\'), (167, 'd '), (158, '\\e'), (167, ' '), (158, '\\f'), (167, ' '), (50, '\\'), (167, 'g')] [(93, '['), (93, '!'), (93, 'abc]')] [(93, '${'), (93, '!'), (93, 'indirect}')] [(93, '$'), (93, '!'), (93, 'x')] [(93, '!'), (93, '(foo|bar)')] [(93, 'echo hi')] [(93, 'echo '), (90, '!!'), (93, ' '), (90, '!*'), (93, ' '), (90, '!^'), (93, ' '), (90, '!$')] [(93, 'echo '), (93, '\\!'), (93, '!')] [(93, 'echo '), (91, '!3'), (93, '...')] [(93, 'echo '), (91, '!-5'), (93, '...')] [(93, 'echo '), (92, '!x/foo.py '), (93, 'bar')] --- [(93, 'echo '), (93, "'!!'"), (93, ' $'), (93, "'!!'"), (93, ' ')] [(93, 'echo '), (93, "'!! ")] [(93, 'echo '), (93, "\\'"), (93, ' '), (90, '!!'), (93, ' ')] [(326, 'foo')] [(322, '\\h'), (326, ' '), (322, '\\w'), (326, ' '), (322, '\\$')] P '[^\\\\\\0]+'