<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse(self, target):
 """ Parse nested declaration. """

        if not isinstance(target, Node):
            parent = ContentNode(None, None, [])
            parent.parse(target)
            target = parent

        super(Declaration, self).parse(target)
        self.name = str(self.data[0])
        while isinstance(target, Declaration):
            self.name = '-'.join((str(target.data[0]), self.name))
            target = target.parent

        self.expr = ' '.join(str
                             (n)
                             for n in self.data
                             [2:] if not isinstance(n, Declaration))
        if self.expr:
            target.declareset.append(self)