Давно хотел спросить, откуда взялось такое ограничение на выбор имен блоков?

Не раз уже сталкивался с такой проблемой. Допустим, в скрипте уже есть блок с именем XXX и я хочу добавить новый блок с именем XXX_YYY, т.е. имя нового блока получается из имени существующего блока плюс еще некоторое имя через знак подчеркивания.

До тех пор пока эти блоки существуют безотносительно друг к другу - компиляция скрипта проходит без ошибок. Но при попытке задействовать оба имени в одной формуле, TSLab выдает непонятные ошибки. Например, при сравнении двух значений в логической формуле XXX>XXX_YYY, получаем следующее сообщение об ошибке:

Не могу запустить скрипт.
c:\Documents\TSLab\temp\code6.cs(70,44): error CS1002:; expected

И только анализ кода на C# позволяет понять эту ошибку. Оказывается код в файле *.cs содержит интересную синтаксическую конструкцию: XXX[i]_YYY[i], из которой явно следует, что "кто-то" надругался над именем XXX_YYY, порезал его на части и внедрил в него индексное выражение:

for (int i = 0; (i < count); i++)
{
list[i] = XXX[i]>XXX[i]_YYY[i];
}

До сих пор я просто пока обходил эту проблему путем переименования нового блока, например, блок с именем XXX_YYY переименовывается в YYY_XXX и компиляция проходит без ошибок.

Вопрос: почему при проектирования пространства имен скрипта я должен думать о том, пропустит TSLab такое имя или нет? Откуда следует такое ограничение?

Про то, что при сборке скрипта все русские названия заменяются на латинские (для правильной компиляции), хорошо известно.

Но вот что за подмены делаются в именах, состоящих только из разрешенного набора букв латинского алфавита и знака подчеркивания? И как с этим бороться?

Возможно ли при генерации кода на C# дать указание TSLab, чтобы он воспринимал имя целиком и не делил его на части?


Attachments
Error_TSLab.JPG (151 downloads)
Description: Пример конфликта имен ATR и ATR_MIN