Berserker, отлично, но если это не касается
вышедшей выерсии ЭРА, то лучше постить такие новости в другой теме. Например, "Новые возможности ERA 3.х".
И там будет постепенно формироваться справочник, и в головах у мододелов (у меня, в частности) не будет каши "Это вроде уже работает.. или еще нет?"
И еще: почему в 6 строке %s и %y в нижнем регистре?
Berserker Wrote:Algor, возможно, ты прав. Теперь интерполяция с естественного регистра, а старый большой поддерживается по совместимости.
Реально код комплируется в полноценный параметр, который затем интерпретируется по всем правилам.
%zi, %Zi — переменная z с индексом i.
%i - быстрая переменная i
%f - быстрая переменная f
%Fv600 - флаг с индексом из v600
%Fi(alg.doomed_hero_flag_ptr) - флаг с индексом из SN:W^alg.doomed_hero_flag_ptr^
Berserker, надо реально писать документацию.
Выходит так (поправь, если ошибаюсь):
1. Каждая ERM строка у тебя обрабатывается дважды: а) подстановщиком и б) интерпретатором
2. Подставновщик преобразует строку, заменяя значаения в %k() на значения соответствующих переменных/json-текстов и т.д.
3. Какие подстановки в данный момент реализованы?
%s(any_name) - подстановка строкового значения, ранее заданного через !!SN:W^any_name^/^value^; или !!VR(any_name:z):S^value^;
%i(any_name) - подстановка целочисленного значения, ранее заданного через !!SN:W^any_name^/value; или !!VR(any_name:y):Svalue;
%t(any.key) - подстановка значения ключа any.key из json-массива
Вот примерно в таком виде надо написать в отдельную тему по новому синтаксису/возможностям.
Quote:I said pay %yy%(@moneyPtr)
При всей моей любви к регулярным выражениям, выглядит конфузяще.
%(bla-bla) - что делает этот синтаксис и почему он отличается от описанного выше?
или там опечатка и должно быть %y%i(@moneyPtr)?
И, напомни, @ - операция взятия адреса?
Berserker Wrote:Algor, изменения помечаю в changelog.
Если очень коротко, то синтаксис схож с тем, что есть сейчас.
Даже в 2.9.13 %S(...), %I(....), %T(...) уже работают.
S/I для SN:W-переменных.
T - перевод.
Выбиваются только локальные переменные ЕРМ 2.0, поскольку они реализованы на стадии однократной предобработки, когда !?FU(On...) заменяется на !FU12345, а (myMoney:y) на какой-нибудь y51.
И вот они вставляются через %(имя). Да, (@myMoney) будет развёрнуто в 50 для y50.