族谱网 头条 人物百科

扩充巴科斯范式

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:564
转发:0
评论:0
介绍一个ABNF规范是一些推导规则的集合,书写为:其中:“规则”是不区分大小写的非最终符号“定义”由定义该规则的一系列符号组成“注释”用于记录“CRLF”(回车、换行)用来结束规则名字是不区分大小写的:,,和都提及同一个规则。规则名字由一个字母以及后续的多个字母、数字和连字符(减号)组成。用尖括号(“”)包围规则名并不是必需的(如同它们在BNF里那样),但是它们可以用来在散文中界定规则名,以方便识别出规则名。最终值最终值由一个或多个数值字符指定。数值字符可按下面的方式指定:先是一个百分号“%”,紧跟着基数(b=二进制,d=十进制,x=十六进制),再其后是这个数值或数值串(用“.”来指示串联)。例如:“回车”可以用十进制的%d13或十六进制的%x0D来指定,而“回车换行”则可以用%d13.10来指定。字面文本是通过包含在在双引号(")中字符串来指定的。这些字符串是不区分大小写的,使用的字符集...

介绍

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

其中:

“规则”是不区分大小写的非最终符号

“定义”由定义该规则的一系列符号组成

“注释”用于记录

“CR LF”(回车、换行)用来结束

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

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

最终值

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

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

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

操作符

空白字符

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

串联

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

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

foo = %x61 ; a

bar = %x62 ; b

mumble = foo bar foo

选择 /

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

要接受规则或规则可构造如下规则:

foobar = foo / bar

增量选择 =/

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

规则

ruleset = alt1 / alt2 / alt3 / alt4 / alt5

等价于

ruleset = alt1 / alt2

ruleset =/ alt3

ruleset =/ alt4 / alt5

值范围%c##-##

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

规则

OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7"

等价于

OCTAL = %x30-37

序列组合 ()

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

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

group = elem (foobar / tarfoo) snafoo

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

group = elem foobar / tarfoo snafoo

group = (elem foobar) / (tarfoo snafoo)

不定量重复m*n

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

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

例子:

*元素表示零个或更多元素

1*元素表示一个或更多元素

2*4元素表示两个至四个元素

定量重复n

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

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

可选序列[]

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

[foobar snafoo]

*1(foobar snafoo)

0*1(foobar snafoo)

注释;

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

操作符优先级

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

规则名、最终值

注释;

值范围%c##-##

重复*

组合 ()、可选[]

串联

选择 /

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

例如:

会产生下面两种歧义:

(你 我)/(他 她)

(你) (我/他) (她)

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

核心规则

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

例子

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

隐患

RFC 5234加入了一条结合LWSP的警告,如下:


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 巴科斯范式
发展历史约翰·巴科斯首次在ALGOL58中实现巴科斯范式。彼得·诺尔在ALGOL60之中,进一步发展它的概念并将它的符号加以简化,称其为巴科斯范式(BackusNormalForm)。但高德纳主张应称为巴科斯-诺尔范式(Backus–NaurForm),因为它不算是一种正规形式(Normalform)。介绍BNF规定是推导规则(产生式)的集合,写为:::=这里的是非终结符,而表达式由一个符号序选择或用指示选择的竖杠"|"分隔的多个符号序列构成,每个符号序列整体都是左端的符号的一种可能的替代。从未在左端出现的符号叫做终结符。参见八篇书(使用数学结构的梵语文法)扩充巴科斯范式(ABNF)扩展巴科斯范式(EBNF)GOLDBNF分析器GNUbisonGNU版本的Yacc正则表达式Wirth语法表示法1977提出的对BNF的一个替代者Yacc分析器生成器(与Lex预处理器一起使用)ANTLR用Ja...
· 扩展巴科斯范式
基本代码,如由终结符即可视字符、数字、标点符号、空白字符等组成的计算机程序的源代码。EBNF定义了把各符号序列分别指派到非终结符的产生规则:digitexcludingzero="1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";digit="0"|digitexcludingzero;这个产生规则定义了在这个指派的左端的非终结符digit。竖杠表示可供选择,而终结符被引号包围,最后跟着分号作为终止字符。所以digit是一个"0"或可以是"1或2或3直到9的一个digitexcludingzero"。产生规则还可以包括由逗号分隔的一序...
· 从书面范式到口头范式:论民间文艺学的范式转换与学科独立
【内容提要】传统民间文艺学尽管认识到民间文学是口头文学,却从来没有把民间文学当成口头文学看待和研究,而是首先把口头文学转化为书面文本,然后按书面文学的概念框架和学术范式进行研究,正是这种书面范式的积习,导致民间文艺学学科独立性的丧失。民俗学试图摆脱民间文艺学以书面文本为中心的书面范式,走向田野研究,但因为放弃了对文本的理解和对意义的追寻而使自己混迹于人类学和社会学,学科独立性愈发模糊。本文指出,惟有在走向田野的同时,以对民间口头文本的理解为中心,实现从书面范式、田野范式向口头范式的转换,才能真正确立民间文艺学和民俗学的学科独立地位。【关键词】民间文艺学民俗文化口头文学民间文化一学科独立已经成为中国民间文艺学从业者的心病,从北大歌谣运动算起,这门学科在中国尽管已经有八十多年的历史了,却从来没有获得一块真正属于自己的园地,在1949年后,它先是寄身中国语言文学的篱下,后又借居社会学的地盘,一直...
· 从书面范式到口头范式:论民间文艺学的范式转换与学科独立
【内容提要】传统民间文艺学尽管认识到民间文学是口头文学,却从来没有把民间文学当成口头文学看待和研究,而是首先把口头文学转化为书面文本,然后按书面文学的概念框架和学术范式进行研究,正是这种书面范式的积习,导致民间文艺学学科独立性的丧失。民俗学试图摆脱民间文艺学以书面文本为中心的书面范式,走向田野研究,但因为放弃了对文本的理解和对意义的追寻而使自己混迹于人类学和社会学,学科独立性愈发模糊。本文指出,惟有在走向田野的同时,以对民间口头文本的理解为中心,实现从书面范式、田野范式向口头范式的转换,才能真正确立民间文艺学和民俗学的学科独立地位。【关键词】民间文艺学民俗文化口头文学民间文化一学科独立已经成为中国民间文艺学从业者的心病,从北大歌谣运动算起,这门学科在中国尽管已经有八十多年的历史了,却从来没有获得一块真正属于自己的园地,在1949年后,它先是寄身中国语言文学的篱下,后又借居社会学的地盘,一直...
· 马尔科·范巴斯滕
生涯球员时代球会范巴斯滕出生于荷兰的乌得勒支,青年时代为阿贾克斯青年军成员。他于1982年首次于荷甲联赛上阵,并取得职业生涯中第一球。后来,阿贾克斯开始重用范巴斯滕,为攻击核心。在1982至1985年间各球季,他在联赛射入59球,协助球会赢得三次荷甲冠军;1983年赢得荷兰杯冠军,当届还是双料冠军。及后范巴斯滕于1984至1987年间,连续四季成为联赛神射手。这在足球史上是极罕见的。其后1985-1986年球季攻入37球,不仅是范巴斯滕在职业生涯之中最多的入球,更获得欧洲金靴奖。而在1987年中的欧洲优胜者杯决赛中“一箭定江山”,以1:0击败东德的莱比锡火车头,为球会得到14年以来的第一个欧洲冠军。1987年,范巴斯滕与路德·古利特一同转会至意甲的AC米兰,但因伤患关系,首季范巴斯滕只上阵联赛11场,入3球。至伤愈后AC米兰签入弗兰克·里杰卡尔德,与范巴斯滕以及路德·古利特成为“荷兰三剑客

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信