def testTokenizingDecrements(self):
     self.assertEqual(list(Tokenize('阿庆混腔势')), [
         IdentifierToken('阿庆'),
         Keyword('混腔势'),
     ])
     self.assertEqual(list(Tokenize('阿庆混三趟')), [
         IdentifierToken('阿庆'),
         Keyword('混'),
         Token(TK_INTEGER_LITERAL, 3),
         Keyword('趟'),
     ])
 def testTokenizingIncrements(self):
     self.assertEqual(list(Tokenize('阿庆扎台型')), [
         IdentifierToken('阿庆'),
         Keyword('扎台型'),
     ])
     self.assertEqual(list(Tokenize('阿庆扎两趟')), [
         IdentifierToken('阿庆'),
         Keyword('扎'),
         Token(TK_INTEGER_LITERAL, 2),
         Keyword('趟'),
     ])
 def testTokenizingFuncDef(self):
     self.assertEqual(list(Tokenize('写九九表哪能组:组好了。')), [
         IdentifierToken('写九九表'),
         Keyword('哪能组:'),
         Keyword('组好了'),
         Keyword('。'),
     ])
 def testTokenizeCompound(self):
     self.assertEqual(list(Tokenize('一道组特:\n  嘎讪胡:阿庆。\n组好了。')), [
         Keyword('一道组特:'),
         Keyword('嘎讪胡'),
         Keyword(':'),
         IdentifierToken('阿庆'),
         Keyword('。'),
         Keyword('组好了'),
         Keyword('。'),
     ])
 def testTokenizeLoop(self):
     self.assertEqual(list(Tokenize('阿庆从1到9搞七捻三:搞好了。')), [
         IdentifierToken('阿庆'),
         Keyword('从'),
         Token(TK_INTEGER_LITERAL, 1),
         Keyword('到'),
         Token(TK_INTEGER_LITERAL, 9),
         Keyword('搞七捻三:'),
         Keyword('搞好了'),
         Keyword('。'),
     ])
 def testTokenizeArithmetic(self):
     self.assertEqual(list(Tokenize('250加13减二乘五除以九')), [
         Token(TK_INTEGER_LITERAL, 250),
         Keyword('加'),
         Token(TK_INTEGER_LITERAL, 13),
         Keyword('减'),
         Token(TK_INTEGER_LITERAL, 2),
         Keyword('乘'),
         Token(TK_INTEGER_LITERAL, 5),
         Keyword('除以'),
         Token(TK_INTEGER_LITERAL, 9),
     ])
 def testTokenizingFuncCall(self):
     self.assertEqual(list(Tokenize('白相写九九表')), [
         Keyword('白相'),
         IdentifierToken('写九九表'),
     ])
 def testTokenizingConcat(self):
     self.assertEqual(list(Tokenize('阿德、二')), [
         IdentifierToken('阿德'),
         Keyword('、'),
         Token(TK_INTEGER_LITERAL, 2),
     ])
 def testTokenize(self):
     self.assertEqual(list(BasicTokenize('【阶乘】')), [
         IdentifierToken('阶乘'),
     ])
     self.assertEqual(list(BasicTokenize('【 阶  乘   】')), [
         IdentifierToken('阶乘'),
     ])
     self.assertEqual(list(BasicTokenize('【阶乘】(那啥)')), [
         IdentifierToken('阶乘'),
         Keyword('('),
         Token(TK_CHAR, '那'),
         Token(TK_CHAR, '啥'),
         Keyword(')'),
     ])
     self.assertEqual(list(BasicTokenize('“ ”')), [
         Keyword('“'),
         Token(TK_STRING_LITERAL, ' '),
         Keyword('”'),
     ])
     self.assertEqual(list(BasicTokenize('“”')), [
         Keyword('“'),
         Token(TK_STRING_LITERAL, ''),
         Keyword('”'),
     ])
     self.assertEqual(list(BasicTokenize('“ A B ”')), [
         Keyword('“'),
         Token(TK_STRING_LITERAL, ' A B '),
         Keyword('”'),
     ])
     self.assertEqual(list(BasicTokenize('阿德')), [
         Token(TK_CHAR, '阿'),
         Token(TK_CHAR, '德'),
     ])
     self.assertEqual(list(BasicTokenize('  阿 德   ')), [
         Token(TK_CHAR, '阿'),
         Token(TK_CHAR, '德'),
     ])
     self.assertEqual(list(Tokenize('# 123456\n阿德')),
                      [IdentifierToken('阿德')])
     self.assertEqual(list(Tokenize('阿德')), [IdentifierToken('阿德')])
     self.assertEqual(ParseInteger('阿德'), (None, '阿德'))
     self.assertEqual(list(ParseChars('阿德')), [IdentifierToken('阿德')])
     self.assertEqual(
         list(Tokenize('阿德是则赤佬')),
         [IdentifierToken('阿德'), Keyword('是则赤佬')])
     self.assertEqual(list(Tokenize('阿德是 则\n赤佬 。 ')), [
         IdentifierToken('阿德'),
         Keyword('是则赤佬'),
         Keyword('。'),
     ])
     self.assertEqual(list(Tokenize('阿德是则赤佬。\n阿庆是则赤佬。\n')), [
         IdentifierToken('阿德'),
         Keyword('是则赤佬'),
         Keyword('。'),
         IdentifierToken('阿庆'),
         Keyword('是则赤佬'),
         Keyword('。'),
     ])
     self.assertEqual(list(Tokenize('阿德毛估估是250。\n阿庆毛估估是阿德。\n')), [
         IdentifierToken('阿德'),
         Keyword('毛估估是'),
         Token(TK_INTEGER_LITERAL, 250),
         Keyword('。'),
         IdentifierToken('阿庆'),
         Keyword('毛估估是'),
         IdentifierToken('阿德'),
         Keyword('。')
     ])
     self.assertEqual(list(Tokenize('嘎讪胡:“你好”。')), [
         Keyword('嘎讪胡'),
         Keyword(':'),
         Keyword('“'),
         Token(TK_STRING_LITERAL, '你好'),
         Keyword('”'),
         Keyword('。')
     ])