LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

stmt1; stmt2; stmt3; stmt4

это список, а не дерево. abstract syntax tree никакое не бинарное дерево, а структура с нодой вида, порождающей список.

struct NodeBase {
  NodeBase *_next; //следующий
}

и нодой с чайлдами, для описания внутренней структуры данной ноды, если она есть.

struct NodeChilds: public NodeBase {
  NodeBase *_childs; //первый локальный
}

и вложенность AST будет примерно равна синтаксической вложенности вашего текста…

в вашем случае вложенности нет вообще, это последовательный список операторов.

обычно вложенность не превышает и 10.

чтобы породить сильно вложенное AST надо написать примерно так

struct A{
  struct {
    struct {
    ....
    } b
  } c;
}

Исправление alysnix, :

stmt1; stmt2; stmt3; stmt4

это список, а не дерево. abstract syntax tree никакое не бинарное дерево, а структура с нодой вида, порождающей список.

struct NodeBase {
  NodeBase *_next; //следующий
}

и нодой с чайлдами, для описания внутренней структуры данной ноды, если она есть.

struct NodeChilds: public NodeBase {
  NodeBase *_childs; //первый локальный
}

и вложенность AST будет примерно равна синтаксической вложенности вашего текста…

в вашем случае вложенности нет вообще, это последовательный список операторов.

обычно вложенность не превышает и 10.

Исходная версия alysnix, :

stmt1; stmt2; stmt3; stmt4

это список, а не дерево. abstract syntax tree никакое не бинарное дерево, а структура с нодой вида, порождающей список.

struct NodeBase {
  NodeBase _next; //следующий
}

и нодой с чайлдами, для описания внутренней структуры данной ноды, если она есть.

struct NodeChilds: public NodeBase {
  NodeBase *_childs; //первый локальный
}

и вложенность AST будет примерно равна синтаксической вложенности вашего текста…

в вашем случае вложенности нет вообще, это последовательный список операторов.

обычно вложенность не превышает и 10.