我想使用Antlr4解析我的C#應用程序中的一些文件。根據我的語法,我已經能夠生成解析器和詞法分析器文件。現在我想使用讀取文件並將解析器和詞法分析器應用於它們。我一直在尋找關於如何做到這一點的文檔,但是我很短。我發現了一些使用舊版Antlr的舊例子,但它們似乎不適用於Antlr4。任何幫助,將不勝感激。謝謝。Antlr4 C#應用程序教程/示例
12
A
回答
10
嘗試
using (StreamReader fileStream = new StreamReader(fileName)) {
AntlrInputStream inputStream = new AntlrInputStream(fileStream);
SearchLexer lexer = new SearchLexer(inputStream);
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
SearchParser parser = new SearchParser(commonTokenStream);
parser.RemoveErrorListeners();
parser.AddErrorListener(new ErrorListener()); // add ours
parser.root();
}
22
- 在Visual Studio中,去工具 - >擴展和更新,並搜索「ANTLR語言支持」由山姆·哈威爾的在線部分。對於合併語法
- 再添模板:更多信息可以在GitHub project site
- 這做了幾件事情被發現。
- 添加語法高亮
- 爲文法添加一個MSBuild目標以生成解析器。
- 再添模板:更多信息可以在GitHub project site
- 在您的解決方案,建立項目結構是這樣的:
- 解決方案
- GrammarProject
- Calculator.g4
- ImplementationProj ECT
- GeneratedFiles(此文件夾中的所有文件添加鏈接位於GrammarProject文件\ OBJ \調試)
- CalculatorBaseListener.cs
- CalculatorBaseVisitor.cs
- CalculatorLexer.cs
- CalculatorListener.cs
- CalculatorParser.cs
- CalculatorVistor.cs 個
- MyCalcualtorImplementation.cs
- GeneratedFiles(此文件夾中的所有文件添加鏈接位於GrammarProject文件\ OBJ \調試)
- GrammarProject
- 解決方案
- 編寫和編譯你的語法。
- 在鏈接到生成文件的文件夾中,右鍵單擊該文件夾並單擊添加 - >現有項目
- 瀏覽到Grammar Project \ obj \ Debug並選擇所有生成的解析器文件。
- 下一步很重要。在添加按鈕上有一個下拉箭頭。點擊下拉箭頭,然後點擊「添加爲鏈接」。
- 這將使用符號鏈接而不是直接複製將生成的文件添加到實施項目。
- 如果您稍後必須更改語法,則可以不必刪除和重新添加解析器文件就可以獲得額外的好處。
- 一旦你已經遠遠得到這一點,那麼你可以從GrammarProject.CalculatorBaseListener或GrammarProject.CalculatorBaseParser取決於什麼樣的發展模式已決定使用繼承。
作爲附註,Terence Parr的"The Definitive ANTLR 4 Reference"是理解ANTLR4的工作方式和差異開發模式的極好資源。所有的例子都是用java編寫的,但這些概念同時適用於Java和C#。
0
這裏有ErrorListener樣本
public class ErrorListener : BaseErrorListener
{
public void SyntaxError(IRecognizer recognizer, int offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e)
{
Console.WriteLine("{0}: line {1}/column {2} {3}", e, line, charPositionInLine, msg);
}
}
相關問題
- 1. Rails教程示例應用程序6.26
- 2. TPL + C++/CLI:教程,示例
- 3. iOS中的分層應用程序示例應用程序/教程
- 4. GRIDFS驅動程序和示例教程
- 5. Spotify教程示例應用程序空白
- 6. 哪個因子GUI教程/示例應用程序?
- 7. TwitPic API的完整教程和示例應用程序
- 8. 有沒有人有C#示例應用程序和教程的TSAPI?
- 9. Restlet教程示例
- 10. UIManagedDocument示例/教程
- 11. msdn「Direct3D教程Win32示例」教程2
- 12. c#2008示例窗口應用程序
- 13. 示例開源C#/ WPF應用程序
- 14. C#Microsoft Office Developer幫助,教程,示例
- 15. 用例教程
- 16. UX Web應用程序示例示例
- 17. Rails的教程11.4.1 - 擴展到示例應用程序示範庫
- 18. 春示例應用程序
- 19. Azure示例應用程序
- 20. MPL示例應用程序
- 21. OpenSSO示例應用程序?
- 22. barcodereader示例應用程序
- 23. 示例rhomobile應用程序
- 24. Struts2應用程序示例
- 25. 示例twitter應用程序
- 26. 示例Ruby應用程序
- 27. YUI3示例應用程序
- 28. SCORM 1.2 API示例/教程
- 29. TopLink的示例和教程
- 30. Ember.js的教程和示例?
是否有適用於Visual Studio 2015年更新?到目前爲止,我一直無法在2015年安裝ANTLR語言支持,並且還沒有成功實現它的手動操作方式(該項目的文檔將引導您完成2015年無法工作的先前版本) – Brandon
優秀。得到它在VS2015工作。 –
如何編譯語法?我編譯該項目,但在obj目錄中沒有cs文件。 – Exerion