上下文無關文法和解析 表達語法的根本區別是,PEG的 選擇運營商是有序的。如果 第一個替代方案成功,則第二個替代方案將被忽略。因此,訂購 的選擇是不可交換的,不像 無序的選擇,因爲在上下文無關 語法和正則表達式。 有序選擇類似於軟件 削減運算符在一些邏輯 可用編程語言。
爲什麼PEG的選擇運算符將匹配短路?是否因爲最大限度地減少內存使用(由於記憶)?
我不確定在正則表達式中選擇運算符是什麼,但我們假設它是這樣的:/[aeiou]/
以匹配元音。所以這個正則表達式是可交換的,因爲我可以把它寫在5中的任何一個! (五個階乘)元音字符的排列?即/[aeiou]/
的行爲與/[eiaou]/
相同。它可交換的優點是什麼? (C.F. PEG的不可交換)
的後果是,如果一個CFG是 直接音譯的PEG,在前任何 歧義由 確定性挑選一個解析從可能的解析 樹解決。通過仔細選擇 指定的文法備選 的順序,程序員對選擇哪個解析樹 有很大的控制權。
這是說PEG的語法優於CFG嗎?
「Superior」?你對「上級」的標準是什麼? – Gabe 2011-03-31 14:02:03
對於交換性,想想'(飛機)'試圖匹配飛機。 – xanatos 2011-03-31 14:47:35
看起來你很迷惑選擇運算符和角色類的概念。在正則表達式中,字符類用方括號'[aeiou]'分隔,而選擇操作符是管道字符'|'。在PEG中,選擇運算符是斜槓字符'/'。 – hippietrail 2014-08-11 10:56:59