Sweet.js:具有2个参数扩展的简单宏发生错误

时间:2019-02-08 19:51:09

标签: javascript macros sweet.js

我正在尝试按照sweet.js(https://www.sweetjs.org/doc/tutorial)上的教程进行操作,并且尝试编写一个简单的宏,该宏应使用对宏具有2个参数的扩展为'console.log(...)

#  ./a.out
1 3 mno  4 
3 8 jkl  4 
4 2 abc  7 
5 2 def  9 
8 0 ghi  9 

我希望宏可以扩展到 syntax HELLO = function (ctx) { let first = ctx.next().value let second = ctx.next().value return #`console.log("Hello " + ${first} + ", Hello " + ${second} + "!")` } // render console.log('This line should be left alone by sjs') HELLO ('AA', 'BB') 但是出现语法错误

console.log("Hello AA, Hello BB !")

它仅与一个参数一起使用。但是即使那样,我仍然需要在console.log内使用连接运算符,所以,

d:\projects\Node\sweet>sjs --no-babel new.macro C:\Users\127958\AppData\Roaming\npm\node_modules\@sweet-js\cli\node_modules\@sweet-js\core\dist\load-syntax.js:64 throw new Error('replacement values for syntax template must not be null or undefined'); ^ Error: replacement values for syntax template must not be null or undefined at sanitizeReplacementValues (C:\Users\127958\AppData\Roaming\npm\node_modules\@sweet-js\cli\node_modules\@sweet-js\core\dist\load-syntax.js:64:11) 扩展为

return #`console.log("Hello " + ${first})`

console.log("Hello " + "AA");,扩展为

return #`console.log("Hello ${first}")` 麻烦了。

有什么想法吗?

0 个答案:

没有答案