1

我发现自己想写<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()>)>"
4

0 回答 0