我的TODO列表中的一项内容是创建一种有趣的编码语言,可以“编译”为JavaScript。我想尝试使用Sweet.js,但是我想知道是否可以编写针对该规则之前的关键字的规则?
例如,假设您要创建Yoda风格的JavaScript。源代码行可能看起来像这样:
six var is;
将被映射到
var six;
使用Sweet.js可以吗?
是的,您将要使用infix宏:
let var = macro {
rule infix { $x:ident | is } => {
var $x;
}
}
six var is
如果您想is
成为宏而不是var
显而易见的事情,那就是:
let is = macro {
rule infix { $x:ident var | } => {
var $x;
}
}
但这实际上不起作用。它不起作用的原因var
是...特殊的。基本上,由于var
创建了新的资料夹,因此宏不会在的标识符位置扩展var
。因此,当扩展器看到var is
它时,它将尝试创建一个名为的新绑定变量,is
而不是扩展is
宏。
不过,使用infixvar
宏应该对您有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句