コード例 #1
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseParens(self):
     # Wide parens.
     self.assertEqual(
         ParseExprFromStr('(老王)')[0], ParenExpr(VariableExpr('老王')))
     # Narrow parens.
     self.assertEqual(
         ParseExprFromStr('(老王)')[0], ParenExpr(VariableExpr('老王')))
コード例 #2
0
 def testParseInteger(self):
     self.assertEqual(
         ParseExprFromStr('5')[0], LiteralExpr(Token(TK_INTEGER_LITERAL,
                                                     5)))
     self.assertEqual(
         ParseExprFromStr('九')[0], LiteralExpr(Token(TK_INTEGER_LITERAL,
                                                     9)))
コード例 #3
0
 def testParseComparisonExpr(self):
     self.assertEqual(
         ParseExprFromStr('5比6大')[0],
         ComparisonExpr(LiteralExpr(Token(TK_INTEGER_LITERAL, 5)),
                        Keyword('大'),
                        LiteralExpr(Token(TK_INTEGER_LITERAL, 6))))
     self.assertEqual(
         ParseExprFromStr('老王加5比6小')[0],
         ComparisonExpr(
             ArithmeticExpr(VariableExpr(Token(TK_IDENTIFIER, '老王')),
                            Keyword('加'),
                            LiteralExpr(Token(TK_INTEGER_LITERAL, 5))),
             Keyword('小'), LiteralExpr(Token(TK_INTEGER_LITERAL, 6))))
     self.assertEqual(
         ParseExprFromStr('老王跟老刘一样一样的')[0],
         ComparisonExpr(VariableExpr(Token(TK_IDENTIFIER, '老王')),
                        Keyword('一样一样的'),
                        VariableExpr(Token(TK_IDENTIFIER, '老刘'))))
     self.assertEqual(
         ParseExprFromStr('老王加5跟6不是一样一样的')[0],
         ComparisonExpr(
             ArithmeticExpr(VariableExpr(Token(TK_IDENTIFIER, '老王')),
                            Keyword('加'),
                            LiteralExpr(Token(TK_INTEGER_LITERAL, 5))),
             Keyword('不是一样一样的'), LiteralExpr(Token(TK_INTEGER_LITERAL, 6))))
コード例 #4
0
 def testParseComparisonExpr(self):
   self.assertEqual(ParseExprFromStr('5比6大')[0],
                    ComparisonExpr(
                        IntegerLiteralExpr(5),
                        Keyword('大'),
                        IntegerLiteralExpr(6)
                    ))
   self.assertEqual(ParseExprFromStr('老王加5比6小')[0],
                    ComparisonExpr(
                        ArithmeticExpr(
                            VariableExpr('老王'),
                            Keyword('加'),
                            IntegerLiteralExpr(5)),
                        Keyword('小'),
                        IntegerLiteralExpr(6)
                    ))
   self.assertEqual(ParseExprFromStr('老王跟老刘一样一样的')[0],
                    ComparisonExpr(
                        VariableExpr('老王'),
                        Keyword('一样一样的'),
                        VariableExpr('老刘')
                    ))
   self.assertEqual(ParseExprFromStr('老王加5跟6不是一样一样的')[0],
                    ComparisonExpr(
                        ArithmeticExpr(
                            VariableExpr('老王'),
                            Keyword('加'),
                            IntegerLiteralExpr(5)),
                        Keyword('不是一样一样的'),
                        IntegerLiteralExpr(6)
                    ))
コード例 #5
0
 def testParseArithmeticExpr(self):
   self.assertEqual(ParseExprFromStr('5加六')[0],
                    ArithmeticExpr(
                        IntegerLiteralExpr(5),
                        Keyword('加'),
                        IntegerLiteralExpr(6)
                    ))
   self.assertEqual(ParseExprFromStr('5加六乘3')[0],
                    ArithmeticExpr(
                        IntegerLiteralExpr(5),
                        Keyword('加'),
                        ArithmeticExpr(
                            IntegerLiteralExpr(6),
                            Keyword('乘'),
                            IntegerLiteralExpr(3))))
   self.assertEqual(ParseExprFromStr('5减六减老王')[0],
                    ArithmeticExpr(
                        ArithmeticExpr(
                            IntegerLiteralExpr(5),
                            Keyword('减'),
                            IntegerLiteralExpr(6)
                        ),
                        Keyword('减'),
                        VariableExpr('老王'))
                    )
コード例 #6
0
ファイル: dongbei_test.py プロジェクト: Adicgd/dongbei
 def testParseArithmeticExpr(self):
   self.assertEqual(ParseExprFromStr(u'5加六')[0],
                    ArithmeticExpr(
                        LiteralExpr(Token(TK_INTEGER_LITERAL, 5)),
                        Keyword(u'加'),
                        LiteralExpr(Token(TK_INTEGER_LITERAL, 6))
                    ))
   self.assertEqual(ParseExprFromStr(u'5加六乘3')[0],
                    ArithmeticExpr(
                        LiteralExpr(Token(TK_INTEGER_LITERAL, 5)),
                        Keyword(u'加'),
                        ArithmeticExpr(
                            LiteralExpr(Token(TK_INTEGER_LITERAL, 6)),
                            Keyword(u'乘'),
                            LiteralExpr(Token(TK_INTEGER_LITERAL, 3)))))
   self.assertEqual(ParseExprFromStr(u'5减六减老王')[0],
                    ArithmeticExpr(
                        ArithmeticExpr(
                            LiteralExpr(Token(TK_INTEGER_LITERAL, 5)),
                            Keyword(u'减'),
                            LiteralExpr(Token(TK_INTEGER_LITERAL, 6))
                        ),
                        Keyword(u'减'),
                        VariableExpr(Token(TK_IDENTIFIER, u'老王')))
                    )
コード例 #7
0
ファイル: dongbei_test.py プロジェクト: huoxingdawang/dongbei
 def testParseParens(self):
     # Wide parens.
     self.assertEqual(
         ParseExprFromStr(u'(老王)')[0],
         ParenExpr(VariableExpr(Token(TK_IDENTIFIER, u'老王'))))
     # Narrow parens.
     self.assertEqual(
         ParseExprFromStr(u'(老王)')[0],
         ParenExpr(VariableExpr(Token(TK_IDENTIFIER, u'老王'))))
コード例 #8
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseTermExpr(self):
     self.assertEqual(
         ParseExprFromStr('老王乘五')[0],
         ArithmeticExpr(VariableExpr('老王'), Keyword('乘'),
                        IntegerLiteralExpr(5)))
     self.assertEqual(
         ParseExprFromStr('五除以老王')[0],
         ArithmeticExpr(IntegerLiteralExpr(5), Keyword('除以'),
                        VariableExpr('老王')))
     self.assertEqual(
         ParseExprFromStr('五除以老王乘老刘')[0],
         ArithmeticExpr(
             ArithmeticExpr(IntegerLiteralExpr(5), Keyword('除以'),
                            VariableExpr('老王')), Keyword('乘'),
             VariableExpr('老刘')))
コード例 #9
0
 def testParseConcatExpr(self):
     self.assertEqual(
         ParseExprFromStr('老王、2')[0],
         ConcatExpr([
             VariableExpr(Token(TK_IDENTIFIER, '老王')),
             LiteralExpr(Token(TK_INTEGER_LITERAL, 2))
         ]))
コード例 #10
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseConcatExpr(self):
     self.assertEqual(
         ParseExprFromStr('老王加油、2、“哈”')[0],
         ConcatExpr([
             ArithmeticExpr(VariableExpr('老王'), Keyword('加'),
                            VariableExpr('油')),
             IntegerLiteralExpr(2),
             StringLiteralExpr('哈')
         ]))
コード例 #11
0
 def testParseTermExpr(self):
     self.assertEqual(
         ParseExprFromStr('老王乘五')[0],
         ArithmeticExpr(VariableExpr(Token(TK_IDENTIFIER, '老王')),
                        Keyword('乘'),
                        LiteralExpr(Token(TK_INTEGER_LITERAL, 5))))
     self.assertEqual(
         ParseExprFromStr('五除以老王')[0],
         ArithmeticExpr(LiteralExpr(Token(TK_INTEGER_LITERAL, 5)),
                        Keyword('除以'),
                        VariableExpr(Token(TK_IDENTIFIER, '老王'))))
     self.assertEqual(
         ParseExprFromStr('五除以老王乘老刘')[0],
         ArithmeticExpr(
             ArithmeticExpr(LiteralExpr(Token(TK_INTEGER_LITERAL, 5)),
                            Keyword('除以'),
                            VariableExpr(Token(TK_IDENTIFIER, '老王'))),
             Keyword('乘'), VariableExpr(Token(TK_IDENTIFIER, '老刘'))))
コード例 #12
0
 def testParseConcatExpr(self):
     self.assertEqual(
         ParseExprFromStr('老王加油、2、“哈”')[0],
         ConcatExpr([
             ArithmeticExpr(VariableExpr(Token(TK_IDENTIFIER, '老王')),
                            Keyword('加'),
                            VariableExpr(Token(TK_IDENTIFIER, '油'))),
             LiteralExpr(Token(TK_INTEGER_LITERAL, 2)),
             LiteralExpr(Token(TK_STRING_LITERAL, '哈'))
         ]))
コード例 #13
0
 def testParseCallExpr(self):
     self.assertEqual(
         ParseExprFromStr('整老王')[0], CallExpr(Token(TK_IDENTIFIER, '老王'),
                                              []))
     self.assertEqual(
         ParseExprFromStr('整老王(5)')[0],
         CallExpr(Token(TK_IDENTIFIER, '老王'),
                  [LiteralExpr(Token(TK_INTEGER_LITERAL, 5))]))
     self.assertEqual(
         ParseExprFromStr('整老王(6)')[0],
         CallExpr(Token(TK_IDENTIFIER, '老王'),
                  [LiteralExpr(Token(TK_INTEGER_LITERAL, 6))]))
     self.assertEqual(
         ParseExprFromStr('整老王(老刘,6)')[0],
         CallExpr(Token(TK_IDENTIFIER, '老王'), [
             VariableExpr(Token(TK_IDENTIFIER, '老刘')),
             LiteralExpr(Token(TK_INTEGER_LITERAL, 6))
         ]))
     self.assertEqual(
         ParseExprFromStr('整老王(“你”,老刘,6)')[0],
         CallExpr(Token(TK_IDENTIFIER, '老王'), [
             LiteralExpr(Token(TK_STRING_LITERAL, '你')),
             VariableExpr(Token(TK_IDENTIFIER, '老刘')),
             LiteralExpr(Token(TK_INTEGER_LITERAL, 6))
         ]))
     self.assertEqual(
         ParseExprFromStr('整老王(“你”,老刘,6)')[0],
         CallExpr(Token(TK_IDENTIFIER, '老王'), [
             LiteralExpr(Token(TK_STRING_LITERAL, '你')),
             VariableExpr(Token(TK_IDENTIFIER, '老刘')),
             LiteralExpr(Token(TK_INTEGER_LITERAL, 6))
         ]))
コード例 #14
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseCallExpr(self):
     self.assertEqual(ParseExprFromStr('整老王')[0], CallExpr('老王', []))
     self.assertEqual(
         ParseExprFromStr('整老王(5)')[0],
         CallExpr('老王', [IntegerLiteralExpr(5)]))
     self.assertEqual(
         ParseExprFromStr('整老王(6)')[0],
         CallExpr('老王', [IntegerLiteralExpr(6)]))
     self.assertEqual(
         ParseExprFromStr('整老王(老刘,6)')[0],
         CallExpr(
             '老王',
             [VariableExpr('老刘'), IntegerLiteralExpr(6)]))
     self.assertEqual(
         ParseExprFromStr('整老王(“你”,老刘,6)')[0],
         CallExpr('老王', [
             StringLiteralExpr('你'),
             VariableExpr('老刘'),
             IntegerLiteralExpr(6)
         ]))
     self.assertEqual(
         ParseExprFromStr('整老王(“你”,老刘,6)')[0],
         CallExpr('老王', [
             StringLiteralExpr('你'),
             VariableExpr('老刘'),
             IntegerLiteralExpr(6)
         ]))
コード例 #15
0
 def testParseIdentifier(self):
     self.assertEqual(
         ParseExprFromStr('老王')[0], VariableExpr(Token(TK_IDENTIFIER,
                                                       '老王')))
コード例 #16
0
 def testParseStringLiteral(self):
     self.assertEqual(
         ParseExprFromStr('“ 哈  哈   ”')[0],
         LiteralExpr(Token(TK_STRING_LITERAL, ' 哈  哈   ')))
コード例 #17
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseConcatExpr(self):
     self.assertEqual(
         ParseExprFromStr('老王、2')[0],
         ConcatExpr([VariableExpr('老王'),
                     IntegerLiteralExpr(2)]))
コード例 #18
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseInteger(self):
     self.assertEqual(ParseExprFromStr('5')[0], IntegerLiteralExpr(5))
     self.assertEqual(ParseExprFromStr('九')[0], IntegerLiteralExpr(9))
コード例 #19
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseStringLiteral(self):
     self.assertEqual(
         ParseExprFromStr('“ 哈  哈   ”')[0], StringLiteralExpr(' 哈  哈   '))
コード例 #20
0
ファイル: dongbei_test.py プロジェクト: ruizewang/dongbei
 def testParseIdentifier(self):
     self.assertEqual(ParseExprFromStr('老王')[0], VariableExpr('老王'))