2011-03-19 46 views

回答

2

一般來說,即使您有一個帶有左遞歸的語法,您也可以重構語法以將其刪除。所以ANTLR相當有可能能夠處理你的語法。沒有先驗理由,您不能爲ANTLR編寫CSP語法。

你有沒有合適的是另一個問題。

如果您引用的短語是語法規則,則它沒有左遞歸。 (如果是這樣,我不明白你的語法規則的語法,特別是爲什麼括號[終端?]會不平衡;這是非單向的。) 因此,ANTLR應該能夠處理它,模轉換爲ANTRL語法規則語法。

你沒有顯示其餘的語法,所以你不能對它的其餘部分有意見。

+0

謝謝你的回答。我已經編輯了問題到廣告鏈接到語言參考,我解析的語言。 – 2011-03-19 02:50:12

+0

如果您瞭解左遞歸,您應該很容易自己檢查語法。 – 2011-03-19 02:54:43

+1

...如果您閱讀了語言參考手冊,作者甚至會說您可以在C++中獲得一個免費的,實現的解析器來構建AST。我會從那裏開始;如果沒有別的,它會有一個完整的,經過測試的語法。 – 2011-03-19 11:10:02

1

在上面的情況下沒有左遞歸。它看起來像。注意這是一個簡化的版本,CSP要複雜得多。我只是表明它是可能的。

assignment : PROCNAME EQ process 
      ; 
process : LPAREN EVENT ARROW process RPAREN 
     | PROCNAME 
     ; 

此外,你可以用ANTLRWorks'去除左遞歸'函數來分解左遞歸。

+2

雖然_'Remove Left Recursion'_功能只適用於最瑣碎的情況:我從來沒有見過它正常工作。最好只是自己動手。 – 2011-03-19 08:11:15

1

CSP在ANTLR中絕對有可能,例如檢查http://www.carnap.info/

+0

該鏈接可能無效 - 它不再有幫助 – V15I0N 2018-01-09 19:48:19

相關問題