如果語法不匹配,有沒有辦法讓perl6生成錯誤消息?或者至少返回它處理的最後一個數據的位置?如果我從解析器中得到的是'不匹配',那麼解決語法錯誤是相當困難的。perl6語法,錯誤報告
7
A
回答
11
如果您的重點是爲您的語法用戶生成消息,請參閱Generating Good Parse Errors from a Parser和Grammar::ErrorReporting。
這個答案的其餘部分是關於調試。
首先,您可以在Perl 6正則表達式中嵌入任意閉包(代碼)。 (只需在正則表達式中鍵入{ your code goes here }
)。因此,您可以將{ say ... }
聲明放在有助於調試的語句中。
但有更好的選擇。
你使用「電池包括」Rakudo星分佈? (除非你有充分的理由不這樣做)。如果是這樣,你可以添加use Grammar::Tracer;
(如幻燈片http://www.jnthn.net/papers/2011-yapceu-grammars.pdf中所述)以獲得完整的分析結果。
我個人的偏好是使用Rakudo調試器,該調試器提供Grammar :: Tracer所做的一切以及除了所有Perl 6代碼(包括正則表達式和語法)的單步執行,斷點等以外的更多功能。調試器在這個video中引入。
如果您還有其他問題,我建議您訪問始終友好的IRC channel #perl6。
相關問題
- 1. Firebug的報告CSS語法錯誤
- 2. 水晶報告語法錯誤
- 3. 是語法錯誤報告可能與boost :: xpressive語法?
- 4. Django錯誤報告簡單語法錯誤
- 5. SqlCommand.ExecuteReader無法報告錯誤
- 6. Python - 在'elif'語句中持續報告語法錯誤
- 7. openerp報告語法
- 8. perl6要替換的語法
- 9. 這是perl6語法破碎,還是在暴露一個錯誤?
- 10. GDK錯誤報告
- 11. Laravel報告錯誤
- 12. XAMPP錯誤報告
- 13. MongoDB錯誤報告
- 14. PHP報告錯誤
- 15. Python錯誤報告
- 16. GSL:錯誤報告
- 17. Bash錯誤報告
- 18. SEH錯誤報告
- 19. 報告錯誤。報告無法在CRM 2011中顯示(rsProcessingaborted)
- 20. Pyflakes報告打印命令中的語法錯誤無效
- 21. 爲什麼我的計算器總是報告「語法錯誤」?
- 22. 爲什麼RSpec在本規範中報告語法錯誤?
- 23. Antlr4,如何報告特定的語法錯誤
- 24. MS CRM 2011卷12 「語法錯誤」 時,運行任何報告
- 25. 報告語法錯誤使用register_shutdown_function不工作
- 26. mod_wsgi報告金字塔模塊中的語法錯誤
- 27. MySQL報告語法錯誤,但我沒有看到它?
- 28. bash的語法錯誤報告格式(基本)
- 29. 由JSLint報告的語法錯誤混淆
- 30. 爲什麼int a = 4i;不報告語法錯誤(C++)