簡體   English   中英

測試ANTLR語法

[英]Testing ANTLR Grammar

所以我一直在使用ANTLR v3.4在Eclipse中制作語法,我已經制作了一個可行的語法,我想確保在編輯它時一切仍然有效。 我每次都可以進入解釋器,但這似乎是浪費時間。

問題:我已經閱讀了關於gunit但是下載gUnit的鏈接:( http://antlr.org/hudson/job/gUnit/org.antlr $ gunit / lastSuccessfulBuild /)不起作用。 我怎樣才能獲得gUnit。 測試語法的最佳方法是什么? 它實際上是gUnit還是我應該像jUnit測試一樣進行java測試?

我最近使用Eclipse完成了兩項ANTLR3任務(我正在攻讀計算機科學碩士學位)。 我發現沒有一個文檔有一個在Eclipse中安裝,配置,編寫和調試語法的過程。 因此,在解決了各種問題之后,我發現最簡單的事情就是留在Eclipse中進行測試。

要使用我開始使用的過程(如下所述),您必須先安裝ANTLR IDE v2.1.2。 從Eclipse Indigo中添加它: http//antlrv3ide.sourceforge.net/updates 該站點還有一些關於使用ANTLR IDE的有用文檔。 安裝后,必須配置IDE。 視頻教程有點過時但很有幫助。 查看有關如何在Eclipse中配置ANTLR IDE的詳細指南。 主要配置項是java輸出文件夾。 在Eclipse中執行此操作,方法是轉到Windows,首選項,ANTLR,代碼生成器,檢查項目相關文件夾,然后在輸出文件夾名稱框中鍵入文件夾名稱(我的名稱為“antlr-java”,其他人使用“generated”)。

使用ANTLR IDE在Eclipse Indigo中測試/調試ANTLR的過程

  1. 創建新項目后,右鍵單擊它,選擇配置,轉換為ANTLR項目...
  2. 在.g文件中創建語法並保存。 注意:filename必須匹配語法名稱。
  3. 如果存在重大錯誤,請調試語法。 Eclipse顯示ANTLR錯誤以及受影響的行。 起初,這些錯誤似乎很難理解,但它們可以通過使用各種資源來解決: - Terence Parr的最終ANTLR參考編寫ANTLR的人 - ANTLR參考手冊 - 谷歌錯誤; 很多時候你會在stackoverflow結束這里; 特別是Bart Kiers既知識淵博又樂於助人(Bart:thx因為你不知道你給我的幫助)
  4. 在解決嚴重的ANTLR錯誤后的第一次保存中,將創建在Eclipse中配置的java輸出文件夾,並且還將創建該文件夾中的java文件。
  5. 右鍵單擊java輸出文件夾,選擇Build Path,Use As a Source Folder。 這告訴Eclipse在哪里查找項目的java源代碼。
  6. 新的java文件中可能存在錯誤。 選擇它,然后搜索查找java錯誤。 回到你的語法或java文件,糾正錯誤,並重新保存語法,直到語法和java文件都沒有錯誤,然后運行它。
  7. 從現在開始,這是通常的修改運行調試周期。
  8. 我需要的唯一其他Eclipse更改是創建一些運行配置來測試命令行參數。

問題是陳舊的,但我要留下完整性的參考:

對我來說,gUnit毫無用處。 所以我設法找到了如何只測試Lexer然后只測試解析器。

我在這里回答: https//stackoverflow.com/a/53884851/976948

基本上,有2篇文章的鏈接有關如何測試它:

你可以在那里下載gUnit 但我認為沒有最新版本......

試試Jarvana ...最新版本有3.4: http//repo1.maven.org/maven2/org/antlr/gunit/3.4/gunit-3.4.jar

@Dave Newton是對的。 由於ANTLR V3.1中,gUnit包括在ANTLR工具主要水瓶中陳述存在


到目前為止我還不知道gUnit。 它看起來很適合語法測試,但我認為JUnit測試將完成他們的工作......

這是我第一次聽說gUinit並閱讀它。 (我不太使用ANTLR。)聽起來很有趣,但是一半沒用。

我驗證語法的方法是用“正常”單元測試來實際驗證整個解析器。 問題是,無論如何你都應該進行單元測試,檢查語法回歸的測試只需將其添加到那里。 根據我的經驗,大多數錯誤都來自語義分析和縮減,而不是語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM