Узлы синтаксического дерева вида ident("?System")
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
На этапе построения семантического дерева создаются сахарные синтаксические узлы. Так, для реализации кортежей запись
(1,2,3)
заменяется на
System.Tuple.Create(1,2,3)
Однако, если в программе будет определено имя System, данная конструкция вызовет ошибку компиляции
Чтобы этого не произошло мы должны быть твердо уверены, что System - это имя пространства имен .NET. Для этого в имени используется ?:
ident("?System")
Имя ?System не может быть найдено в программе на Паскале, поэтому оно будет искаться в библиотеках .NET. Перед запуском алгоритма поиска в .NET символ ? съедается.
Таким образом, мы ищем имя System.Tuple.Create только в .NET