def True_(self): return 'Bool'
def False_(self): return 'Bool'
def BoolOp(self, es): return 'Bool'if frozenset(es.post()) == {'Bool'} else 'Error'
def Not(self, e): return 'Bool' if e.post() == 'Bool' else 'Error'
def Num(self, n): return 'Int'
def Add(self, e1, e2): return 'Int' if e1.post() == 'Int' and e2.post() == 'Int' else 'Error'
def Sub(self, e1, e2): return 'Int' if e1.post() == 'Int' and e2.post() == 'Int' else 'Error'
def Mult(self, e1, e2): return 'Int' if e1.post() == 'Int' and e2.post() == 'Int' else 'Error'
def USub(self, e): return 'Int' if e.post() == 'Int' else 'Error'