Joshua_Black
Ученик
Добрый вечер, знатоки Pawn!
Переписывая свой парсер для Pawn, я столкнулся с весьма необычной, по моему мнению, конструкцией в одном из скриптов:
Сначала я был озадачен — неужели разработчик каким-то образом смог реализовать это с помощью препроцессора? Зная, на что иногда идут мастера в этой области, я бы не удивился. Недолго думая, я начал искать в инклудах какие-то конструкции, но не нашёл.
Чтобы разобраться, я решил воспроизвести эту конструкцию в пустом скрипте, и... чудо! Она действительно работала.
Тогда я подумал, может, эта конструкция описана в книгах о Pawn? Заглянул в "Pawn Embedded Scripting Language. The Language", издание 2006 года от ITB CompuPhase, но и там не нашел упоминаний.
Дальше — больше: я полез в интернет. Моему удивлению не было предела, когда я обнаружил, что компилятор спокойно "переваривает" такую конструкцию. Стоило ввести запрос "*then" в поиск на этом форуме, и я сразу наткнулся на несколько обсуждений, где встречается подобный код.
Но и это не всё! В одной из тем я наткнулся на еще более необычный пример:
Это поразило меня еще сильнее (К слову, вот ссылка на тему с этим примером).
Собственно, к чему я это веду?
У меня простой вопрос: какие еще "нестандартные" конструкции существуют в 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, если их можно так назвать? Может быть, кто-то знает, где найти дополнительную информацию об этих особенностях?
Последнее редактирование:
