Возможности
Возможностей пока очень мало, а именно - две. Первая - упрощенное объявление локальных переменных внутри кода. Рассмотрим пример:
[jass]function Test takes nothing returns nothing
new timer t;
endfunction[/jass]
мы объявляем новый локальный таймер короткой коммандой. После парсинга это ожидаемо првератится в
[jass]function Test takes nothing returns nothing
local timer t = CreateTimer()
endfunction[/jass]
Внимание! знак ; (точка с запятой) обязателен в коне строки, иначе парсер не поймет код.
На данный момент возможно объявление следующих типов подобным образом:
[jass]new timer
new group
new force
new region
new trigger
new dialog
new leaderboard
new multiboard
new quest
new texttag
new camerasetup
new hashtable[/jass]
Так же возможно объявление нескольких переменных на одной строке.
[jass]new timer t; new group g; new hashtble h;[/jass]
превратится в
[jass]local timer t = CreateTimer()
local group g = CreateGroup()
local hashtable h = InitHashtable()[/jass]
Вторая возможность - использование блока совместимости кода. Например, вы пользуетесь cJass и при помощи библиотеки cj_typesEx объявили переменную
[jass]timer t = new timer;[/jass]
Вместе с JASP получится кракозябра. Дабы не переписывать весь код был введен блок "непарсинга":
[jass]$JASP_NOPARSE_BEGIN
timer t = new timer;
$JASP_NOPARSE_END$[/jass]
превратится без изменений в
[jass]timer t = new timer;[/jass]
Пока что у этого блока есть один недостаток: парсер считывает его даже при закомментировании, поэтому не стоит делать так
[jass]//$JASP_NOPARSE_BEGIN
timer t = new timer;
//$JASP_NOPARSE_END$[/jass]
ибо это засчитается как "непарс" блок.
Что планируется дальше
Дальше думаю запилить объявление единичной глобалки в коде функции и адаптацию блока for / endfor (vJass) под cJass парсер, т.к. они конфликтуют (за идею спасибо SirNikolas'y). Пример преобразования глобалок:
[jass]global region r[/jass]уйдет в главный блок глобалок