I have a yacc parser in which commands like "abc=123" (VAR=VAR), abc=[1 2 3] (VAR=value_series/string) and abc=[[123]] can be parsed.
I need to parse abc=[xyz=[1 2 3] jkl=[3 4 5]].This grammar is failing due to ambiguity between rule 2 (I guess, it couldn't differentiate between value_series and the new rule.
I have tried a case: VAR_NAME EQUAL quote_or_brace model EQUAL quote_or_brace value_series quote_or_brace net EQUAL quote_or_brace value_series quote_or_brace quote_or_brace
It didn't work.
series:
| PLUS series
{
}
| series VAR_NAME EQUAL VAR_NAME
{
delete [] $2;
delete [] $4;
}
| series VAR_NAME EQUAL quote_or_brace value_series quote_or_brace
{
delete [] $2;
}
| series VAR_NAME EQUAL quote_or_brace quote_or_brace value_series quote_or_brace quote_or_brace
{
delete [] $2;
}
| error
{
setErrorMsg(string("error"));
YYABORT;
};
series VAR_NAME EQUALwhy not make a single rule asseries var_assignment(or similar). Thenvar_assignment: VAR_NAME EQUAL assignment_rhs_expression. And so on.