Javascript Sweet.js可以输出到评论吗?

Javascript Sweet.js可以输出到评论吗?,javascript,macros,sweet.js,Javascript,Macros,Sweet.js,这个问题的标题回答了所有问题 我希望有办法做到这一点,但我发现这很难。到目前为止,这就是我所尝试的 macro statement { rule { "$x" } => { // @statement $x } } statement "my/qualified/path" 这不起作用:*( 然后我试了这个 macro statement { rule { "$x" } => { \\ @statement $x }

这个问题的标题回答了所有问题

我希望有办法做到这一点,但我发现这很难。到目前为止,这就是我所尝试的

macro statement {
    rule { "$x" } => {
        // @statement $x
    }
}

statement "my/qualified/path"
这不起作用:*(

然后我试了这个

macro statement {
    rule { "$x" } => {
        \\ @statement $x
    }
}

macro \ { rule { } => { / }
很明显,正如我所想的那样,它会导致语法错误。是否仍有必要将sweetjs输出到注释中?

esprima/escodegen(sweet.js构建在其之上)处理注释的方式是将它们作为属性添加到现有标记中;注释本身不是正确的标记。这意味着您不能输出“just”注释必须附加到另一个标记。因此,如果您只需在宏中的注释后添加另一个标记,则所有标记都可以工作:

macro statement {
    rule { "$x" } => {
        // @statement $x
        42
    }
}
如果在确定令牌的确切值时需要更大的灵活性,您还可以使用case宏和令牌上的
leadingComments
属性:

macro m {
    case {_ () } => {
        var x = makeValue(42, #{here});
        x.token.leadingComments = [{
            type: "Line",
            value: "hello, world"
        }];
        return withSyntax ($x = [x]) #{
            $x
        }
    }
}

啊,是的,我们实际上是通过电子邮件沟通的!:)所以我会接受你的正确答案,因为你已经修复了这个错误。