Sweet.js宏将传递给宏采用结构的任何内容都失败了

精明的

我有一个宏,我可以在括号之间插入任何代码。然后,我将其传递给对该代码具有规则的另一个宏。我在其中做了其他事情,test并且其名称有所不同,但是我认为这里需要一个最小的测试用例。

macro testimpl {
    rule {
         { $lhs:expr is $rhs:expr } 
    } => {
    }
}

macro test {
    rule { $code ... } => { testimpl { $code ... } }
}

testimpl { true is true }   // Works
test(true is true)          // Throws the next error

这是我收到的错误消息:

{ name: 'macro',
  message: 'Macro `testimpl` could not be matched with `{} ...`',
  stx: 
   { token: 
      { type: 3,
        value: 'testimpl',
        lineNumber: 13,
        lineStart: 98,
        range: [Object],
        sm_lineNumber: 9,
        sm_lineStart: 98,
        sm_range: [Object],
        leadingComments: [Object] },
     context: { mark: 649, context: [Object], instNum: 131515 },
     deferredContext: null } }

/home/havvy/sweetjs/playground/node_modules/sweet.js/lib/sweet.js:100
                    throw new SyntaxError(syn.printSyntaxError(source$2, err))
                          ^
SyntaxError: [macro] Macro `testimpl` could not be matched with `{} ...`
9:     rule { $code ... } => { testimpl { $code ... } }
                               ^
    at expand$2 (/home/havvy/sweetjs/playground/node_modules/sweet.js/lib/sweet.js:100:27)
    at parse (/home/havvy/sweetjs/playground/node_modules/sweet.js/lib/sweet.js:136:29)
    at Object.compile (/home/havvy/sweetjs/playground/node_modules/sweet.js/lib/sweet.js:144:19)
    at Object.exports.run (/home/havvy/sweetjs/playground/node_modules/sweet.js/lib/sjs.js:85:27)
    at Object.<anonymous> (/home/havvy/sweetjs/playground/node_modules/sweet.js/bin/sjs:7:23)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
内森·福比恩(Nathan Faubion)

我认为您缺少的规则test

test(true is true)

扩展到

testimpl { (true is true) }

这与您在中的规则不符testimpl

test规则更改rule { ($code ...) }应该可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用方法的Sweet.js宏

来自分类Dev

Sweet.js的惰性评估宏

来自分类Dev

调用方法的Sweet.js宏

来自分类Dev

如何从sweet.js导出?

来自分类Dev

Sweet.js:在标记之前定位变量的宏?

来自分类Dev

Sweet.js-宏可以在多个文件中使用吗?

来自分类Dev

Sweet.js:在标记之前定位变量的宏?

来自分类Dev

使用sweet.js宏删除日志语句

来自分类Dev

sweet.js:转换重复令牌的出现

来自分类Dev

Sweet.js可以输出评论吗?

来自分类Dev

使用sweet.js生成动态评论

来自分类Dev

使用sweet.js生成动态评论

来自分类Dev

如何在sweet.js中创建参数化的infix宏

来自分类Dev

如何在sweet.js中创建参数化的infix宏

来自分类Dev

将sweet.js参数转换为字符串

来自分类Dev

将任意字符串插入 sweet.js 输出

来自分类Dev

Sweet.js宏参数扩展为主体中的另一个宏,不需要

来自分类Dev

Sweet.js-将令牌扩展为字符串

来自分类Dev

带有表格JS的Sweet Alert(3个输入)

来自分类Dev

防止 sweet.js 向变量添加数字

来自分类Dev

在 Vue js 中使用 Sweet alert 删除确认

来自分类Dev

如何将jquery确认转换为sweet-alert确认?

来自分类Dev

我想让Sweet Alert首先工作,将支票更改为true,false,该怎么办?

来自分类Dev

对于sweet.js在Typescript输出中重命名顶级变量该怎么办?

来自分类Dev

Sweet Alert HTML选项

来自分类Dev

Sweet.js-如何将变量放入标识符名称和字符串变量中?

来自分类Dev

Sweet.js-如何将变量放入标识符名称和字符串变量中?

来自分类Dev

Bootstrap Modal内部的Sweet Alert

来自分类Dev

JSF Sweet Alert 使用 FacesMessages