Javascript 在sweetjs中实现多行瘦箭头语法
我在和sweetjs玩,我一辈子都不明白为什么不匹配 代码: 导致Javascript 在sweetjs中实现多行瘦箭头语法,javascript,preprocessor,sweet.js,Javascript,Preprocessor,Sweet.js,我在和sweetjs玩,我一辈子都不明白为什么不匹配 代码: 导致 SyntaxError: [macro] Macro `-` could not be matched with `> {} ; expect ()...` 10: var fn = () -> { ^ 请尝试删除闭包最后一行的分号,因为某些原因,sweetjs编译器在使用$last和分号时遇到问题 macro -> { rule infix { () | { $body .
SyntaxError: [macro] Macro `-` could not be matched with `> {} ; expect ()...`
10: var fn = () -> {
^
请尝试删除闭包最后一行的分号,因为某些原因,sweetjs编译器在使用$last和分号时遇到问题
macro -> {
rule infix { () | { $body ... $last:expr } } => {
function() {
$($body) ...
return $last
}
}
}
var fn = () -> {
var a = 1
a + 2
};
编译器在$last和
方面出现问题的原因
是因为代码>不是表达式的一部分。因此,模式将匹配到a+2
,但仍将保留一个令牌。您可以通过使用两个规则来处理此问题,其中一个规则在不使用的情况下匹配代码>在末尾,一个带有代码>。
macro -> {
rule infix { () | { $body ... $last:expr } } => {
function() {
$($body) ...
return $last
}
}
}
var fn = () -> {
var a = 1
a + 2
};