antlr 4新特性總結及與antlr v3的不同#
- 學習曲線低。antlr v4相對於v3,v4更注重於用更接近於自然語言的方式去解析語言。比如運算符優先級,排在最前面的規則優先級最高;
- 層次更清晰、更易維護。引入訪問者、監聽器模式,使解析與應用代碼分離;新増import功能,lexer、parser可以成為公共組件,増加可復用性;
- 新算法。改進LL()算法,使用新的Adative LL()算法,在運行時動態分析語法,而LL(*)需要靜態分析語法,考慮各種語法的可能性。
- 新用法。引入了一些新用法,如rewrite the input stream、sending token in different channels、island grammars、associativity,可以更方便、靈活地在應用中處理解析對象。
- 性能。相對於v3,解析代碼跟應用代碼都是自動生成的,而v4分離了解析與應用代碼的實現,應用代碼的實現及性能則可以由開發人員自主地控制,但新算法據官方指引說會消耗一定的速度上的性能,因此提供了SLL()、LL()的開關,可通過api控制。