我一直在嘗試最近使用Treetop爲我的客戶之一創建CFG DSL語言的簡單解析器。我成功地實現了他所需的所有功能,但與Treetop一起工作竟然是相當痛苦的經歷。提供無用輸出的Treetop解析器錯誤處理機制
問題是我無法從Treetop獲得任何可用的錯誤消息。我得到的唯一輸出是
parser.rb:22:in `parse': Parser error at offset: 0 (Exception)
Error:
#<TranLanParser:0x007f960c852f60>
from parser.rb:28:in `<class:Parser>'
from parser.rb:10:in `<main>'
它總是指向文件中的第一個字符。在解析語言中發現任何錯誤真的很糟糕。如果我找不到任何問題,我該如何逐步開發解析器?
我試圖改變我的語法來包含遞歸規則,因爲我認爲這將幫助解析器儘快創建AST節點,但它沒有幫助。我的問題是: 我做錯了什麼?有沒有什麼好的例子來說明如何爲Treetop創建PEG語法,它可以在部分派生的樹上提供有意義的錯誤消息?或者它是Treetop庫中的錯誤/錯誤?
感謝您的意見。
謝謝,這真的很有幫助。看來,failure_rason提供了一些更好的信息。 –