在sweetjs中实现多行瘦箭头语法

时间:2014-02-02 16:53:44

标签: javascript preprocessor sweet.js

我正在和sweetjs玩耍,因为我的生活无法弄清楚为什么this rule for parameterless multiline skinny arrow syntax不匹配

代码:

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 = () -> {
                ^

1 个答案:

答案 0 :(得分:2)

尝试删除闭包最后一行的分号,因为某些原因,sweetjs编译器在使用$ last和semi-colons时遇到问题。

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

var fn = () -> {
  var a = 1
  a + 2
};