HUANGChaoLi / Calculator

使用LL(1)文法实现的计算器(区别于双栈)
5 stars 0 forks source link

文法产生式 #1

Open Magic-Bytes opened 7 years ago

Magic-Bytes commented 7 years ago

感觉最后的 factor => -factor 不是必要的

HUANGChaoLi commented 7 years ago

如果不要的话那么类似"-1+2"这种表达式的话就会报错,我之前想了一下发现这种需要支持,所以加了上去。

Magic-Bytes commented 7 years ago

这是因为你的预处理不充分 ,你应该扫描整个式子,发现加号或者减号前面不是数字的话,就补0,例如-1+2就变成0-1+2,这样就可以让文法看起来比较简洁

Magic-Bytes commented 7 years ago

另外想问一问,我同学说预测表的生成需要处理几十个项集?问你是怎么做的?

HUANGChaoLi commented 7 years ago

(1)使用LL文法的好处之一就是不需要进行预处理,因为可以直接从左到右扫描,一次性分析完成。 (2)那个项集是LR文法的解决方案,不是LL文法的,这个计算器也可以用LR文法写,但是那个的确是需要写出来很多项集,所以比较麻烦。

Magic-Bytes commented 7 years ago

是时候改Web 2.0作业了<( ̄ˇ ̄)/

HUANGChaoLi commented 7 years ago

666,打算上完课再改