2
我正在執行pratt的top down operator precedence解析器,我想知道它屬於哪個正式類別 - 它是LR(1)嗎?什麼樣的解析器是普拉特解析器?
我正在執行pratt的top down operator precedence解析器,我想知道它屬於哪個正式類別 - 它是LR(1)嗎?什麼樣的解析器是普拉特解析器?
Pratt解析器不是LR解析器。而且他們也不完全是LL解析器。事實上,普拉特解析器通常是用一些通用編程語言手工編碼的;該技術不是基於像下推式有限狀態自動機這樣的抽象。這使得證明關於給定的普拉特解析器的斷言比較困難,比如它承認了一種特定的形式語言。
一般來說,如果語法是運算符優先級語法,則可以輕鬆地設計Pratt語法分析程序來識別語言,因此即使運算符優先級分析是自下而上的,它們也可以被認爲是運算符優先級分析的對偶,並且普拉特解析器名義上是自上而下的。跟蹤Pratt解析器和相同語言的運算符優先級解析器的轉換將顯示相似性。
所以我想有可能爲Pratt解析器提出一個形式化方法,但據我所知,沒有一個存在。