BNF其实都是用来描述 **Term是由其他什么Term构成的** 的等式,这里的构成规则,一般就是一些运算符之类的东西,而运算符一般会规定一些优先级。
我的这个小经验就是:用低优先级运算符描述的等式,是我们解析器的主干或称骨架。我们的解析器在实现时,也应该优先把最低优先级的BNF做出来,这样,这些极低优先级的运算符所操作的对象,在下一轮精细实现时,就可以替换为高优先级运算符描述的Term,一直这么下去,每一轮实现只前进一小步,很快就能实现出整个解析器,而关于运算符的优先级问题就在我们选择的这个实现顺序里被顺便解决了。