我正在使用 Antlr 4 RC1(完整的 jar)来解析语法,构建自定义 ast,并使用 stringtemplate4 从该 AST 生成代码(我使用 antlr jar 中的 stringtemplate 类)。在模板中,我调用另一个带有 bean 列表的模板,例如
<subtemplate(myListArg=parm.listOfBeans)>
然后在子模板中我得到一个字符串列表(每个字符串都是评估为字符串的 bean 之一)。但我需要的是 java bean 的列表(例如带有属性的简单 java 对象),因为我想处理 bean 的属性而不是 bean 的值,例如
<subtemplate(myListArg)> ::= <<
<myListArg: {x | {... <x.someProperty> ...}>
>>
在我看来,模板的参数总是被评估为字符串。这是预期的行为吗?如果是,我还应该写什么?