code: def visit_FunctionCall(self, node):
          
          function_name = node.identifier.name
          call = self.table[function_name]
          if call is None:
              raise SementicError(f"Function `{function_name}` not declared.")
          else:
              call = call._node
  
          if isinstance(call, AST):
              if len(call.parameters) != len(node.parameters):
                  raise SementicError(
                      "Mismatch between call and function parameters number."
                  )
  
              current_table = self.table.stack.current
              functions_in_table = {
                  key: current_table[key]
                  for key in current_table
                  if isinstance(current_table[key], FunctionSymbol)
              }
  
              if self.table.name == function_name:
                  # End the visit in case of recursion
                  return
  
              self.table.append_table(function_name, **functions_in_table)
              self.visit(call)
              self.table.pop_table()
docs: Visitor for `FunctionCall` AST node.