antlr的技术上的优势
1.把之前的computing lookahead的数量级,从之前的O(n^k),降低到O(n*k)
即,从指数级,降低到,线性级。
也就是所谓的:linear approximate lookahead
2.之前的LL(k) parser,都是k=1的。
antlr 1.0,即PCCTS做到了,第一个实现了k>1的LL(k) parser generator
3.由于LR Parser是在得到了更多的输入的前提下去做出判断的,所以一般来说,LR parser都要比LL(k) Parser的解析能力更强
相反地,由于需要更多的输入,则导致了parser更多的事情,确定性的解析策略(deterministic parsing strategy),由此会导致,对于一些写法很不好的代码,会解析失败(因其不完全符合标准的语法)
比如,C++。
【TODO:待完善】
参考资料
http://www.antlr2.org/contributions.html
转载请注明:在路上 » 【整理】antlr在技术上的优势