Antlr4从路径导入语法

时间:2014-09-05 23:55:16

标签: antlr antlr4

我到目前为止认为答案的简单问题是否定的:

是否可以从子目录导入语法? e.g:

grammar literals;

import myFolder/IntegerLiterals;

具有以下结构:

/ 
 literals.g4
 myFolder/
    IntegerLiterals.g4

2 个答案:

答案 0 :(得分:2)

示例回购中有ANTLR 4 grammar written in ANTLR 4

让我们仔细看看:

delegateGrammars
    :   IMPORT delegateGrammar (COMMA delegateGrammar)* SEMI
    ;

delegateGrammar
    :   id ASSIGN id
    |   id
    ;

id  :   RULE_REF
    |   TOKEN_REF
    ;

所以,看起来答案真的不是,因为你不能把目录分隔符放在那里。文件名必须是有效的规则/令牌名称。

答案 1 :(得分:0)

我遇到了同样的问题,找到了这个网站,但没有解决方案。经过更多的谷歌搜索后,我找到了解决此问题的方法:

实际上,现在有一种方法可以从其他目录导入语法:

在运行antlr时使用-lib选项来定义要导入的语法。这是这些选项的文档:https://github.com/antlr/antlr4/blob/master/doc/tool-options.md

因此,您编写语法:

grammar literals;
import IntegerLiterals;

然后您在命令行中运行:

antlr4 -lib C:/.../myFolder literals.g4