def _parse_identifier_list(sql, example, anonymize_values):
  """Parse the part relative to an IdentifierList in the SQL query."""
  successful_copy = True
  for item in sql:
    if item.ttype == sqlparse.tokens.Text.Whitespace:
      continue

    if _is_punctuation(item) and (item.value in (',',)):
      _add_simple_step(item, example)
      continue

    if _is_function(item):
      _parse_function(item, example, anonymize_values)
      continue

    if _is_identifier(item):
      successful_copy = _parse_identifier(item, example,
                                          anonymize_values) and successful_copy
      continue

    if _is_operation(item):
      successful_copy = _parse_operation(item, example,
                                         anonymize_values) and successful_copy
      continue
    if _is_keyword(item) and item.value.lower() in ('count', 'avg', 'min',
                                                    'max', 'sum'):
      _add_simple_step(item, example)
      continue

    _debug_sql_item(item)
    raise ParseError('Incomplete _parse_identifier_list')

  return successful_copy
Parse the part relative to an IdentifierList in the SQL query.
language/xsp/data_preprocessing/sql_parsing.py