docs: def create_selection():
      """ Create a selection expression """
      operation = Forward()
      nested = Group(Suppress("(") + operation + Suppress(")")).setResultsName("nested")
      select_expr = Forward()
      functions = select_functions(select_expr)
      maybe_nested = functions | nested | Group(var_val)
      operation <<= maybe_nested + OneOrMore(oneOf("+ - * /") + maybe_nested)
      select_expr <<= operation | maybe_nested
      alias = Group(Suppress(upkey("as")) + var).setResultsName("alias")
      full_select = Group(
          Group(select_expr).setResultsName("selection") + Optional(alias)
      )
      return Group(
          Keyword("*") | upkey("count(*)") | delimitedList(full_select)
      ).setResultsName("attrs")