2

我在玩sweetjs,我一生都无法弄清楚为什么这个无参数多行细箭头语法的规则不匹配

代码:

macro -> {
  rule infix { () | { $body ... $last:expr } } => {
    function( ) { 
      $body ...;
      return $last
    }
  }
}

var fn = () -> {
  var a = 1;
  a + 2;
};
expect(fn()).to.equal(3);

结果是

SyntaxError: [macro] Macro `-` could not be matched with `> {} ; expect ()...`
10: var fn = () -> {
                ^
4

1 回答 1

2

尝试删除闭包最后一行的分号,由于某种原因,sweetjs 编译器在使用 $last 和分号时遇到了问题。

macro -> {
 rule infix { () | { $body ... $last:expr } } => {
    function() {
      $($body) ...
      return $last
    }
  }
}

var fn = () -> {
  var a = 1
  a + 2
};
于 2014-02-02T18:07:11.843 回答