我有一個很大的語法文件,並計劃將其拆分爲多個文件,以便我可以在另一個語法文件中重用這些較小的文件。我嘗試過,但失敗了。你能否告訴我們這個功能是否可用,如果有的話,請直接給我一個例子。如何將ANTLR語法文件拆分爲多個文件
1
A
回答
1
你沒有提到ANTLR版本,所以我打算假設你正在使用當前版本 - 4.x. 在ANTLR4語法中,可以使用import
關鍵字導入語法。 事情是這樣的:
文件:CommonLexerRules.g4
lexer grammar CommonLexerRules;
ID : [a-zA-Z]+ ;
...
文件:MyParser.g4
grammar MyParser;
import CommonLexerRules; //includes all rules from lexer CommonLexerRules.g4
...
規則從進口文法「主語法」覆蓋規則來實現繼承。 在此處查看更多詳細信息:https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Grammar+Structure#GrammarStructure-GrammarImports
0
如果要分割詞法分析器和分析器。
詞法:
lexer grammar HelloLexer;
Hello : 'hello' ;
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
分析器:
parser grammar HelloParser;
options { tokenVocab=HelloLexer; }
r : Hello ID ;
記住命名文件HelloLexer.g4和HelloParser.g4
如果要導入整個語法,那麼你應該使用導入關鍵字
grammar Hello;
import OtherGrammar;
Hello : 'hello' ;
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
r : Hello ID ;
+1
不應該是'import HelloParser;'? – Boriel
相關問題
- 1. 將applicationContext拆分爲多個文件
- 2. 將XML拆分爲多個xml文件
- 3. 將XSLT拆分爲多個HTML文件
- 4. 將路線拆分爲多個文件
- 5. 將xpo拆分爲多個xpo文件
- 6. 將活動拆分爲多個文件
- 7. Grails - 將Config.groovy拆分爲多個文件
- 8. 將views.py拆分爲多個文件
- 9. 如何將分隔符上的文本文件拆分爲多個文件?
- 10. 將csv文件拆分爲多個部分,複製頭文件
- 11. 將文本文件拆分爲多個文件C++
- 12. 將大文本文件(大約50GB)拆分爲多個文件
- 13. 根據模式將一個文件拆分爲多個文件
- 14. 將單個文件拆分爲多個文件
- 15. Unix拆分功能將文件拆分成多個文件:拆分記錄
- 16. 將輸入文件拆分爲多個文件
- 17. 將dmp文件拆分爲多個dmp文件?
- 18. 根據閾值將XML文件拆分爲多個文件
- 19. 將操作文件拆分爲多個文件
- 20. 將大型JSON文件拆分爲多個文件
- 21. 根據變量內容將文件拆分爲多個文件
- 22. Spark根據字段將文件拆分爲多個文件夾
- 23. 是否可以將xslt文件拆分爲多個文件?
- 24. 根據ID將JSON文件拆分爲多個JSON文件?
- 25. 將TIFF文件拆分爲多個文件
- 26. 如何將數據文件拆分爲多個部分以及每個拆分文件中的註釋?
- 27. 在Flex中將多個文件拆分成多個文件?
- 28. 主機文件ANTLR語法
- 29. Antlr 4 C#語法文件
- 30. 將文件拆分爲文件夾
是的,我使用的版本是antlr4.5-opt。當我嘗試在主語法中引用導入語法中的規則時,我收到以下錯誤消息:對未定義規則的引用:temp_rule(com.tunnelvisionlabs:antlr4-maven-plugin:4.5:antlr4:default:generate-sources ) –
儘量減少導入的和主要的語法文件到絕對最小值,只是爲了演示錯誤,並在原始問題中添加文件內容 – user3890638