• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Какие нестандартные конструкции существуют в Pawn?

Joshua_Black

Ученик
Добрый вечер, знатоки Pawn!
Переписывая свой парсер для Pawn, я столкнулся с весьма необычной, по моему мнению, конструкцией в одном из скриптов:

C++:
someFunction()
{
    if !fexist("fileName") *then
        return print("file not found");
}
Сначала я был озадачен — неужели разработчик каким-то образом смог реализовать это с помощью препроцессора? Зная, на что иногда идут мастера в этой области, я бы не удивился. Недолго думая, я начал искать в инклудах какие-то конструкции, но не нашёл.
Чтобы разобраться, я решил воспроизвести эту конструкцию в пустом скрипте, и... чудо! Она действительно работала.
Тогда я подумал, может, эта конструкция описана в книгах о Pawn? Заглянул в "Pawn Embedded Scripting Language. The Language", издание 2006 года от ITB CompuPhase, но и там не нашел упоминаний.
Дальше — больше: я полез в интернет. Моему удивлению не было предела, когда я обнаружил, что компилятор спокойно "переваривает" такую конструкцию. Стоило ввести запрос "*then" в поиск на этом форуме, и я сразу наткнулся на несколько обсуждений, где встречается подобный код.
Но и это не всё! В одной из тем я наткнулся на еще более необычный пример:

C++:
switch expression do:
{
    case 0: ...
}
Это поразило меня еще сильнее (К слову, вот ссылка на тему с этим примером).

Собственно, к чему я это веду?
У меня простой вопрос: какие еще "нестандартные" конструкции существуют в Pawn, если их можно так назвать? Может быть, кто-то знает, где найти дополнительную информацию об этих особенностях?
 
Последнее редактирование:
Сверху Снизу