What happen is there is a specific case where after analyzing the AST i will know if there is an error or not when the rule is finished. I tried yyerror(“blah”) with no luck.
Because i cant tell it there is an error it finishes another rule and now has a reduce/reduce conflict. This is annoying because i KNOW when one of them is invalid without looking at the other but the user has to suffer bc i dont know how to say ignore this branch bc its invalid
How do i fix this problem?
You want
YYERRORnotyyerror— puttingYYERRORin an action causes the parser to make the action a syntax error, and go into error recovery mode (if you have any error recovery actions in your parser — otherwise this is more or less equivalent toYYABORT).yyerroris a routine that bison calls with error messages — the default implementation is to print the error message — but is has nothing (specifically) to do with parsing or syntax errors.Note that this has no relation to any reduce-reduce (or shift-reduce) conflicts — conflicts are not errors, they are things in your grammar that make it not-LALR(1), so that the bison generated parser can’t reliably recognize it.