class ProgramNode { public: // манипулирование узлом программы virtual void GetSourcePosition(int& line, int& index); // ... // манипулирование потомками virtual void Add(ProgramNode*); virtual void Remove(ProgramNode*); // ... virtual void Traverse(CodeGeneratork); protected: ProgramNode(); };