code: def function(self, tree):
      function_name = None
      function_output = None
      function_args = []
  
      for child in tree.children:
          if isinstance(child, Token):
              if child.value == "*":
                  function_args = [TupleValueExpression(name="*")]
          if isinstance(child, Tree):
              if child.data == "simple_id":
                  function_name = self.visit(child)
              elif child.data == "dotted_id":
                  function_output = self.visit(child)
              elif child.data == "function_args":
                  function_args = self.visit(child)
  
      func_expr = FunctionExpression(
          None, name=function_name, output=function_output
      )
      for arg in function_args:
          func_expr.append_child(arg)
  
      return func_expr
  
file_path: evadb/evadb/parser/lark_visitor/_functions.py
imports: from lark import Token, Tree
  from evadb.expression.abstract_expression import ExpressionType
  from evadb.expression.aggregation_expression import AggregationExpression
  from evadb.expression.constant_value_expression import ConstantValueExpression
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.create_function_statement import CreateFunctionStatement
label_desc: Use image node_id 1 for calling the Functions obj's underlying member method code with example usage: obj.function(tree) and returns: func_expr