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 {}
本身是一个无效的表达式,这就是您收到该错误消息的原因。您正在做的(我相信)是试图将 if 和 else 替换为中文。因此,假设您已经为 if 语句创建了一个宏,编译器将最终为 if 评估宏,然后分别 为 else 宏评估。
您应该做的是在一个宏中为 if/else-if/else
语句构建一个宏,就像本教程为 cond
表达式构建宏一样:http://sweetjs.org/doc/1.0/tutorial.html#_sweet_cond。请注意它们如何遍历以 case
然后 default
开头的关键字,如果出现这两个关键字中的 none 则抛出错误(无效语法)。除了按顺序执行 if
、else if
和 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 {}
本身是一个无效的表达式,这就是您收到该错误消息的原因。您正在做的(我相信)是试图将 if 和 else 替换为中文。因此,假设您已经为 if 语句创建了一个宏,编译器将最终为 if 评估宏,然后分别 为 else 宏评估。
您应该做的是在一个宏中为 if/else-if/else
语句构建一个宏,就像本教程为 cond
表达式构建宏一样:http://sweetjs.org/doc/1.0/tutorial.html#_sweet_cond。请注意它们如何遍历以 case
然后 default
开头的关键字,如果出现这两个关键字中的 none 则抛出错误(无效语法)。除了按顺序执行 if
、else if
和 else
之外,您想要实现的目标是相同的想法......同时添加更多错误处理并考虑不同的语法。