atom ::=
             ('(' [yield_expr|testlist_gexp] ')'
                 | '[' [listmaker] ']'
                 | '{' [dictmaker] '}'
                 | '`' testlist1 '`'
                 | NAME | NUMBER | STRING+)

def n_atom(self, node):
        """atom ::=
             ('(' [yield_expr|testlist_gexp] ')'
                 | '[' [listmaker] ']'
                 | '{' [dictmaker] '}'
                 | '`' testlist1 '`'
                 | NAME | NUMBER | STRING+)
        """
        length = len(node)
        if length == 1:
            self.preorder(node[0])
        elif length == 3:
            self.preorder(node[0])
            self.preorder(node[1])
            self.preorder(node[2])
        else:
            assert False, "Expecting atom to have length 1 or 3"
        self.prune()