спецман и цикл макросов

я пытаюсь написать макрос (не вычисляемый), который определяет экземпляры с циклом, например, если бы это был вычисляемый макрос, это было бы:

define <def_struct'statement> "def_struct <str_name'name> <number'num> to <other'name>" as computed {

         result.add(appendf("extend %s { ", <other'name> ) );
                 for i from 0 to <number'num> do {
                    result.add(appendf("%s_%d : %s;", <str_name'name> ,i,<str_name'name> ));
                 };
          result.add("};"); }

можно ли сделать то же самое с макросом, который не является вычисляемым макросом??

У меня, вероятно, что-то не так с синтаксисом, но посмотрите на идею..


person shd    schedule 24.06.2011    source источник


Ответы (1)


В вашем примере computed as вы создаете кучу экземпляров одного и того же класса. Почему бы не создать экземпляр списка структур?

myStructs : list of MyStruct_s;

Если вам нужно, вы можете ограничить каждый элемент в списке на основе индекса, например:

keep for each (s) using index (i) in myStructs {
    i==0 => s.fooBar == BAZ;
    s.name == appendf("this is struct %d",i);
};
person Ross Rogers    schedule 24.06.2011
comment
причина истории, я должен оставить это так, я не могу сломать интерфейс - person shd; 24.06.2011
comment
Для стыда. Я копаю. Я знаю только, как это сделать as computed способом. - person Ross Rogers; 25.06.2011