Проблема с передачей параметров для stringtemplate

Учитывая эти правила:

 defServ: 'service' path bodyServ? SEP ->Serv(....);

 path: t+=ID ('/' t+=ID)* ->path(...);

Спрашиваю, как можно передать список токенов "t" в шаблон "Серв"?

Простейшим решением было бы поставить производство pathServ в defServ, то есть:

   defServ: 'service'  t+=ID ('/' t+=ID)* bodyServ? SEP ->Serv(a={$t}, ...);

лучшее решение?

Спасибо


person kafka    schedule 24.05.2011    source источник


Ответы (1)


Tanuzzo88 написал:

Я спрашиваю, как можно передать список токенов "t" в шаблон "Serv"?

Конечно, попробуйте это:

defServ
  :  'service' path bodyServ? SEP -> Serv(a={$path.ids})
  ;

path returns [List ids]
  :  t+=ID ('/' t+=ID)* {$ids = $t;}
  ;
person Bart Kiers    schedule 24.05.2011
comment
спасибо за ответ, единственное, чего не хватает '$' в действии пути правила... :-) - person kafka; 25.05.2011
comment
Разве {$ids = $t;} и {ids = $t;} не работают? Пока не могу проверить... Изменил на $..., чтобы быть уверенным. Спасибо. - person Bart Kiers; 25.05.2011