stringtemplate的参数传递问题

时间:2011-05-24 21:04:32

标签: 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}, ...);

更好的解决方案?

谢谢你

1 个答案:

答案 0 :(得分:1)

  

Tanuzzo88写道:

     

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

当然,试试这个:

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

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