В схеме CapnProto есть какой-либо способ для прямого объявления структур, поэтому вы можете создать древовидную структуру, например:
struct ExecuteProgram {
code @0 :Text;
}
struct SequenceProgram {
programs @0 :List(Program)
}
struct IfProgram {
condition @1 :Program;
trueBody @2 :Program;
falseBody @3 :Program;
}
struct Program {
union {
execute @0 :ExecuteProgram;
sequence @1 :SequenceProgram;
if @2 :IfProgram;
}
}
Если я попытаюсь скомпилировать это, компилятор выдаст очень полезное сообщение об ошибке Parse error
.Я предполагаю, что это жалоба, потому что я использую Program
до того, как оно будет объявлено.
Есть ли способ обойти это?