Здравствуйте, k.sid, Вы писали:
KS>Кстати, у меня возникла некая путаница в терминах: AST(Abstract Syntax Tree) и PSI(?) — это одно и тоже? А у иерархии сущностей какая аббревиатура?)
Не совсем. AST — это синтаксическое дерево, результат парсинга исходного текста.
PSI (Program Structure Interface) — Это все вместе. И AST, и "иерархия сущностей", и методы работы с ними, и т.д. Просто обобщенной название подсистемы проекта.
KS>И заодно маленько не понятно, почему я могу, допустим, поменять имя IClass-а, IMethod-а и т.д. (т.е. через иерархию сущностей), но не могу поменять их модификаторы?
Не можешь. Иерархия сущностей (IDeclaredElement) — исключительно readonly. Что-либо менять можно только в AST, что имеет прямое отражение в тексте файла. И declared element'ы из этого потом выводятся.
KS>Т.е., получается вроде как AST — это первичная вещь, а иерархия сущностей генерится с нее и будет валидна ровно до
тех пор пока AST не поменяется, вернее пока не поменяется тот узел/узлы с которых генерилась эта конкретная сущность?
Именно так. Плюс в дополнение declared element'ы генерируются из метаданных assembly'ей.
Только насчет "первичности" — первичен ТЕКСТ пользовательской программы. AST из него тоже строится (т.е. парсится текст) по мере необходимости
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"