我有一個Antlr3語法文件的C#解決方案,我試圖升級到Anltr4。事實證明,語法是容易的部分(它變得更好,大小的三分之一!)。生成解析器原來是一個棘手的部分。Antlr4 C#生成文件的目標和輸出路徑
在舊的解決方案中,我只運行AntlrWorks來更新語法文件更改時的詞法分析器和分析器.cs文件。詞法分析器和解析器直接包含在與語法相同的項目中,因此圍繞解析器的框架可以直接使用它們。我注意到(至少在默認情況下)生成的Parser C#類的輸出路徑位於中間目錄中,例如,在C#中的Antlr4目標。 OBJ \調試。這意味着我不能直接在同一個項目中使用解析器。我是否應該改變輸出路徑,如果我想生成的源可用在我的SLN?我不想在我的sln?
我試圖使一個單獨的項目解析器生成,即包含只有語法文件的項目。當使用Antlr4目標構建該項目時,可以從需要解析器類的項目中引用生成的程序集。然而,如果這個項目包含在解決方案中,我仍然沒有在Visual Studio中獲得任何智能感知,因爲它將智能感知基於加載項目的源文件,所以它仍然不太可用。我能夠正常工作的唯一方法是構建然後卸載解析器項目,並讓其他項目將其作爲程序集文件而不是項目引用。
編輯:
望ANTLR利益名單後,我發現這個線程表明隨着智能感知問題可能是Resharpers故障。如果是這種情況,那麼我的問題是如何在我的解決方案中繼續使用Antlr4和Resharper? https://groups.google.com/forum/#!topic/antlr-discussion/QSuJXphaBDg
選項零即表示接受它顯示虛假錯誤高亮且沒有智能感知。如果沒有R#,VS實際上是不可用的,所以1)不可悲。如果我可以在每個項目的基礎上關閉R#,那麼我會很好,我已將它帶到了R#論壇,並打算提出JetBrains的支持問題。是否有可能將Antlr目標的輸出路由到源目錄而不是中間目錄?是否需要更改Antlr4目標,或者目標上是否已有屬性? –