...................... ---------------------------------------------------------------------- Ran 22 tests in 0.003s 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.Left_AtBracket 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_Flag 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_SingleQuoteRaw span_id:0 val:"'") [(293, 'a'), (294, '..'), (293, 'z')] [(292, '100'), (294, '..'), (292, '300')] [(292, '-300'), (294, '..'), (292, '-100'), (294, '..'), (292, '1')] [(292, '1'), (295, '.'), (292, '3')] [(293, 'a'), (293, 'a')] [(146, 'newline '), (139, '\\n'), (146, ' NUL '), (139, '\\0'), (146, ' octal '), (143, '\\0377'), (146, ' hex '), (141, '\\x00')] [(146, 'unicode '), (144, '\\u0065'), (146, ' '), (145, '\\U00000065')] [(147, '\\'), (146, 'd '), (139, '\\e'), (146, ' '), (139, '\\f'), (146, ' '), (147, '\\'), (146, 'g')] [(86, '['), (86, '!'), (86, 'abc]')] [(86, '${'), (86, '!'), (86, 'indirect}')] [(86, '$'), (86, '!'), (86, 'x')] [(86, '!'), (86, '(foo|bar)')] [(86, 'echo hi')] [(86, 'echo '), (83, '!!'), (86, ' '), (83, '!*'), (86, ' '), (83, '!^'), (86, ' '), (83, '!$')] [(86, 'echo '), (86, '\\!'), (86, '!')] [(86, 'echo '), (84, '!3'), (86, '...')] [(86, 'echo '), (84, '!-5'), (86, '...')] [(86, 'echo '), (85, '!x/foo.py '), (86, 'bar')] --- [(86, 'echo '), (86, "'!!'"), (86, ' $'), (86, "'!!'"), (86, ' ')] [(86, 'echo '), (86, "'!! ")] [(86, 'echo '), (86, "\\'"), (86, ' '), (83, '!!'), (86, ' ')] [(290, 'foo')] [(286, '\\h'), (290, ' '), (286, '\\w'), (290, ' '), (286, '\\$')] P '[^\\\\\\0]+'