def visit_unary(self, node: ast.UnaryOp):
     # print("visiting unary")
     op = None
     expr = None
     for name, child in node.children():
         if name == "op":
             op = child
         elif name == "expr":
             expr = child
     try:
         e = self.visit(expr)
         if op is not None:
             if isinstance(e, ast.ID):
                 e = self.lookupSymTables(e.getName())
             if e == 'F':
                 e = False
             elif e == 'T':
                 e = True
             if op == '!':
                 return (not e)
             elif op == '+':
                 return e
             elif op == '-':
                 return -e
         return e
     except Exception as e:
         raise Exception(e)
    def visit_unary(self, node: ast.UnaryOp):
        print("unary")
        op = None
        expr = None
        for name, child in node.children():
            if name == "op":
                op = child
            elif name == "expr":
                expr = child

        try:
            if op is not None:
                pass
            else:
                return self.visit(expr)
        except:
            pass