For my project, I found sticking to LALR(1) quite beneficial.  Not that there&#x27;s anything special about LALR(1): you could use LL(k) instead if you prefer.  However, by sticking to a small, deterministic syntax (and making the parser generator complain loudly in case of ambiguity), I can easily find edge cases I&#x27;ve never thought about before it comes around to bite me.  And, in most cases, it&#x27;s trivial to slightly modify the syntax so that the undesirable ambiguity does not arise.<p>It&#x27;s the equivalent of static typing for syntax: it takes effort to make bison run successfully, but when it does, I know that my grammar is free of ambiguity.