2011-12-21 55 views
3

我一直在閱讀Dick Grune的解析技術第1版已有相當長一段時間了,本書是從90年代中期開始的,作者認爲沒有這種解析方法(線性時間通用解析)直到日期才被發現。線性時間一般分析器

「我們希望有一個線性時間的通用解析方法 不幸的是迄今爲止還沒有發現這樣的方法。第76頁

所以我想知道有沒有人開發過這樣的方法?

在此先感謝您的幫助。

(約我標記的方式對不起,StackOverflow上沒有「線性時間」和「一般」的標籤)

回答

2

沒有這樣的方法已經被設計出來。據我所知道的,CYK algorithm仍然一般分析算法的最佳最壞的情況性能(爲O(n ))。

0

Packrat與完整的memoisation是一個有保證的O(n),但有一個相對較大的線性乘法器。

0

我正在開發一個用CoffeeScript編寫的解析器(JoeSon),我相信對大多數有趣的語法來說它是O(n)。

我認爲它本質上是一個Packrat解析器,但能夠繞過某些規則的緩存,我認爲這對編寫空白敏感的語法是必要的。

Packrat不解析所有上下文無關語法。計算問題有困難,例如語法'S = x S x |' X '。但是這些語法對於人類來說也是很難解析的。

https://github.com/jaekwon/joeson/blob/master/joeson_grammar.coffee https://github.com/jaekwon/joeson/blob/master/joescript_grammar.coffee