def statement(self):
        """
        statement: function_declaration
                 | variable_declaration
                 | expression_statement
                 | if_statement
                 | while_statement
                 | jump_statement
        """
        if self.token.nature == Nature.DEF:
            node = self.function_declaration()
        elif self.token.nature == Nature.LET:
            node = self.variable_declaration()
        elif self.token.nature in (Nature.MUT, Nature.ID):
            node = self.expression_statement()
        elif self.token.nature == Nature.IF:
            node = self.if_statement()
        elif self.token.nature == Nature.WHILE:
            node = self.while_statement()
        elif self.token.nature == Nature.RETURN:
            node = self.jump_statement()
        else:
            node = self._error()

        return node
statement: function_declaration
                 | variable_declaration
                 | expression_statement
                 | if_statement
                 | while_statement
                 | jump_statement