Инструменты пользователя

Инструменты сайта


aq:netherscript

Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
aq:netherscript [03.09.2009 15:28]
VorteX
aq:netherscript [06.07.2020 03:50] (текущий)
Строка 10: Строка 10:
    
 Весь исходный текст подразделяется на сущности двух видов - слова и строки. Строки разделяются между собой символом возврата каретки, а слова при разделении подчиняются следующим правилам:  Весь исходный текст подразделяется на сущности двух видов - слова и строки. Строки разделяются между собой символом возврата каретки, а слова при разделении подчиняются следующим правилам: 
 +  * пробел и табуляция - отделяют одно слово от другого 
 +  * спецсимволы \ ( ) [ ] { } ; : , . являются сами по себе словами, их не нужно отделять пробелом или табуляцией 
 +  * "текст заключенный в двойные кавычки" - всегда считается одним словом 
 +  * 'текст заключенный в одинарные кавычки' - тоже считается одним словом 
 +  * // комментарий до конца строки //
 +  * /* комментарий в середине строки */
  
-пробел и табуляция - отделяют одно слово от другого  
  
-спецсимволы ''\ ( ) [ ] { } ; : , .'' являются сами по себе словамиих не нужно отделять пробелом или табуляцией +Внимание! Многострочный комментарий вида /* */ не поддерживается! Используйте вместо него условие #if 0 ... #endif (см п.6) 
  
-"текст заключенный в двойные кавычки" - всегда считается одним словом  
- 
-'текст заключенный в одинарные кавычки' - тоже считается одним словом  
- 
-//комментарий до конца строки // 
- 
-''/*''комментарий в середине строки''*/'' 
- 
-Внимание! Многострочный комментарий ''/**/'' не поддерживается! Используйте вместо него условие #if 0 ... #endif (см п.6)  
  
 ====== Подключение файлов ======  ====== Подключение файлов ====== 
- +<code java> 
-  #include имя_файла  +#include имя_файла  
 +</code>
 Подключает содержание файла к процессу парсинга. В имени файла можно указывать добавочные пути (например monsters/soldier.ns2), но нельзя указывать относительные пути. (например ../monsters.ns2).  Подключает содержание файла к процессу парсинга. В имени файла можно указывать добавочные пути (например monsters/soldier.ns2), но нельзя указывать относительные пути. (например ../monsters.ns2). 
  
Строка 36: Строка 32:
 параметр вида <имя файла> - означает что инклюдится системный файл, и искать его парсер будет в каталоге script/system/  параметр вида <имя файла> - означает что инклюдится системный файл, и искать его парсер будет в каталоге script/system/ 
 в любом другом случае проверять файл парсер будет в папке scripts/  в любом другом случае проверять файл парсер будет в папке scripts/ 
-Пример использования #include:  
  
-  #include "./my_defs.ns2" +Пример использования #include:  
-  #include "my_defs.ns2" +<code java> 
-  #include "monsters/mynewmonster.ns2" +#include "./my_defs.ns2" 
-  #include "<my_defs.ns2>"+#include "my_defs.ns2" 
 +#include "monsters/mynewmonster.ns2" 
 +#include "<my_defs.ns2>" 
 +</code>
  
 Ограничения:  Ограничения: 
Строка 51: Строка 49:
 Константы используются для вставки в код готовых шаблонов. Чтобы вставить константу в произвольное место кода, нужно использовать синтаксис [имя_константы]. Самый простой пример использования констант:  Константы используются для вставки в код готовых шаблонов. Чтобы вставить константу в произвольное место кода, нужно использовать синтаксис [имя_константы]. Самый простой пример использования констант: 
  
-  #define true 1 +<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] 
 +} 
 +</code>
  
 Константы типа #define при вставке сохраняют свою структуру слов:  Константы типа #define при вставке сохраняют свою структуру слов: 
  
-  // Вместо [true] и [false] обработчик кода увидит 1 и 0 +<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!" 
 +} 
 +</code>
  
 Но если определить константу с помощью инструкции #defword, то она при вставке будет представлять из себя одно слово  Но если определить константу с помощью инструкции #defword, то она при вставке будет представлять из себя одно слово 
  
-  // Вместо [true] и [false] обработчик кода увидит 1 и 0 +<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>   
 +
 +<code java> 
   #define имя_константы (параметр1, параметр2...параметр16) текст_константы   #define имя_константы (параметр1, параметр2...параметр16) текст_константы
   #define имя_константы текст_константы   #define имя_константы текст_константы
Строка 97: Строка 100:
   #redefword   #redefword
   #undefall   #undefall
 +</code>
  
 Ограничения:  Ограничения: 
- +макс. параметров: 16  
-макс. параметров: 16  +макс. длина имени параметра: 32 символа 
- +
-макс. длина имени параметра: 32 символа +
  
 ====== Макрофункция #macro ====== ====== Макрофункция #macro ======
  
- Тоже самое, что и #define, но для использования в коде нужно использовать синтаксис @имя_макро_команды(параметры). Сделана для удобочитаемости кода. Имя макрофункции может совпадать с именем константы, объявленной через #define/#defword + То же самое, что и #define, но для использования в коде нужно использовать синтаксис @имя_макро_команды(параметры). Сделана для удобочитаемости кода. Имя макрофункции может совпадать с именем константы, объявленной через #define/#defword 
  
-  #macro имя_константы(параметр1,параметр2...) содержание +<code java> 
-  #macro имя_константы содержание +#macro имя_константы(параметр1,параметр2...) содержание 
-  #macroword имя_константы(параметр1,параметр2...) содержание +#macro имя_константы содержание 
-  #macroword имя_константы содержание+#macroword имя_константы(параметр1,параметр2...) содержание 
 +#macroword имя_константы содержание 
 +</code>
  
 ====== Енумерация #enum ======  ====== Енумерация #enum ====== 
-  +<code java> 
-  #enum int { ... } +#enum int { ... } 
-  #enum flags { ... }+#enum flags { ... } 
 +</code>
  
 ====== Условия и переходы ====== ====== Условия и переходы ======
-  #if значение ... #elseif значение ... #else ... #endif +<code> 
-  #ifdef значение ... +#if значение ... #elseif значение ... #else ... #endif 
-  #goto метка +#ifdef значение ... 
-  #label имя_метки +#goto метка 
-  #skip количество words +#label имя_метки 
-  #skip колколичество lines +#skip количество words 
-  #eof+#skip колколичество lines 
 +#eof 
 +</code>
  
 ====== Управление парсером ======  ====== Управление парсером ====== 
- +<code> 
-  #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>
  
 ====== Служебные инструкции ======  ====== Служебные инструкции ====== 
-   +<code java> 
-  #message сообщение +#message сообщение 
-  #error сообщение +#error сообщение 
-  #warning сообщение +#warning сообщение 
-  #debug сообщение +#debug сообщение 
-  #printdef имя_константы +#printdef имя_константы 
-  #printmacro имя_макрокоманды +#printmacro имя_макрокоманды 
- +</code>
-Системные константы и макрофункции +
- +
-  @true +
-  @on +
-  @false +
-  @off +
-  @random +
-  @random(x,y) +
-  @crandom  +
-  @chance(x) +
-  @defined(n) +
-  @equal(x,y) +
-  @bitand(x,y) +
-  @bitor(x,y) +
-  @label_list +
-  @define_list+
  
 +====== Системные константы и макрофункции ======
 +<code java>
 +@true
 +@on
 +@false
 +@off
 +@random
 +@random(x,y)
 +@crandom 
 +@chance(x)
 +@defined(n)
 +@equal(x,y)
 +@bitand(x,y)
 +@bitor(x,y)
 +@label_list
 +@define_list
 +</code>
aq/netherscript.1251977320.txt.gz · Последнее изменение: 06.07.2020 03:50 (внешнее изменение)