История изменений
Исправление 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.