首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解ABNF语法"0<pchar>“

理解ABNF语法"0<pchar>“
EN

Stack Overflow用户
提问于 2022-06-20 15:29:33
回答 1查看 64关注 0票数 1

RFC 3986中,他们定义了规则:

代码语言:javascript
复制
path-empty = 0<pchar>

为了简单起见,让我们假设定义了pchar

代码语言:javascript
复制
pchar = 'a' / 'b' / 'c'

path-empty匹配什么?它是如何匹配的?

我读过关于ABNF的维基百科页面。我猜它匹配空字符串(regex ^(?![\s\S]))。如果是这样的话,为什么还要引用pchar?难道没有更简单的方法来匹配ABNF语法中的空字符串而不引用其他规则吗?

这怎么能翻译成ANTLR4呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-20 20:33:24

是的,你是对的。path-empty派生空字符串。

在ABNF中,规则的右侧必须包含一个element,而不是空格、换行符和注释。请参阅rfc5234,第10页。考虑到这个语法,有几种方法可以定义空字符串。path-empty = 0<pchar>是一种方式。它的意思是“<pchar>的零”。但是,path-empty = ""path-empty = 0pchar也能发挥作用。ABNF没有定义一个是否优先于另一个。

注意,rfc3986规范使用prose-val,即<pchar>,而不是“<pchar>pchar (甚至是""0pchar或仅仅是<empty string>)。还不清楚为什么,但它有同样的效果--path-empty派生空字符串。但是,<pchar>pchar不一样。散文价值是添加对规则的非正式描述的“最后手段”。

在Antlr4中,规则就是path_empty : ;。注意,Antlr有一个不同的命名约定,它定义了lexer和解析器之间的严格边界。ABNF没有这种区别。事实上,这个语法可以转换成一个单一的Antlr词汇语法,这是一个理解Antlr词汇者的力量的练习。

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

https://stackoverflow.com/questions/72689496

复制
相关文章

相似问题

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