连接sweet.js中的语法对象

时间:2016-07-20 17:02:04

标签: javascript macros sweet.js

我想在sweet.js中创建一个宏,允许用户使用类似于张量计算中使用的index notation的东西在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];
    }
}

我有一份不使用lilj变量的工作副本,即它会检查i<bar.lengthj<baz.length。这对大型阵列有性能影响,我想放弃它。

问题是我需要创建lilj变量。我想取ij标记并将“l”连接到它们以创建新标记。我无法在sweet.js中找到连接令牌的方法,例如,在使用##运算符的cpp预处理器中。我确实理解sweet.js试图成为hygenic而不像cpp预处理器,所以我不确定这个遗漏是否有意。我错过了什么吗?这是sweet.js强加的限制吗?如果是,是否有解决方法?

我使用的是最新版本的sweet.js,版本2.0。这与其在线编辑器使用的版本相同

0 个答案:

没有答案