antlr从文件中读取语法标记
问题描述:
我想解析句子"i am looking for a java developer"
。我需要的输出是language=java.
antlr从文件中读取语法标记
我创建了如下的语法文件。
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')+
;
在这里,规则language
我努力编码一组的语法文件本身的内部语言。是否可以从文件中读取语言并相应地处理语法? 输入文件应该是这样的
languages.txt
java
python
cpp
我使用antlr 4.5.1-1
。
答
不太清楚,如果这完全满足了你的问题,但考虑复合语法:
https://theantlrguy.atlassian.net/wiki/display/ANTLR3/Composite+Grammars
如果你真的需要它是在一个文件中,可以考虑创建一个处理/修建从语言的一步。 txt到languages.grammar,并使用languages.grammar作为复合。
为什么你要在语法中做到这一点?为什么不解析'language'(在这个例子中是一个单一的标记作为字符串)并让程序使用输入文件来检查,如果语言是否被支持?再加上一个动作,你可以在你的语法中确保这个检查。 – BeyelerStudios