2009-10-25 46 views

回答

6

這取決於 「語言」 的定義。如果你問

什麼編程語言是正確的 可用LL(k)解析器解析?

然後沒有,甚至不是pascal或xml,因爲它們都是上下文相關的。上下文無關語法無法檢測到錯誤,例如未定義使用的標識符,或匹配XML中的開始和結束標記。如果你問

什麼編程語言,可以方便地 與LL(K) 解析器解析,假設良構的進一步分析 必須 上面的解析被添加?

then ANTLR證明nearly every programming language可以用LL(k)解析器的(版本)進行處理。

+0

此外,CFG不能描述「類型」,並允許根據類型進行操作。 – AraK 2009-10-25 18:27:51

+0

@Arak:right;這可能比聲明的需要更重要。有趣的是,Algol-68解決了兩層語法的問題。 – 2009-10-25 18:36:46

+0

@Martin這使得假定編程語言語法允許或限制什麼,並將詞法分析和語義分析階段集中在一起。我認爲對答案進行重組將會有所幫助。 – 2009-10-25 18:55:14