Я пытаюсь создать свой первый пользовательский синтаксис JS, используя Sweet.js
Я пробую разные синтаксисы, используя их онлайн-площадку .
Пока эта упрощенная версия работает для меня:
syntax test = function (ctx) {
let exp = ctx.expand('expr').value;
return #`(function (exp) { return exp; }(${exp}))`
};
var a = 1
var b = 2
test !(a > b)
Это успешно компилируется в:
var a = 1;
var b = 2;
function (exp) {
return exp;
}(!(a > b));
Теперь, если я пытаюсь использовать ${exp}
непосредственно в своей функции, я получаю ошибку: Error: Not implemented yet [object Object]
syntax test = function (ctx) {
let exp = ctx.expand('expr').value;
return #`(function () { return ${exp}; }())`
};
var a = 1
var b = 2
test !(a > b) // Error: Not implemented yet [object Object]
Я хотел бы получить:
var a = 1;
var b = 2;
function () {
return !(a > b);
}();
.., чтобы избежать оценки этого состояния вне функции.
Я перепробовал много вариантов, ни один из которых не был успешным, это достижимо или я что-то упустил?Спасибо