>Sounds like the parse tree is reduced from the right instead of the
>left.
The grammar looks properly left-recursive to me:
| m_expr_list: { $$=0; }
| | m_expr_list2 optional_comma
| ;
|
| m_expr_list2: assoc_pair
| | m_expr_list2 ',' assoc_pair
| {
| if ($3) {
| $$=mknode(F_ARG_LIST,$1,$3);
| } else {
| /* Error in assoc_pair */
| $$=$1;
| }
| }
| | m_expr_list2 ',' error
| ;
|
| assoc_pair: expr0 expected_colon expr0
| {
| $$=mknode(F_ARG_LIST,$1,$3);
| }
| | expr0 expected_colon error { free_node($1); $$=0; }
| ;
My guess is that the problem lies somewhere in the optimizer or
code-generator.