2015-08-31 35 views
2

我想解析句子"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

+0

为什么你要在语法中做到这一点?为什么不解析'language'(在这个例子中是一个单一的标记作为字符串)并让程序使用输入文件来检查,如果语言是否被支持?再加上一个动作,你可以在你的语法中确保这个检查。 – BeyelerStudios

回答