我发现自己想写<prop1.subprop1:sometemplate>
将模板应用于属性的属性列表。为此,我必须创建两级模板:我必须在 prop1 上调用外部模板,然后让它处理下一个属性。
数据模型:
class Clazz {
String name;
Class parent;
}
目标:
class(c) ::= <<
<c.parent.name> <! oops, not allowed !>
>>
所以我最终得到
<c.parent:{ p | <p.name> }>
这有点笨拙。
然后我得到了这个:
class Attr {
List<String> requiredParameters;
Attr baseObject;
}
我想生成:
def __init__(self, reqparam1, ... rewqparamN)
其中第一个“reqparam”来自最深的项目。我尝试编写以下内容,但 ST 在我尝试递归构建列表的第二个模板中给了我语法错误。
self_and_list(list) ::= << self<if(first(list))>, <endif><list;separator=", "> >>
recurse_req(attr) ::= "<[<attr.baseObject:recurse_req()>, <attr.requiredParameters>]>"
self_and_req_params(attribute) ::= "<self_and_list(<attribute:recurse_req()>)>"