antlr从文件中读取语法标记

antlr从文件中读取语法标记,antlr,antlr4,antlr3,antlrworks,antlrv3ide,Antlr,Antlr4,Antlr3,Antlrworks,Antlrv3ide,我想分析句子“我正在寻找一名java开发人员”。我需要的输出是language=java。 我创建了一个语法文件,如下所示 grammar Job; eval returns [String value] : output=jobExp { $value = $output.text;} ; jobExp returns [String value] : ind=indro whitespace var1=language ' developer' {$v

我想分析句子“我正在寻找一名java开发人员”。我需要的输出是
language=java。

我创建了一个语法文件,如下所示

grammar Job;

eval returns [String value]
    :    output=jobExp { $value = $output.text;}
    ;
jobExp returns [String value]
    :    ind=indro whitespace var1=language ' developer'  {$value = $var1.text;}
    ;

indro
    :
    'i am looking for a' |   'i am searching for a'
    ;

language :
    'java' | 'python' | 'cpp'
    ;

whitespace :
    (' '|'\t')+
    ;
这里,在rule
language
中,我在语法文件本身中硬编码一组语言。是否可以从文件中读取语言并相应地处理语法? 输入文件应该是这样的

语言.txt

 java
 python
 cpp

我使用的是
antlr 4.5.1-1

不太确定这是否完全满足您的问题,但请查看复合语法:


如果你真的需要把它放在一个文件中,考虑创建一个从语言到TXT到语言的处理/构建步骤。语法和使用语言。语法是复合的。

为什么你要在语法中这样做?为什么不解析
语言
(在本例中,单个标记作为字符串)并让程序使用输入文件检查该语言是否受支持?通过一项行动,您可以确保从语法中进行检查。