Семантический анализатор деревьев AST - PullRequest
2 голосов
/ 31 августа 2011

Последние узлы дерева AST должны иметь информацию о передаче семантического анализатора, или не последние узлы также могут иметь эту информацию?

Ответы [ 3 ]

3 голосов
/ 31 августа 2011

Ваш вопрос, кажется, не совсем правильно сформулирован.

В предположении вы имеете в виду "листовые узлы", где вы написали "последние узлы", да, вы можете ассоциировать семантическую информацию не только с листьями, но и с внутренними узлами.

Простым примером будет «тип этого выражения». Понятно, что конечный узел, содержащий литерал TRUE, будет иметь связанный с ним тип выражения «логический». Выражение «if e затем 2.7, иначе 9.3 endif» имеет соответствующий AST, а внутренний узел, соответствующий выражению if, будет иметь связанный тип «float».

Существует множество «семантических» свойств, которые можно предложить: «использует переменные X, Y, Z», «не имеет побочных эффектов», «создает параллельные подпроцессы» и т. Д., Любое из которых может применяться к внутренним узлам дерева.

0 голосов
/ 02 сентября 2011

Все деревья AST должны хранить семантическую информацию.

Но это правда, что «конечные узлы» (узлы, которые ссылаются на переменные, значения, операнды) могут хранить некоторую дополнительную или иную информацию, чем «ветви-узлы» или «неконечные узлы».

0 голосов
/ 31 августа 2011

Если я правильно понимаю ваш вопрос, в AST внутренние узлы могут также нести семантическую информацию, а также листовые узлы.

...