sweet.js 不能 return #`else`

sweet.js cannot return #`else`

main.js

import {另} from './chinese-macros';
另 {
}

中文-macros.js

export syntax 另 = function(ctx) {
    return #`else`;
}

main.js 应编译为 else {} 但我收到此错误消息:

throw this.createError(start, "not a valid expression");

如有任何帮助,我们将不胜感激。

else {} 本身是一个无效的表达式,这就是您收到该错误消息的原因。您正在做的(我相信)是试图将 ifelse 替换为中文。因此,假设您已经为 if 语句创建了一个宏,编译器将最终为 if 评估宏,然后分别 为 else 宏评估。

您应该做的是在一个宏中为 if/else-if/else 语句构建一个宏,就像本教程为 cond 表达式构建宏一样:http://sweetjs.org/doc/1.0/tutorial.html#_sweet_cond。请注意它们如何遍历以 case 然后 default 开头的关键字,如果出现这两个关键字中的 none 则抛出错误(无效语法)。除了按顺序执行 ifelse ifelse 之外,您想要实现的目标是相同的想法......同时添加更多错误处理并考虑不同的语法。