code: def query_parser(text):
      """The query expression parser.
  
      See https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.query.html
  
      * names with '@' prefix are global reference.
      * other names must be column names of the dataframe.
  
      Parameters
      ----------
      text: str
          The query string
  
      Returns
      -------
      info: a `dict` of the parsed info
      """  # noqa
      # convert any '@' to
      text = text.replace("@", ENVREF_PREFIX)
      tree = ast.parse(text)
      _check_error(tree)
      [expr] = tree.body
      extractor = _NameExtractor()
      extractor.visit(expr)
      colnames = sorted(extractor.colnames)
      refnames = sorted(extractor.refnames)
      info = {
          "source": text,
          "args": colnames + refnames,
          "colnames": colnames,
          "refnames": refnames,
      }
      return info
  
imports: import ast
  import datetime
  from typing import Any, Dict
  import numpy
  from numba import cuda
  import cudf
  from cudf.core.buffer import acquire_spill_lock
  from cudf.core.column import column_empty
  from cudf.utils import applyutils
  from cudf.utils._numba import _CUDFNumbaConfig
  from cudf.utils.dtypes import BOOL_TYPES, DATETIME_TYPES, NUMERIC_TYPES, TIMEDELTA_TYPES
label_desc: Use image node_id 1 for calling a global function with example usage: query_parser(text) and returns: info