antlr从文件中读取语法标记
我想分析句子“我正在寻找一名java开发人员”。我需要的输出是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
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')+
;
这里,在rulelanguage
中,我在语法文件本身中硬编码一组语言。是否可以从文件中读取语言并相应地处理语法?
输入文件应该是这样的
语言.txt
java
python
cpp
我使用的是
antlr 4.5.1-1
不太确定这是否完全满足您的问题,但请查看复合语法:
如果你真的需要把它放在一个文件中,考虑创建一个从语言到TXT到语言的处理/构建步骤。语法和使用语言。语法是复合的。
为什么你要在语法中这样做?为什么不解析语言
(在本例中,单个标记作为字符串)并让程序使用输入文件检查该语言是否受支持?通过一项行动,您可以确保从语法中进行检查。