0
我想解析句子"i am looking for a java developer from india"
。 我需要的輸出是language = java和place = indiaantlr返回值作爲鍵值
我創建瞭如下的語法文件。
grammar Job;
eval returns [String value]
: output=jobExp {System.out.println($output.text); $value = $output.text;}
;
jobExp returns [String value]
: ind=indro whitespace var1=language ' developer from ' var2=place
{
System.out.println($var1.text);
System.out.println($var2.text);
$value = $var1.text+$var2.text; }
;
indro
:
'i am looking for a'
|
'i am searching for a'
;
language :
'java' | 'python' | 'cpp'
;
place :
'india' | 'america' | 'africa'
;
whitespace :
(' '|'\t')+
;
內jobExp
我得到了place
和language
值。而我只是返回這兩個變量。但在eval
我得到了整個句子(我正在尋找來自印度的Java開發者)。我需要什麼來獲得eval
中的完全匹配輸出?是否有可能得到json
或hashMap
的輸出爲antlr
?
我java
類測試的語法如下:
import org.antlr.runtime.*;
public class JobTest {
public static void main(String[] args) throws Exception {
ANTLRStringStream in = new ANTLRStringStream("i am looking for a java developer from india");
JobLexer lexer = new JobLexer(in);
CommonTokenStream tokens = new CommonTokenStream(lexer);
JobParser parser = new JobParser(tokens);
System.out.println(parser.eval()); // print the value
}
}