2012-04-29 68 views

回答

3

CKY可以解析任何上下文無關的語言,但與替代方案相比,時間複雜性並不高。 CKY要求語法採用喬姆斯基標準格式,這可能會炸燬語法的大小並且也會影響運行時間。對於一個快速而且髒的解析器來說,這是一個好方法,但當您嘗試擴展到更大的輸入或複雜的語法時,會遇到問題。

如果您正在尋找一種相對易於實現的可理解的解析算法,請查看解析表達式語法(PEG)。他們可以識別上下文無關語言的大部分子集,以及一些上下文敏感度有限的語言。一旦你有一個工作PEG分析器,很容易添加memoization,它給你一個線性時間運行的Packrat解析器。關於PEGsPackratthis extension的學術論文允許左遞歸語法都是可以理解的。