扩充巴科斯范式

✍ dations ◷ 2025-11-25 21:38:56 #扩充巴科斯范式

在计算机科学中,扩充巴科斯-瑙尔范式(ABNF)是一种基于巴科斯-瑙尔范式(BNF)的元语言,但它有自己的语法和派生规则。ABNF的原动原则是描述一种作为双向通信协议的语言的形式系统。它是由 (页面存档备份,存于互联网档案馆)("STD 68",大小写样式按照原文)定义的,也就是RFC 5234,经常用于互联网工程任务组(IETF)通信协议的定义语言。

RFC 5234取代了RFC 4234 (取代了RFC 2234).

一个ABNF规范是一些推导规则的集合,书写为:

规则 = 定义;注释CR LF

其中:

规则名字是不区分大小写的: <rulename>, <Rulename>, <RULENAME><rUlENamE>都指的是同一个规则。规则名字由一个字母以及后续的多个字母、数字和连字符(减号)组成。

用尖括号(“<”,“>”)包围规则名并不是必需的(如同它们在BNF里那样),但是它们可以用来在散文中界定规则名,以方便识别出规则名。

最终值由一个或多个数值字符指定。

数值字符可按下面的方式指定:先是一个百分号“%”,紧跟着基数(b = 二进制, d = 十进制, x = 十六进制),再其后是这个数值或数值串(用“.”来指示串联)。例如:“回车”可以用十进制的%d13或十六进制的%x0D来指定,而“回车换行”则可以用%d13.10来指定。

字面文本是通过包含在在双引号(")中字符串来指定的。这些字符串是不区分大小写的,使用的字符集是(US-)ASCII。所以字符串“abc”将匹配“abc”,“Abc”,“aBc”,“abC”,“ABc”,“AbC”,“aBC”和“ABC”。对于区分大小写的匹配,必须定义明确的字符,例如:若要匹配“aBc”,定义必须是%d97 %d66 %d99

空白字符被用来分隔定义中的各个元素:要使空格被识别为分割符则必须明确的包含它。

规则1规则2

规则可以通过列出一系列的规则名来定义。

要匹配字符串“aba”可以使用下列规则:

规则1 / 规则2

一个规则可以通过用斜杠(“/”)分隔的可供选择的子规则列表来定义。

要接受规则<foo>或规则<bar>可构造如下规则:

规则1 =/ 规则2

可以通过在和之间使用“=/”来向一个规则增加补充选择。

规则

等价于

%c##-##

数值范围可以通过使用连字符(“-”)来指定。

规则

等价于

(规则1规则2)

在中,元素可以放置在圆括号中来将组合起来,该组合视为单个元素。

要匹配“elem foobar snafoo”或“elem tarfoo snafoo”可以构造下列规则:

要匹配“elem foobar”或“tarfoo snafoo”可以构造下列规则:

元素前面的星号*表示重复,其完整形式是:

m*n规则

要表示一个元素的重复,就要使用<m>*<n>元素形式。可选的<m>给出要包含的元素的最小数目,默认为0;可选的<n>给出要包含的元素的最大数目,默认为无穷大。

例子:

n规则

要表示特定数目的元素可使用形式<n>元素,相当于用不定量重复形式表示的<n>*<n>元素

使用2DIGIT得到两个数字,使用3DIGIT得到三个数字。(DIGIT在下面的核心规则中定义,也见例子中的)。

要表示可选元素,下列构造是等价的:

;注释

注释从一个分号(“;”)开始,并持续到此行的结束。

下面的操作符给出了从高(结合最紧密)到低(结合最松散)的优先级:

操作符与一起使用会造成混淆,因此建议使用来确保串联组的明确。

例如:

我们 = 你 我/他 她

会产生下面两种歧义:

所以,使用来确保不会产生歧义:

(你 我)/(他 她)

核心规则

核心规则定义于ABNF标准中。

在巴科斯范式(BNF)条目中的邮政地址的例子可以被指定为:

postal-address = name-part street zip-partname-part = *(personal-part SP) last-name  CRLFname-part = / personal-part CRLFpersonal-part = first-name / (initial ".")first-name = *ALPHAinitial = ALPHAlast-name = *ALPHAsuffix = ("Jr." / "Sr." / 1*("I" / "V" / "X"))street =  house-num SP street-name CRLFapt = 1*4DIGIThouse-num = 1*8(DIGIT / ALPHA)street-name = 1*VCHARzip-part = town-name "," SP state 1*2SP zip-code CRLFtown-name = 1*(ALPHA / SP)state = 2ALPHAzip-code = 5DIGIT 

RFC 5234 (页面存档备份,存于互联网档案馆)加入了一条结合LWSP的警告,如下:

若使用该直线空白规则,将允许存在只包含空白字符的行,而这样的行在邮件头中已不再合法,并且已在其他环境中导致了互操作问题。不要在定义邮件头时使用它,在其他环境下使用时也要格外注意。

相关

  • 自转轴转动,是指物件旋转的运动。三维物件绕着旋转的轴称为转动轴或旋转轴,若旋转轴通过物体的质心,则称此物体在自转,而此轴称为自转轴。恒星和行星都会自转,小天体亦大多会自转。作为
  • 邹衍邹衍(约前305年-前240年),《史记》作驺衍,战国时期齐国人,中国战国时期阴阳家学派创始者与代表人物、稷下学宫学者。因他“尽言天事”,当时人们称他“谈天衍”。其主要学说是“五德
  • 兰斯福德·阿多兰斯福德·阿多(英语:Ransford Addo,1983年7月21日-),是一名加纳足球运动员,司职中后卫。兰斯福德·阿多曾效力于多支不同国家的球队,包括法国的波尔多, 比利时的布鲁日、哈勒尔贝克
  • 中华苏维埃中央博巴自治政府中华苏维埃中央博巴自治政府,亦称博巴依得瓦(藏语:.mw-parser-output .uchen{font-family:"Qomolangma-Dunhuang","Qomolangma-Uchen Sarchen","Qomolangma-Uchen Sarchung","Q
  • 洛阿河洛阿河(西班牙文: Río Loa)位于智利安托法加斯塔大区的北部,为一条U形的河流。其总长度为440公里,是智利最长的河流,也是阿他加马沙漠(Atacama Desert)中的主要河道。洛阿河的源流
  • 十堰市图书馆十堰市图书馆是位于中华人民共和国湖北省十堰市的一座综合性公共图书馆,于1979年2月开馆。现馆面积4,747平方米,建筑面积1.26万平方米,主要收藏汽车制造业、橡胶制品业、地方轻
  • 夏川椎菜夏川椎菜(1996年7月18日-)是一名日本千叶县出身的女性声优,隶属于Music Ray'n。于2011年Music Ray'n主办的“第2回ミュージックレインスーパー声优オーディション”中合格,开始进行声优活动。2015年,与同为Music Ray'n所属的麻仓桃、雨宫天一起组成了声优组合“TrySail”开始活动。2017年1月21日,宣布发行首张个人单曲歌手出道。爱称为ナンス。有养猫和狗。也是《魔法少女小圆》的忠实影迷。2020年4月17日,开设417P频道417Pチャンネル并每周一上传新影片。2
  • 塔拉·斯特朗塔拉·琳恩·查伦多夫·斯特朗(英语:Tara Lyn Charendoff Strong,1973年2月12日-)为加拿大裔美国女演员(目前同时拥有加拿大与美国国籍)。主要参与的演出为实境秀与电视动画,曾于多部动画中担任配音员,包括《Rugrats》、《飞天小女警》、《趣怪守护仙》、《Drawn Together》、《独角猫》、《少年泰坦》及其衍生作品《少年泰坦 GO!》以及《小马宝莉:友谊就是魔法》;还有游戏《真人快打X》、《最终幻想X-2》和《蝙蝠侠:阿卡姆》系列等。
  • 邱和顺案邱和顺案,也称陆正案,是台湾司法史上全程羁押期间最长的刑事案件(邱和顺于1988年9月因本案遭羁押,至2011年7月底定谳。截至今已羁押32-33年),也是目前国际罕见。此外,本案因为有残忍的刑求事实致使侦办员警被判刑确定,甚至勒赎字条之指纹与录音带显示作案真凶另有其人却遭忽略,历审判决更将刑求所取得的自白切割拼凑作为唯一证据,促使国际特赦组织发布声援书,国内多个公民团体展开救援行动、为其喊冤,法律学界于2010年发表人权报告书批判刑事程序与法院判决,以及义务律师团长期进行辩护。这23年间,最高法院总共撤
  • 森下悠里森下悠里(日语:森下 悠里,1985年1月30日-),是日本东京都出身的知名写真偶像、模特、演员。最高学历为迹见学园女子大学短期大学部毕业。