我试图定义一个 sweet.js 宏,它允许更容易地定义其他重复宏,但我在这里发现了一个语法错误:
SyntaxError: [patterns] Ellipses level does not match in the template
11: { $($b...)... }
这是产生此语法错误的宏:
macro repeatingMacro{
rule{
$a {
$b...
} {
$c...
}
} => {
//the output of this macro should be another macro with repeating patterns
macro $a {
rule{
{ $($b...)... }
} => {
{ $($c...)... }
}
}
}
}
如果这个宏被正确定义,那么它将允许创建其他宏,比如这个:
repeatingMacro cond {
$a... { $b... }
}
{
if($a...){
$b...
}
}
var x = 1;
var y = 2;
cond {
(x > y) {
alert(x);
}
(x < y) {
alert(y)
}
}
换句话说,是否可以定义一个将自动转换此宏的宏:
macro cond {
rule {
$x... { $y... }
} => {
if($x...){
$y...
}
}
}
...进入这个宏?
macro cond {
rule {
{ $($x... { $y... })... }
} => {
$(if($x...){
$y...
})...
}
}