发布于 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词汇者的力量的练习。
https://stackoverflow.com/questions/72689496
复制相似问题