Templates stringtemplate的参数传递问题

Templates stringtemplate的参数传递问题,templates,antlr,antlr3,stringtemplate,Templates,Antlr,Antlr3,Stringtemplate,鉴于这一规则: defServ: 'service' path bodyServ? SEP ->Serv(....); path: t+=ID ('/' t+=ID)* ->path(...); 我问,你可以把令牌列表“t”传递给模板“Serv”吗 最简单的解决方案是将pathServ的产品放在defServ中,即: defServ: 'service' t+=ID ('/' t+=ID)* bodyServ? SEP ->Serv(a={$t}, ...);

鉴于这一规则:

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

 path: t+=ID ('/' t+=ID)* ->path(...);
我问,你可以把令牌列表“t”传递给模板“Serv”吗

最简单的解决方案是将pathServ的产品放在defServ中,即:

   defServ: 'service'  t+=ID ('/' t+=ID)* bodyServ? SEP ->Serv(a={$t}, ...);
更好的解决方案

谢谢

塔努佐写道:

我问,你可以把令牌列表“t”传递给模板“Serv”吗

当然,试试这个:

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

path returns [List ids]
  :  t+=ID ('/' t+=ID)* {$ids = $t;}
  ;

感谢您的回答,在规则路径的操作中唯一缺少“$”的是…:-)
{$id=$t;}
{id=$t;}
这两种方法都有效吗?但目前无法测试它。。。请将其更改为
$…
。谢谢