2011-12-30 70 views

回答

2

XQuery Grammar在E-BNF指出。 BNF是用於上下文無關文法的符號,其比常規語法(其例如由正則表達式描述)限制更少。通常,在Chomsky Hierarchy上沒有辦法將語法轉換成語言較低

很多理論計算機科學的,沒有人告訴我們可以肯定的XQuery工作組不只是使用BNF爲了方便,也可以使用正則表達式來描述語法。

但是讓我們換個角度來看。 XQuery允許從其他模塊加載任意代碼。如果實現允許,甚至允許HTTP資源,例如。 import module namespace functx = "http://www.functx.com" at "http://www.xqueryfunctions.com/xq/functx-1.0-nodoc-2007-01.xq";(不要在你的應用程序中這樣做,鏡像functx庫 - 從網頁加載速度會更慢,functx的人不會喜歡你)。所以你需要解析(至少一些部分)你的XQuery甚至獲得所有的代碼。


選擇一些XQuery實現並使用它。有lots around,Apple甚至在NSXML中包含一個。

0

不,上下文無關語言,它不是一般的語言不能使用正則表達式來識別。

更具體地說,CF語言需要一個無限的存儲器結構(像堆棧)才能被解析,而常規語言識別則不是這樣,只需要固定數量的存儲器(對於有限自動機)。

XQuery是其實用非常複雜語法的語言。它包含整個XPath 2.0語言作爲子集。在過去,我爲XPath 2.0創建了一個解析器,並且知道它的語法。它有大約210條規則。這本身講述了XPath 2.0的複雜性,XPath 2.0只是XQuery的一個子集。