PYTHON   95

eval

Guest on 30th April 2022 11:59:56 PM

  1. def eval(t) :
  2.     """pre:  t  is a TREE,
  3.             where TREE ::= NUMERAL | [ OP, TREE1, TREE2 ]
  4.                   OP is  "+" or "-"
  5.                   NUMERAL is a string of digits
  6.       post: ans is the numerical meaning of t
  7.    """
  8.     print "Eval", t
  9.     if isinstance(t, str) and t.isdigit() : #is  t  a NUMERAL ?
  10.         ans = int(t)
  11.     else :  # t is a list, [op, t1, t2]
  12.         op = t[0]
  13.         t1 = t[1]
  14.         t2 = t[2]
  15.         ans1 = eval(t1)
  16.         # assert:  ans1  is the numerical meaning of t1
  17.         ans2 = eval(t2)
  18.         # assert:  ans2  is the numerical meaning of t2
  19.         if op == "+" :
  20.             ans = ans1 + ans2
  21.         elif op == "-" :
  22.             ans = ans1 - ans2
  23.     print "The value of", t, "is", ans
  24.     return ans

Raw Paste


Login or Register to edit or fork this paste. It's free.