微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在语法中定义“任何文本”?

如何解决如何在语法中定义“任何文本”?

我正在尝试定义一个 Lark Earley 语法,它根据某些定界关键字匹配文本。例如,在像 hello mellow world 这样带有分隔符 mellow 的字符串中,我想提取 helloworld

如果我输入这样的语法:

start: /.+/ MELLOW /.+/

MELLOW: "mellow"

我得到 Unexpected end-of-input. Expected one of: * MELLOW。但是,如果我将其更改为 start: /./+ MELLOW /.+/,那么我确实得到了一个正确的树,除了现在我不想要的每个 hello 字母都有一个附加节点。此外,我希望 hello 成为一个终端,但我现在不能这样做,因为终端不允许重复。

我试图描述一种语法,其中 mellow 总是出现在文本中间的某个位置,那么两个终结符应该是 mellow 之前和之后的文本。为什么我的语法错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。