Возврат нескольких значений в правиле ANTLR - PullRequest
7 голосов
/ 17 июля 2010

У меня есть правило ANTLR, подобное этому

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

Я добавил новое ответное сообщение и хочу поместить в него содержимое файла. Один из способов, который я мог бы сделать, - это заставить оценщик возвращать строку при обходе дерева, вызывая методvalu ().

Мне было интересно, смогу ли я сделать это сразу, но не знаю, как установить несколько возвращаемых значений и получить к ним доступ позже.

Спасибо Хари

1 Ответ

7 голосов
/ 17 июля 2010

Вот как установить и использовать несколько возвращаемых значений:

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...";
     }
  ;
...