LINUX.ORG.RU

Философский вопрос: почему буржуи почти все внутренние структры данных, используемые в трансляторах называют ASТ ?


0

0

Несмотря на то, что обычно эти структуры не имеют никакого отношения:

а) к деревьям

б) к синтаксису

Например, структуры из tree.h в GCC. Там синтаксисом даже не пахнить, тем не менее во многих источниках оно именуется именно AST.

Ответ на: комментарий от DonkeyHot

И как (AS)T на русский перевести ? Дерево абстрактного синтаксиса или дерево в абстрактно-синтаксической нотации ?

Может у меня голова работает не так как у буржуя, но аналогии прослеживаются еще хуже нежели при A(ST). Потом, причем тут дерево вообще ?

Термин "внутреннее представление" звучит куда лучше имхо.

BottleHunter
() автор топика

Синтаксис не обязательно должен иметь текстовое отражение. Любое дерево, любой граф, используемый для представления промежуточной формы кода, это абстрактный синтакс. Ну а то, что в большинстве случаев это всё же дерево - думаю, очевидно. Графы там возникают редко, и они имеют отношение больше к environment, чем к AST.

Я не буржуй, но мне никогда и в голову не приходило называть такие структуры иначе, чем AST.

anonymous
()
Ответ на: комментарий от BottleHunter

И что окончательно меня запутало:

http://en.wikipedia.org/wiki/Abstract_syntax_tree

и

http://en.wikipedia.org/wiki/Abstract_semantic_graph

На практике часто речь идет именно о 2-м, но используется для обозначения 1-й термин.

BottleHunter
() автор топика
Ответ на: комментарий от BottleHunter

>И как (AS)T на русский перевести ? Дерево абстрактного синтаксиса

ИМО пойдет.

>аналогии прослеживаются еще хуже нежели при A(ST)

Отличие от предыдущего варианта как раз в том, что последнее подразумевает наличие синтаксиса и "абстрактность" дерева, а первое - наоборот. Т.е. в (AS)T синтаксис абстрактен (An abstraction is an idea, concept, or word) - т.е. синтаксис там "условный".

>Термин "внутреннее представление" звучит куда лучше имхо.

Если внутреннее представление 1. имеет древовидную структуру и 2. обобщено(абстрагировано от конкретики) описывает некий синтаксис - то его совсем логично так и называть - AST.

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

> И чаще всего это таки дерево, а не граф

Смотря для каких целей. Если речь идет о дереве как продукте синтаксического разбора, то да - тут как правило дерево и как раз дерево астрактного синтаксиса. Если мы копаем глубже, начинаем разбираться в информации близкой к семантике, то получаем как правило граф, в котором вершины - семантические элементы программы, такие как объявления переменных, функций, типов данных, описание собственно типов данных и т.д. А дуги - "разносортные" отношения между элементами. Реально это получается ацкий клубок. Например, в GCC в структурах tree_* описан именно этот клубок. Другое дело что в основе этого клубка может лежать остовное дерево, построенное например на иерархии облостей видимости как например в Си++, но это уже зависит от реализации.

BottleHunter
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.