def matches(self, sexp):
        '''
        Body of a non-terminal is always a :class:`Sequence`. For an s-expr
        to match, it must be of the form::

            ['name'] + [sexpr-0, ..., sexpr-n]

        where the first list contains a name of the non-terminal,
        and the second one matches its body sequence.
        '''
        if sexp and isinstance(sexp, list) and self.name == sexp[0]:
            return self.body.matches(sexp[1:])
        return False