Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
aq:netherscript [03.09.2009 15:25] VorteX |
aq:netherscript [06.07.2020 03:50] (текущий) |
||
---|---|---|---|
Строка 7: | Строка 7: | ||
Предметные инструкции определяются в коде QuakeC в зависимости от области, | Предметные инструкции определяются в коде QuakeC в зависимости от области, | ||
- | == Синтаксис == | + | ====== Синтаксис |
Весь исходный текст подразделяется на сущности двух видов - слова и строки. Строки разделяются между собой символом возврата каретки, | Весь исходный текст подразделяется на сущности двух видов - слова и строки. Строки разделяются между собой символом возврата каретки, | ||
+ | * пробел и табуляция - отделяют одно слово от другого | ||
+ | * спецсимволы \ ( ) [ ] { } ; : , . являются сами по себе словами, | ||
+ | * " | ||
+ | * ' | ||
+ | * // комментарий до конца строки // | ||
+ | * /* комментарий в середине строки */ | ||
- | пробел и табуляция - отделяют одно слово от другого | ||
- | спецсимволы '' | + | Внимание! Многострочный комментарий вида /* */ не поддерживается! Используйте вместо него |
- | " | ||
- | |||
- | ' | ||
- | |||
- | // | ||
- | |||
- | ''/ | ||
- | |||
- | Внимание! Многострочный комментарий ''/ | ||
- | |||
- | == Подключение файлов == | ||
- | |||
- | #include имя_файла | ||
+ | ====== Подключение файлов ====== | ||
+ | <code java> | ||
+ | #include имя_файла | ||
+ | </ | ||
Подключает содержание файла к процессу парсинга. В имени файла можно указывать добавочные пути (например monsters/ | Подключает содержание файла к процессу парсинга. В имени файла можно указывать добавочные пути (например monsters/ | ||
Строка 36: | Строка 32: | ||
параметр вида <имя файла> | параметр вида <имя файла> | ||
в любом другом случае проверять файл парсер будет в папке scripts/ | в любом другом случае проверять файл парсер будет в папке scripts/ | ||
+ | |||
Пример использования # | Пример использования # | ||
- | + | <code java> | |
- | #include " | + | #include " |
- | #include " | + | #include " |
- | #include " | + | #include " |
- | #include "< | + | #include "< |
+ | </ | ||
Ограничения: | Ограничения: | ||
Строка 47: | Строка 45: | ||
Макс. 64 подключения файлов (включая начальный) | Макс. 64 подключения файлов (включая начальный) | ||
- | == Константы #define == | + | ====== Константы # |
Константы используются для вставки в код готовых шаблонов. Чтобы вставить константу в произвольное место кода, нужно использовать синтаксис [имя_константы]. Самый простой пример использования констант: | Константы используются для вставки в код готовых шаблонов. Чтобы вставить константу в произвольное место кода, нужно использовать синтаксис [имя_константы]. Самый простой пример использования констант: | ||
- | | + | <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 == | + | |
- | + | ||
- | | + | |
- | + | ||
- | #macro имя_константы(параметр1, | + | |
- | #macro имя_константы содержание | + | |
- | #macroword имя_константы(параметр1, | + | |
- | #macroword имя_константы содержание | + | |
- | + | ||
- | == Енумерация #enum == | + | |
- | + | ||
- | #enum int { ... } | + | |
- | #enum flags { ... } | + | |
- | == Условия и переходы == | + | То же самое, что и #define, но для использования в коде нужно использовать синтаксис @имя_макро_команды(параметры). Сделана для удобочитаемости кода. Имя макрофункции может совпадать с именем константы, объявленной через #define/#defword |
- | #if значение | + | |
- | # | + | |
- | #goto метка | + | |
- | # | + | |
- | #skip количество words | + | |
- | #skip колколичество | + | |
- | | + | |
- | === Управление | + | <code java> |
+ | #macro имя_константы(параметр1, | ||
+ | #macro имя_константы содержание | ||
+ | #macroword имя_константы(параметр1, | ||
+ | #macroword имя_константы содержание | ||
+ | </ | ||
- | #pragma параметр значение | + | ====== Енумерация #enum ====== |
- | | + | <code java> |
- | # | + | #enum int { ... } |
- | #pragma debug 0/1 | + | #enum flags { ... } |
- | #pragma debugmessages 0/1 | + | </code> |
- | # | + | |
- | == Служебные инструкции == | + | ====== Условия и переходы ====== |
- | + | < | |
- | #message сообщение | + | #if значение |
- | | + | #ifdef значение |
- | #warning сообщение | + | #goto метка |
- | #debug сообщение | + | #label имя_метки |
- | #printdef | + | #skip количество words |
- | #printmacro имя_макрокоманды | + | #skip колколичество lines |
+ | #eof | ||
+ | </ | ||
- | Системные константы и макрофункции | + | ====== Управление парсером ====== |
+ | < | ||
+ | #pragma параметр значение | ||
+ | #pragma precompiler on/off | ||
+ | #pragma warnings 0/1/2/3 | ||
+ | #pragma debug 0/1 | ||
+ | #pragma debugmessages 0/1 | ||
+ | #pragma labels_on_failed_ifs 0/1 | ||
+ | </ | ||
- | @true | + | ====== Служебные инструкции ====== |
- | @on | + | <code java> |
- | | + | #message сообщение |
- | @off | + | #error сообщение |
- | | + | #warning сообщение |
- | | + | #debug сообщение |
- | | + | #printdef имя_константы |
- | | + | #printmacro имя_макрокоманды |
- | | + | </ |
- | @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 | ||
+ | </ |