首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nom匹配行尾或文件端。

使用nom匹配行尾或文件端。
EN

Stack Overflow用户
提问于 2017-01-15 06:16:44
回答 1查看 2.2K关注 0票数 4

我试图使用nom解析一个字符串,该字符串要么将被换行符终止,要么将在使用后到达输入端。我有下面的代码,看起来应该编译:

代码语言:javascript
复制
named!(am_implied <AddressingMode>,
    do_parse!(
        opt!(space) >>
        alt!(
            line_ending |
            eof!()
        ) >>
        (AddressingMode::Implied)
    )
);

这在以下消息中失败:

代码语言:javascript
复制
error[E0282]: unable to infer enough type information about `E`
   --> src/lib.rs:181:1
    |
181 | named!(am_implied <AddressingMode>,
    | ^ cannot infer type for `E`
    |
    = note: type annotations or generic parameter binding required

我认为上面的代码应该编译,因为下面的代码编译:

代码语言:javascript
复制
named!(am_implied <AddressingMode>,
    do_parse!(
        opt!(space) >>
        line_ending >>
        eof!() >>
        (AddressingMode::Implied)
    )
);

line_endingeof!解析器不是在alt!解析器中使用,而当它们在alt!解析器中使用时,为什么会发生这种情况呢?我想知道在line_endingeof!上匹配的正确解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-15 09:28:28

这看起来像是这个问题在nom中,还有这个WIP PR。实际上,一些nom宏没有提供足够的类型提示,因此推理失败。

建议的解决方法是将一些子解析器拆分为不同的解析器,以帮助进行类型推断,但在本例中尝试时,这并不适用于我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41658386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档