%x mem
 %s config
 %x event
-%x array
 
 group          [^,{}/]*[{][^}]*[}][^,{}/]*
 event_pmu      [^,{}/]+[/][^/]*[/][^,{}/]*
                }
 }
 
-<array>{
-"]"                    { BEGIN(config); return ']'; }
-{num_dec}              { return value(yyscanner, 10); }
-{num_hex}              { return value(yyscanner, 16); }
-,                      { return ','; }
-"\.\.\."               { return PE_ARRAY_RANGE; }
-}
-
 <config>{
        /*
         * Please update config_term_names when new static term is added.
 {lc_type}-{lc_op_result}       { return lc_str(yyscanner, _parse_state); }
 {lc_type}-{lc_op_result}-{lc_op_result}        { return lc_str(yyscanner, _parse_state); }
 {name_minus}           { return str(yyscanner, PE_NAME); }
-\[all\]                        { return PE_ARRAY_ALL; }
-"["                    { BEGIN(array); return '['; }
 @{drv_cfg_term}                { return drv_str(yyscanner, PE_DRV_CFG_TERM); }
 }
 
 
 %token PE_LEGACY_CACHE
 %token PE_PREFIX_MEM
 %token PE_ERROR
-%token PE_ARRAY_ALL PE_ARRAY_RANGE
 %token PE_DRV_CFG_TERM
 %token PE_TERM_HW
 %type <num> PE_VALUE
 %type <list_evsel> groups
 %destructor { free_list_evsel ($$); } <list_evsel>
 %type <tracepoint_name> tracepoint_name
-%destructor { free ($$.sys); free ($$.event); } <tracepoint_name>
-%type <array> array
-%type <array> array_term
-%type <array> array_terms
-%destructor { free ($$.ranges); } <array>
 %type <hardware_term> PE_TERM_HW
 %destructor { free ($$.str); } <hardware_term>
 
                char *sys;
                char *event;
        } tracepoint_name;
-       struct parse_events_array array;
        struct hardware_term {
                char *str;
                u64 num;
 
        $$ = term;
 }
-|
-name_or_raw array '=' name_or_legacy
-{
-       struct parse_events_term *term;
-       int err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $1, $4, &@1, &@4);
-
-       if (err) {
-               free($1);
-               free($4);
-               free($2.ranges);
-               PE_ABORT(err);
-       }
-       term->array = $2;
-       $$ = term;
-}
-|
-name_or_raw array '=' PE_VALUE
-{
-       struct parse_events_term *term;
-       int err = parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, $1, $4, false, &@1, &@4);
-
-       if (err) {
-               free($1);
-               free($2.ranges);
-               PE_ABORT(err);
-       }
-       term->array = $2;
-       $$ = term;
-}
-|
-PE_DRV_CFG_TERM
-{
-       struct parse_events_term *term;
-       char *config = strdup($1);
-       int err;
-
-       if (!config)
-               YYNOMEM;
-       err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, config, $1, &@1, NULL);
-       if (err) {
-               free($1);
-               free(config);
-               PE_ABORT(err);
-       }
-       $$ = term;
-}
-
-array:
-'[' array_terms ']'
-{
-       $$ = $2;
-}
-|
-PE_ARRAY_ALL
-{
-       $$.nr_ranges = 0;
-       $$.ranges = NULL;
-}
-
-array_terms:
-array_terms ',' array_term
-{
-       struct parse_events_array new_array;
-
-       new_array.nr_ranges = $1.nr_ranges + $3.nr_ranges;
-       new_array.ranges = realloc($1.ranges,
-                               sizeof(new_array.ranges[0]) *
-                               new_array.nr_ranges);
-       if (!new_array.ranges)
-               YYNOMEM;
-       memcpy(&new_array.ranges[$1.nr_ranges], $3.ranges,
-              $3.nr_ranges * sizeof(new_array.ranges[0]));
-       free($3.ranges);
-       $$ = new_array;
-}
-|
-array_term
-
-array_term:
-PE_VALUE
-{
-       struct parse_events_array array;
-
-       array.nr_ranges = 1;
-       array.ranges = malloc(sizeof(array.ranges[0]));
-       if (!array.ranges)
-               YYNOMEM;
-       array.ranges[0].start = $1;
-       array.ranges[0].length = 1;
-       $$ = array;
-}
-|
-PE_VALUE PE_ARRAY_RANGE PE_VALUE
-{
-       struct parse_events_array array;
-
-       if ($3 < $1) {
-               struct parse_events_state *parse_state = _parse_state;
-               struct parse_events_error *error = parse_state->error;
-               char *err_str;
-
-               if (asprintf(&err_str, "Expected '%ld' to be less-than '%ld'", $3, $1) < 0)
-                       err_str = NULL;
-
-               parse_events_error__handle(error, @1.first_column, err_str, NULL);
-               YYABORT;
-       }
-       array.nr_ranges = 1;
-       array.ranges = malloc(sizeof(array.ranges[0]));
-       if (!array.ranges)
-               YYNOMEM;
-       array.ranges[0].start = $1;
-       array.ranges[0].length = $3 - $1 + 1;
-       $$ = array;
-}
 
 sep_dc: ':' |