Узлы синтаксического дерева вида 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