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