在ANTLR规则中返回多个值

Har*_*ari 7 antlr

我有这样的ANTLR规则

receive returns[Evaluator e,String message]
  : RECEIVE FILENAME {$e= new ReceiveEvaluator($FILENAME.text);}
  ;
Run Code Online (Sandbox Code Playgroud)

我添加了一条新的返回消息,我想将文件内容放入其中.我可以做的一种方法是,当我通过调用evaluate()方法遍历树时,求值程序返回String.

我想知道我是否可以在这里做得很直接 - 但我不知道如何设置多个返回值并在以后访问它们.

谢谢哈里

Bar*_*ers 7

以下是设置和使用多个返回值的方法:

parse
  :  r=receive {
       Evaluator e = $r.evaluator;
       String m = $r.message;
     }
  ;

receive returns[Evaluator evaluator, String message]
  :  RECEIVE f=FILENAME {
       $evaluator = new ReceiveEvaluator($f.text);
       $message = "Some message here...";
     }
  ;
Run Code Online (Sandbox Code Playgroud)