Пример #1
0
def test_parse_for():
    assert_parses('for x = 0, x < 10, 1 in x',
                  ast.ForExpr('x',
                              ast.NumberExpr(0.0),
                              ast.BinaryExpr('<',
                                             ast.VariableExpr('x'),
                                             ast.NumberExpr(10.0)),
                              ast.NumberExpr(1.0),
                              ast.VariableExpr('x')))
Пример #2
0
def test_parse_prec():
    assert_parses('v * w < x + y * z',
                  ast.BinaryExpr('<',
                                 ast.BinaryExpr('*', ast.VariableExpr('v'), ast.VariableExpr('w')),
                                 ast.BinaryExpr('+',
                                                ast.VariableExpr('x'),
                                                ast.BinaryExpr('*',
                                                               ast.VariableExpr('y'),
                                                               ast.VariableExpr('z')))))
Пример #3
0
    def visit_BinaryExpr(self, expr):
        if expr.op not in builtin_ops:
            return ast.CallExpr(ast.VariableExpr('binary{}'.format(expr.op)),
                                [self.visit(expr.lhs),
                                 self.visit(expr.rhs)])

        return super().visit_BinaryExpr(expr)
Пример #4
0
def test_parse_var():
    assert_parses('xyz', ast.VariableExpr('xyz'))
Пример #5
0
def test_parse_multi_def():
    assert_parses('def f() a + b; def g() c',
                  ast.Function(ast.Prototype('f', []),
                               ast.BinaryExpr('+', ast.VariableExpr('a'), ast.VariableExpr('b'))),
                  ast.Function(ast.Prototype('g', []), ast.VariableExpr('c')))
Пример #6
0
def test_parse_binop():
    assert_parses('x + y', ast.BinaryExpr('+', ast.VariableExpr('x'), ast.VariableExpr('y')))