Visitor for `FunctionDeclaration` AST node.

def visit_FunctionDeclaration(self, node):
        """Visitor for `FunctionDeclaration` AST node."""
        for parameter in node.parameters:
            try:
                var_name = parameter.variable.identifier.name
                var_is_mutable = parameter.variable.is_mutable
            except AttributeError:
                raise SementicError('Invalid parameter.')

            var_symbol = VariableSymbol(var_name, var_is_mutable)

            if self.table[var_name] is not None:
                raise SementicError(f"Duplicated `{var_name}` function parameter.")

            self.table[var_name] = var_symbol

        self.visit(node.body)