2016-06-09 65 views
2

我想改變menhir輸出的行爲: 我希望它查找所有語法替代品,如果它找到任何,並將它們放在一個列表中,並讓我回到這ambigouus解釋。它不應該減少衝突,只是存儲它們。使menhir找到所有的選擇?

在menhir的源代碼中,在我看來,我必須查看「Engine.ml」。得到的語法確定的標記作爲語法自動機的檢查點的狀態出現在變體類型項「Accepted v」中。這個內容是通過一個函數「accept env prod」找到的,它是一組遞歸函數的一部分,它改變了狀態。

你有一個提示,我怎麼可以改變這些功能,把所有可能的結果放在列表中,並繼續進行,就好像什麼都沒有發生?或者你認爲,這無論如何不會工作?

謝謝。

回答

4

你在找什麼是GLR parser generator(G是廣義的)。 Menhir不是這樣的工具,我懷疑你可以輕易修改它來做你想做的事。

但是,還有另一種工具可以完全實現您想要的功能:dypgen

+0

真的,真的很好的提示。 :) 謝謝 – gwf