Exemplo n.º 1
0
 def test_expr_with_addition(self):
     lexer = Lexer('3 + 2')
     parser = Parser(lexer)
     result = parser.expr()
     expected = BinOp(left=Num(Token('INTEGER', 3)),
                      op=Token('ADD', '+'),
                      right=Num(Token('INTEGER', 2)))
     assert result == expected
Exemplo n.º 2
0
 def test_term_with_multiply(self):
     lexer = Lexer('3 * 2')
     parser = Parser(lexer)
     result = parser.term()
     expected = BinOp(left=Num(Token('INTEGER', 3)),
                      op=Token('MULTIPLY', '*'),
                      right=Num(Token('INTEGER', 2)))
     assert result == expected
Exemplo n.º 3
0
 def test_term_with_division(self):
     lexer = Lexer('3 / 2')
     parser = Parser(lexer)
     result = parser.term()
     expected = BinOp(left=Num(Token('INTEGER', 3)),
                      op=Token('DIVIDE', '/'),
                      right=Num(Token('INTEGER', 2)))
     assert result == expected
Exemplo n.º 4
0
 def test_parser(self):
     lexer = Lexer('3 + 1')
     parser = Parser(lexer)
     result = parser.parse()
     expected = BinOp(left=Num(Token('INTEGER', 3)),
                      op=Token('ADD', '+'),
                      right=Num(Token('INTEGER', 1)))
     assert result == expected
Exemplo n.º 5
0
 def test_expr_with_subtraction(self):
     lexer = Lexer('3 - 2')
     parser = Parser(lexer)
     result = parser.expr()
     expected = BinOp(left=Num(Token('INTEGER', 3)),
                      op=Token('SUBTRACT', '-'),
                      right=Num(Token('INTEGER', 2)))
     assert result == expected
Exemplo n.º 6
0
 def test_factor_with_parens(self):
     lexer = Lexer('(3)')
     parser = Parser(lexer)
     result = parser.factor()
     expected = Num(Token('INTEGER', 3))
     assert result == expected
Exemplo n.º 7
0
 def test_factor_error(self):
     lexer = Lexer('+')
     parser = Parser(lexer)
     with pytest.raises(SyntaxError) as ex:
         parser.factor()
     assert 'Invalid syntax' == str(ex.value)
Exemplo n.º 8
0
 def test_eat_error(self):
     lexer = Lexer('3')
     parser = Parser(lexer)
     with pytest.raises(SyntaxError) as ex:
         parser.eat('ADD')
     assert 'Invalid syntax' == str(ex.value)