首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RFC5322 (因特网消息格式) ABNF规则错误?

RFC5322 (因特网消息格式) ABNF规则错误?
EN

Software Engineering用户
提问于 2018-04-30 14:20:45
回答 1查看 139关注 0票数 1

我最近正在学习互联网消息格式,最初是RFC2822RFC5322。我在看折叠空格的定义。

每个标头字段逻辑上是由字段名、冒号和字段体组成的一行字符。不过,为了方便起见,并为了处理每行998/78字符的限制,标题字段的字段体部分可以拆分为多行表示;这称为“折叠”。一般规则是,只要该规范允许折叠空白(而不仅仅是WSP字符),就可以在任何WSP之前插入一个CRLF。例如,header字段: Subject:这是一个测试,可以表示为: Subject:这个是一个测试

规则定义采用ABNF表示法,如下所示:

FWS = (_WSP CRLF 1_WSP) /obs;折叠空白

WSP是一个空格,CRLF是ABNF中的回车和行馈送[]-enclosed可以或不能出现,这不是文本所说的。

规则的定义意味着:

FWS是一个或多个空格,可以选择在前面加上(零或更多空格和回车和行提要)。

这意味着只有一个或多个空格是折叠空格。对吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2018-04-30 15:19:13

规范和您的理解都是正确的,但是规范有点混乱。FWS规则不仅表示折叠空格,还表示可能包含折叠的任何空格。类似地,CFWS规则不仅表示带有折叠空格的注释,还表示允许空白和/或注释和/或折叠的任何位置。

这种组合多个规则的做法在语法中很常见,其中规则显式地编码优先级。例如,一种算术语言可以允许乘法和加法。这可能会被指定为

代码语言:javascript
复制
Addition = Addition "+" Multiplication / Multiplication
Multiplication = Multiplication "*" Number / Number

在该示例中,加法不仅匹配加法表达式,还匹配任何文字数字。在引用的RFC中,CFWS类似地允许注释或FWS,FWS允许折叠空格或任何空格--尽管语法使用了一个可选组[...],但它并不能完全清楚地说明这一点。

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

https://softwareengineering.stackexchange.com/questions/370202

复制
相关文章

相似问题

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