147,152d146
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
158c152
<         if (c != '(' && c != '[') {     /* Only the name of function-like or array-like macro */
---
>         if (c != '(') {     /* Only the name of function-like macro */
337,342d330
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
371,376d358
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
858,863d839
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
1027,1032d1002
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
1136,1141d1105
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
1152,1157d1115
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
1180,1185d1137
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
1238,1243d1189
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
2233,2238d2178
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
2321,2326d2260
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
2374c2308
<         if (c != '(' && c != '[') {         /* Macro name without following '(' */
---
>         if (c != '(') {         /* Macro name without following '(' */
2524,2529d2457
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
2532c2460
<         if (c == ')' || c == ',' || c == ']') {
---
>         if (c == ')' || c == ',')
2534c2462
<         } else
---
>         else
2537,2542d2464
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
2569,2576d2490
<             } else if (c == ']') {
<                 if (skip_ws() == '[') {
<                   more_to_come = TRUE;
<                   continue;
<                 } else {
<                   unget_ch();
<                   break;
<                 }
2594,2598c2508
<         if (c == ']' && skip_ws() != '[') {
<             unget_ch();
<             break;
<         }
<         
---
> 
2607,2612d2516
<         if (c == ']') {
<           if (skip_ws() != '[') {
<             break;
<           }
<           unget_ch();
<         }
2622,2633c2526
<         if (c == ',') {
<           more_to_come = TRUE;
<         } else if (c == ']') {
<           if (skip_ws() == '[') {
<             more_to_come = TRUE;
<           } else {
<             unget_ch();
<             more_to_come = FALSE;
<           }
<         } else {
<           more_to_come = FALSE;
<         }
---
>         more_to_come = (c == ',');
2713d2605
<     int     num_sqparen = 0;
2716d2607
<     int     sqparen = var_arg;              /* For embedded []'s    */
2787,2813c2678
<         case '[':                           /* Worry about balance  */
<             sqparen++;                        /* To know about commas */
<             break;
<         case ']':                           /* Other side too       */
< 
<             if (skip_ws() == '[') {
<               if (paren == 0)                 /* ][ delimits arg   */
<                   end_an_arg = TRUE;
<               break;
<             } else {
<               unget_ch();
<             }
<           
<             if (sqparen-- == var_arg)         /* At the end?          */
<                 end_an_arg = TRUE;          /* Else more to come    */
<             if (trace_arg) {
<                 if (num_sqparen && sqparen == n_paren[ num_paren].n_par) {
<                     /* Maybe corresponding parentheses for the macro in arg */
<                     int     src_n;
<                     src_n = n_paren[ num_sqparen].n_in_src;
<                     in_src[ src_n].end_line = s_line_col.line;
<                     in_src[ src_n].end_col = s_line_col.col + 1;
<                     num_sqparen--;
<                 }
<             }
<             break;
<         case ',': // for "][" see above
---
>         case ',':
2899,2904d2763
<         if (c == ']') {
<           if (skip_ws() == '[')
<             c = ',';
<           else
<             unget_ch();
<         }
