Конкатенация синтаксического объекта в sweet.js
Я хотел бы создать макрос в sweet.js, который позволяет пользователю писать циклы в javascript, используя что-то похожее на индексную нотацию, используемую в тензорном исчислении. Если я поставлю что-то вроде:
tensor foo[i][j] = baz[j] + bar[i];
sweet.js расширит его до:
var i, j, li, lj;
for(i=0, li=bar.length; i<li; ++i){
for(j=0, lj=baz.length; j<lj; ++j){
foo[i][j] = baz[j] + bar[i];
}
}
У меня есть рабочая копия, которая не использует li
а также lj
переменные, т.е. проверяет, i<bar.length
а также j<baz.length
, Это влияет на производительность больших массивов, и я хотел бы отойти от этого.
Проблема в том, что мне нужно создать li
а также lj
переменные. Я хочу взять i
а также j
токены и объедините их в "l", чтобы создать новый токен. Я не могу найти способ объединить токены в sweet.js, как, например, в препроцессоре cpp с использованием ##
оператор. Я понимаю, что sweet.js пытается быть гигиеничным в отличие от препроцессора cpp, поэтому я не уверен, что это упущение было задумано. Я что-то пропустил? Это ограничение, накладываемое sweet.js? Если это так, есть ли обходной путь?
Я использую последнюю версию sweet.js, версия 2.0. Это та же версия, которую использует их онлайн-редактор.