code: function flattenRX(arr, code,  res) {
    if(!Array.isArray(arr)) return arr_push(res, arr);
  
    let codex = arr[0];
    if( code !== codex) { 
      let r = flattenRX(arr,codex, [codex]);
      return ( res ) ? arr_push(res, r) : r;
    }
    
    return arr.reduce( (res,a) => flattenRX(a, codex, res));
  }
docs: [or, p1,p2,p...] [dot, p1, p2, p...] [zero_or_one, p1] [zero_or_more, p1] function binary op form to n-arrya form [ op,  [op, x, y...], z] => [ op, x, y..., z] (applied recursively) [ op,  x, [op, y, z...]] => [ op, x, y, z...] (applied recursively)