Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| 
                    aq:netherscript [03.09.2009 15:28] VorteX  | 
                
                    aq:netherscript [06.07.2020 03:50] (текущий) | 
            ||
|---|---|---|---|
| Строка 10: | Строка 10: | ||
| Весь исходный текст подразделяется на сущности двух видов - слова и строки. Строки разделяются между собой символом возврата каретки, | Весь исходный текст подразделяется на сущности двух видов - слова и строки. Строки разделяются между собой символом возврата каретки, | ||
| + |   * пробел и табуляция - отделяют одно слово от другого  | ||
| + |   * спецсимволы \ ( ) [ ] { } ; : , . являются сами по себе словами, | ||
| + |   * " | ||
| + |   * ' | ||
| + | * // комментарий до конца строки // | ||
| + | * /* комментарий в середине строки */ | ||
| - | пробел и табуляция - отделяют одно слово от другого  | ||
| - | спецсимволы '' | + | Внимание! Многострочный комментарий вида /* */ не поддерживается! Используйте вместо него  | 
| - | " | ||
| - | |||
| - | ' | ||
| - | |||
| - | // | ||
| - | |||
| - | ''/ | ||
| - | |||
| - | Внимание! Многострочный комментарий ''/ | ||
| ====== Подключение файлов ======  | ====== Подключение файлов ======  | ||
| - | + | <code java> | |
| - | #include имя_файла | + | #include имя_файла | 
| + | </ | ||
| Подключает содержание файла к процессу парсинга. В имени файла можно указывать добавочные пути (например monsters/ | Подключает содержание файла к процессу парсинга. В имени файла можно указывать добавочные пути (например monsters/ | ||
| Строка 36: | Строка 32: | ||
| параметр вида <имя файла> | параметр вида <имя файла> | ||
| в любом другом случае проверять файл парсер будет в папке scripts/  | в любом другом случае проверять файл парсер будет в папке scripts/  | ||
| - | Пример использования # | ||
| - |    | + | Пример использования #include: | 
| - |   #include " | + | <code java> | 
| - |   #include " | + | #include " | 
| - |   #include "< | + | #include " | 
| + | #include " | ||
| + | #include "< | ||
| + | </ | ||
| Ограничения:  | Ограничения:  | ||
| Строка 51: | Строка 49: | ||
| Константы используются для вставки в код готовых шаблонов. Чтобы вставить константу в произвольное место кода, нужно использовать синтаксис [имя_константы]. Самый простой пример использования констант:  | Константы используются для вставки в код готовых шаблонов. Чтобы вставить константу в произвольное место кода, нужно использовать синтаксис [имя_константы]. Самый простой пример использования констант:  | ||
| - |    | + | <code java> | 
| - | #define false 2 | + | #define true 1 | 
| - | // Вместо [true] и [false] обработчик кода увидит 1 и 0 | + | #define false 2 | 
| - | MonsterClass MySoldier | + | // Вместо [true] и [false] обработчик кода увидит 1 и 0 | 
| - | { | + | MonsterClass MySoldier | 
| - | health 40 | + | { | 
| - | cantaketamage [true] | + | health 40 | 
| - | deathobituary [false] | + | cantaketamage [true] | 
| - | } | + | deathobituary [false] | 
| + | } | ||
| + | </ | ||
| Константы типа #define при вставке сохраняют свою структуру слов:  | Константы типа #define при вставке сохраняют свою структуру слов:  | ||
| - |    | + | <code java> | 
| - | #define defMySoldier MonsterClass MySoldier | + | // Вместо [true] и [false] обработчик кода увидит 1 и 0 | 
| - | [defMySoldier] | + | #define defMySoldier MonsterClass MySoldier | 
| - | { | + | [defMySoldier] | 
| - | health 40 | + | { | 
| - | cantaketamage 1 | + | health 40 | 
| - | deathobituary 0 | + | cantaketamage 1 | 
| - |     deathstring "You have killed my soldier!" | + | deathobituary 0 | 
| - | } | + |   deathstring "You have killed my soldier!" | 
| + | } | ||
| + | </ | ||
| Но если определить константу с помощью инструкции #defword, то она при вставке будет представлять из себя одно слово  | Но если определить константу с помощью инструкции #defword, то она при вставке будет представлять из себя одно слово  | ||
| - |    | + | <code java> | 
| - | #defword mySoldierDeathMessage You have killed my soldier! | + | // Вместо [true] и [false] обработчик кода увидит 1 и 0 | 
| - | // еще можно описать константу так: | + | #defword mySoldierDeathMessage You have killed my soldier! | 
| - |   // #define mySoldierDeathMessage "You have killed my soldier!" | + | // еще можно описать константу так: | 
| - | MonsterClass MySoldier | + | // #define mySoldierDeathMessage "You have killed my soldier!" | 
| - | { | + | MonsterClass MySoldier | 
| - | health 40 | + | { | 
| - | cantaketamage 0 | + | health 40 | 
| - | deathobituary 1 | + | cantaketamage 0 | 
| - | deathstring [mySoldierDeathMessage] | + | deathobituary 1 | 
| - | } | + | deathstring [mySoldierDeathMessage] | 
| - | + | } | |
| - | + | + | </ | 
| + | + | ||
| + | <code java>  | ||
|   #define имя_константы (параметр1, |   #define имя_константы (параметр1, | ||
| #define имя_константы текст_константы | #define имя_константы текст_константы | ||
| Строка 97: | Строка 100: | ||
| #redefword | #redefword | ||
| #undefall | #undefall | ||
| + | </ | ||
| Ограничения:  | Ограничения:  | ||
| - | + | * макс. параметров: | |
| - | макс. параметров: | + | * макс. длина имени параметра: | 
| - | + | ||
| - | макс. длина имени параметра: | + | |
| ====== Макрофункция #macro ====== | ====== Макрофункция #macro ====== | ||
| - |   | + |  То же самое, что и #define, но для использования в коде нужно использовать синтаксис @имя_макро_команды(параметры). Сделана для удобочитаемости кода. Имя макрофункции может совпадать с именем константы, | 
| - |    | + | <code java> | 
| - | #macro имя_константы содержание | + | #macro имя_константы(параметр1, | 
| - |   #macroword имя_константы(параметр1, | + | #macro имя_константы содержание | 
| - | #macroword имя_константы содержание | + | #macroword имя_константы(параметр1, | 
| + | #macroword имя_константы содержание | ||
| + | </ | ||
| ====== Енумерация #enum ======  | ====== Енумерация #enum ======  | ||
| - | + | <code java> | |
| - | #enum int { ... } | + | #enum int { ... } | 
| - | #enum flags { ... } | + | #enum flags { ... } | 
| + | </ | ||
| ====== Условия и переходы ====== | ====== Условия и переходы ====== | ||
| - |    | + | < | 
| - | #ifdef значение ... | + | #if значение ... #elseif значение ... #else ... #endif | 
| - | #goto метка | + | #ifdef значение ... | 
| - | #label имя_метки | + | #goto метка | 
| - | #skip количество words | + | #label имя_метки | 
| - | #skip колколичество lines | + | #skip количество words | 
| - | #eof | + | #skip колколичество lines | 
| + | #eof | ||
| + | </ | ||
| ====== Управление парсером ======  | ====== Управление парсером ======  | ||
| - | + | < | |
| - | #pragma параметр значение | + | #pragma параметр значение | 
| - | #pragma precompiler on/off | + | #pragma precompiler on/off | 
| - | #pragma warnings 0/1/2/3 | + | #pragma warnings 0/1/2/3 | 
| - | #pragma debug 0/1 | + | #pragma debug 0/1 | 
| - | #pragma debugmessages 0/1 | + | #pragma debugmessages 0/1 | 
| - | #pragma labels_on_failed_ifs 0/1 | + | #pragma labels_on_failed_ifs 0/1 | 
| + | </ | ||
| ====== Служебные инструкции ======  | ====== Служебные инструкции ======  | ||
| - |    | + | <code java> | 
| - | #message сообщение | + | #message сообщение | 
| - | #error сообщение | + | #error сообщение | 
| - | #warning сообщение | + | #warning сообщение | 
| - | #debug сообщение | + | #debug сообщение | 
| - | #printdef имя_константы | + | #printdef имя_константы | 
| - | #printmacro имя_макрокоманды | + | #printmacro имя_макрокоманды | 
| - | + | </ | |
| - | Системные константы и макрофункции | + | |
| - | + | ||
| - | @true | + | |
| - | @on | + | |
| - | @false | + | |
| - | @off | + | |
| - | @random | + | |
| - |   @random(x, | + | |
| - | @crandom | + | |
| - | @chance(x) | + | |
| - | @defined(n) | + | |
| - |   @equal(x, | + | |
| - |   @bitand(x, | + | |
| - |   @bitor(x, | + | |
| - | @label_list | + | |
| - | @define_list | + | |
| + | ====== Системные константы и макрофункции ====== | ||
| + | <code java> | ||
| + | @true | ||
| + | @on | ||
| + | @false | ||
| + | @off | ||
| + | @random | ||
| + | @random(x, | ||
| + | @crandom  | ||
| + | @chance(x) | ||
| + | @defined(n) | ||
| + | @equal(x,y) | ||
| + | @bitand(x, | ||
| + | @bitor(x,y) | ||
| + | @label_list | ||
| + | @define_list | ||
| + | </ | ||