Beispiel #1
0
 def aux():
     txt = self.display.text()
     try:
         result = acc.parse(txt)
     except SyntaxError:
         self.display.setText('Invalid Syntax')
     except:
         self.display.setText('Value Error')
     else:
         if type(result) is ndarray:
             result = list(result)
         self.display.setText(str(result))
Beispiel #2
0
 def test_vector_sum(self):
     s = '[1,2,3]+[4,5,6]'
     self.assertEquals(list(acc.parse(s)), [5, 7, 9])
Beispiel #3
0
###################################

from parser import lexer, acc
from convert import converter
while True:
    res = ''
    try:
        s = input('calc > ')
    except EOFError:
        break
    try:
        lexer.input(s)
        print([(tok.type, tok.value) for tok in lexer])
    except:
        print('Lex Error')
        continue
    else:
        try:
            res = str(acc.parse(s))
            print(res)
        except SyntaxError:
            print('Invalid Syntax')
            continue
        except:
            print('Value Error')
            continue
        else:
            try:
                print(converter.parse(res))
            except:
                pass
Beispiel #4
0
 def test_log(self):
     s = 'log(5,25)'
     self.assertEquals(acc.parse(s), 2.0)
Beispiel #5
0
 def test_lcm(self):
     s = 'lcm(50,75)'
     self.assertEquals(acc.parse(s), 150)
Beispiel #6
0
 def test_gcd(self):
     s = 'gcd(50,75)'
     self.assertEquals(acc.parse(s), 25)
Beispiel #7
0
 def test_int_plus_minus(self):
     s = '3+5-7'
     self.assertEquals(acc.parse(s), 1)
Beispiel #8
0
 def test_n_choose_0(self):
     s = 'chs(4,0)'
     self.assertEquals(acc.parse(s), 1)
Beispiel #9
0
 def test_float_mult_divide(self):
     s = '0.2*9/0.6'
     self.assertEquals(acc.parse(s), 3.0)
Beispiel #10
0
 def test_least_square(self):
     s = 'lstsq[(1,2),(3,4),(4,5.2)]'
     self.assertEquals(str(acc.parse(s)), '(1.0571x1+0.9143x0)')
Beispiel #11
0
 def test_float_plus_minus(self):
     s = '0.3+0.5-0.7'
     self.assertEquals(acc.parse(s), Fraction(1, 10))
Beispiel #12
0
 def test_interpolation(self):
     s = 'intp[(1,2),(3,4)]'
     self.assertEquals(str(acc.parse(s)), '(1.0x1+1.0x0)')
Beispiel #13
0
 def test_vector_cross(self):
     s = '[1,2,3]*[1,2,3]'
     self.assertEquals(list(acc.parse(s)), [0, 0, 0])
Beispiel #14
0
 def test_vector_inner(self):
     s = '[1,2,3][4,5,6]'
     self.assertEquals(acc.parse(s), 32)
Beispiel #15
0
 def test_vector_times_num(self):
     s = '[1,2,3]*2'
     self.assertEquals(list(acc.parse(s)), [2, 4, 6])
Beispiel #16
0
 def test_negative_exp(self):
     s = '3E-5'
     self.assertEquals(acc.parse(s), Fraction(3, 100000))
Beispiel #17
0
 def test_n_choose_k(self):
     s = 'chs(4,2)'
     self.assertEquals(acc.parse(s), 6)
Beispiel #18
0
 def test_float_precedence(self):
     s = '0.2*9+1.2/6-1'
     self.assertEquals(acc.parse(s), 1.0)
Beispiel #19
0
 def test_n_choose_nplus1(self):
     s = 'chs(4,5)'
     self.assertEquals(acc.parse(s), 0)
Beispiel #20
0
 def test_negative_num(self):
     s = '-0.2+-0.8*-2.0'
     self.assertEquals(acc.parse(s), Fraction(7, 5))
Beispiel #21
0
 def test_invalid_n_choose_k(self):
     s = 'chs(4.5,2)'
     with self.assertRaises(SyntaxError) as se:
         acc.parse(s)
Beispiel #22
0
 def test_parenthesis(self):
     s = '(-0.2+-0.8)*-2.0'
     self.assertEquals(acc.parse(s), 2.0)
Beispiel #23
0
 def test_gcd2(self):
     s = 'gcd(27,64)'
     self.assertEquals(acc.parse(s), 1)
Beispiel #24
0
 def test_valid_factorial(self):
     s = '6!'
     self.assertEquals(acc.parse(s), 720)
Beispiel #25
0
 def test_invalid_lcm(self):
     s = 'lcm(1.2,3.7)'
     with self.assertRaises(SyntaxError) as se:
         acc.parse(s)
Beispiel #26
0
 def test_zero_factorial(self):
     s = '0!'
     self.assertEquals(acc.parse(s), 1)
Beispiel #27
0
 def test_ln(self):
     s = 'ln(8)'
     self.assertEquals(acc.parse(s), math.log(8))
Beispiel #28
0
 def test_invalid_factorial(self):
     s = '3.5!'
     with self.assertRaises(SyntaxError) as se:
         acc.parse(s)
Beispiel #29
0
 def test_positive_exp(self):
     s = '3E5'
     self.assertEquals(acc.parse(s), 300000)
Beispiel #30
0
 def test_polynomial_rangesum(self):
     s = '(1x2+2x1)sum(1,2)'
     self.assertEquals(acc.parse(s), 11)