Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
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 | ||
| + | </ | ||