2017-02-22 25 views
0

Вот изображение того, что я описываю: enter image description here Вопрос в том, что в абстрактном синтаксическом дереве, если у узла IF есть огромное количество ветвей? Представьте себе узел IF, который напрямую связан сотнями операторов. Он чувствует себя не так и выглядит совершенно нелепо в визуальной форме. Это правильное образование АСТ, или я ошибаюсь?В AST, должны ли IF-узлы иметь огромное количество ветвей?

+0

Является ли это 'if ((a> b) и (a = c))'? Это 'и' или 'или'? Откуда у вас этот образ? Это выглядит неправильно. АСТ 'if' подобен' [if] [1: condition] [2: if-body/true-body] [3: else-body/false-body] '. См. Wiki [статья] (https://en.m.wikipedia.org/wiki/Abstract_syntax_tree#/media/File%3AAbstract_syntax_tree_for_Euclidean_algorithm.svg) – inquisitive

+0

Я сделал это. Это должно быть: if (a> b) {a = c; весело (с); otherstuff} Я не был уверен, как это должно быть, поэтому я задал этот вопрос ... должно ли тело иметь сотни узлов, подключенных к нему слева направо в порядке выполнения, или? – Accumulator

ответ

0

Попробуйте это так. Это то, что вы получаете, когда используете что-то вроде CodeDOM.

AST of if (a > b) {a = c; fun(c); otherstuff}

Практически TrueBody и FalseBody будет у каждого есть один единственный ребенок - StatementGroup. Это, в свою очередь, будет иметь столько же детей, сколько в этом блоке. Аналогично, если существует несколько условий /or, то узел Condition будет иметь один единственный узел, например, AndCondition с таким количеством детей, как есть предложения.

 Смежные вопросы

  • Нет связанных вопросов^_^