我有一个很大的语法文件,并计划将其拆分为多个文件,以便我可以在另一个语法文件中重用这些较小的文件。我尝试过,但失败了。你能否告诉我们这个功能是否可用,如果有的话,请直接给我一个例子。如何将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