在处理自定义JS语法时,如何避免对函数外部条件进行求值?

时间:2019-06-14 22:48:55

标签: javascript syntax sweet.js

我正在尝试使用Sweet.js

制作第一个自定义JS语法

我正在尝试使用其online playground使用不同的语法。

到目前为止,此简化版本对我有用:

@stateless

此文件成功编译为:

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]

..以避免在函数外部评估该条件。

我尝试了许多选项,但没有一个成功,这是可以实现的,还是我错过了一些东西?谢谢

0 个答案:

没有答案