分析器
LR项目内有一宏定义可定义为LR0或SLR1
LR1分析器分析速度过慢有待优化..
求Follow集用了非递归算法,发现递归算法容易引起无限循环.
希望对正在学习编译原理的同学有所启发.
posted on 2010-07-18 18:02
lwch 阅读(4704)
评论(6) 编辑 收藏 引用 所属分类:
NScript
评论:
# re: LR(0),SLR(1),LR(1)分析器源码
2010-07-18 20:55 |
# re: LR(0),SLR(1),LR(1)分析器源码
2010-07-18 22:19 |
优化完Debug版本效率差不多提升了一半,Release版本差不多2,300毫秒
开启代码的完全优化Debug版本和之前相比提升了10倍左右..
算法主要时间基本都消耗在反复读取指针的值上
回复 更多评论
# re: LR(0),SLR(1),LR(1)分析器源码
2010-07-19 12:57 |
@lwch
根据经验,release独立运行比Debug调试运行要快32倍,不然就是你IO太多……
回复 更多评论
# re: LR(0),SLR(1),LR(1)分析器源码
2010-07-19 15:32 |
@陈梓瀚(vczh)
没算上IO时间,时间主要消耗在DFA的状态机生成上..
回复 更多评论
# re: LR(0),SLR(1),LR(1)分析器源码
2010-07-19 15:54 |
现在156个状态435条边Release版本需要15秒左右..
回复 更多评论
# re: LR(0),SLR(1),LR(1)分析器源码
2010-07-20 16:58 |
采用新的算法生成DFA状态机,现在生成126个状态,408条边仅需1.1秒..
回复 更多评论