首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何告诉pest.rs使语法变平?

我如何告诉pest.rs使语法变平?
EN

Stack Overflow用户
提问于 2021-03-19 02:07:10
回答 1查看 80关注 0票数 1

假设我有一条规则,

代码语言:javascript
复制
key = { ASCII_ALPHA ~ ( ASCII_ALPHA | "_" )+ }
value = { (!NEWLINE ~ ANY)+ }
keyvalue = { key ~ "=" ~ value?  }
option = { key }

这支持一个

代码语言:javascript
复制
K=V
K=
K

它希望设置/取消一个key,并指定一个option,我不喜欢的是option的语法,它生成这样的AST,

代码语言:javascript
复制
rule: option,
span: Span {
    str: "check_local_user",
    start: 302,
    end: 318,
},
inner: [
    Pair {
        rule: key,
        span: Span {
            str: "check_local_user",
            start: 302,
            end: 318,
        },
        inner: [],
    },
],

我不喜欢我的optionkey有内在的联系。我只是想让option拥有与key相同的语法。在Pest.rs中是否有任何方法来编写这样的语法

代码语言:javascript
复制
inner { myStuff }
outer = { inner }

变平为

代码语言:javascript
复制
outer = { myStuff }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 05:45:49

使用Atomic Parsing Token @,我可以做到这一点。

代码语言:javascript
复制
option = @{ key }

它被记录为,

原子规则调用的任何规则都不会生成令牌对。

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

https://stackoverflow.com/questions/66701614

复制
相关文章

相似问题

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