分析器
LR項目內有一宏定義可定義為LR0或SLR1
LR1分析器分析速度過慢有待優化..
求Follow集用了非遞歸算法,發現遞歸算法容易引起無限循環.
希望對正在學習編譯原理的同學有所啟發.
posted on 2010-07-18 18:02
lwch 閱讀(4761)
評論(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秒..
回復 更多評論