什麼是和如何在antlr3中使用「島語法」?Island語法antlr3
2
A
回答
1
嗯,我不知道你的意思到底是什麼,但因爲你沒有提到你寫的是什麼,到目前爲止我從這裏開始:
http://www.antlr.org/wiki/display/ANTLR3/Island+Grammars+Under+Parser+Control
4
一個島嶼語法是一個對待大部分語言都是文本(「水」),並挑選出部分感興趣的語言來使用語法規則(「島」)進行解析。例如,你可以選擇構建一個孤島語法來挑選在C#程序中找到的所有表達式,並忽略變量/方法/類聲明和語句語法(if,while,...)。
真正的問題是,「你應該使用島語法嗎?」。
的正面效益:
- 你不必爲你寫要處理的語言一個完整的,完整的語法。
缺點:
它並不總是很容易挑出感興趣的源的一部分。例如, 您如何確保孤島語法不會挑出被註釋掉的代碼塊,除非您的島語法詳細解釋了所有註釋?島語法的要點是避免進入這種細節,但在這裏你必須。
您現在只能使用孤島語法來關注問題。如果問題出現了,那麼你的島語法也可能不得不改變,而這並不容易。
程序操作中最有趣的問題要求您不僅能夠確定語法(例如「解析」)並構建某種樹來操作,而且還能夠確定符號的含義。用島嶼語法,你已經有效地寫下了這樣做的可能性(除非你想包括塊,聲明等的所有語法...... oops突然間它不是島語法,而是一個小的大陸語法) 。而那真的限制你可以做的。
打電話給我偏見,但我一直在做這種東西很長一段時間。我相信島語法確實沒有那麼有用。我提出的替代方案是基於共同基礎的許多語言的攤銷成本解析器,其名稱爲DMS Software Reengineering Toolkit。
YMMV。
相關問題
- 1. ANTLR3語法參考?
- 2. ANTLR4:Island語法,令牌匹配/跳過
- 3. Procedural Island Generation confusion
- 4. ANTLR3詞法優先
- 5. 樹重寫語法中的ANTLR3語義謂詞
- 6. 在antlr3語法中切換詞法分析器狀態
- 7. 重用ANTLR3詞法和語法分析器
- 8. 查找Replica Island的項目
- 9. 返回默認模式使用Island語法而不使用令牌
- 10. 在antlr3語法中打印傳入的令牌?
- 11. ANTLR3語法在ICSharpCode.TextEditor中突出顯示隱藏通道
- 12. 在antlr3中從語法到Java拋出錯誤
- 13. 添加對Antlr3語法的引用字符串支持
- 14. 是否可以將ANTLR3語法轉換爲正則表達式?
- 15. 用C語言中的antlr3解析一些特定的語句
- 16. antlr3 NOT規則
- 17. ANTLR3動態報價在詞法
- 18. ANTLR3樹語法:循環沒有匹配任何東西在輸入'EOF'
- 19. 如何擺脫我的ANTLR3語法中的以下多個替代警告?
- 20. 從stringstream創建一個antlr3輸入流? (antlr3 C-目標)
- 21. 獲取語義的複合規則的ANTLR3
- 22. ANTLR3解析表達式
- 23. Antlr3匹配lexeme變體
- 24. 從Antlr3轉換爲Antlr4
- 25. 如何禁用錯誤antlr3
- 26. 如何使用Antlr與antlr3
- 27. Antlr3,C#和VS 2012快
- 28. 如何ANTLR2改變ANTLR3
- 29. antlr3 c#代碼生成
- 30. 如何序列化antlr3 AST