精华内容
下载资源
问答
  • 巴克斯范式

    2017-02-23 13:59:46
    巴克斯范式(BNF:Bakus-Naur Form)是描述给定语言语法的一种形式化符号表示 现在几乎每一位编程语言书籍的作者都用它来定义编程语言的语法规则 在双引号中的字("word")代表着这些字符本身。而double_...

    巴克斯范式(BNF:Bakus-Naur Form)是描述给定语言语法的一种形式化符号表示

    现在几乎每一位编程语言书籍的作者都用它来定义编程语言的语法规则

    在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
    在双引号外的字(有可能有下划线)代表着语法部分。
    尖括号( < > )内包含的为必选项。
    方括号( [ ] )内包含的为可选项。
    大括号( { } )内包含的为可重复0至无数次的项。
    竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
    ::= 是“被定义为”的意思。
    巴科斯范式示例
    这是用BNF来定义的Java语言中的For语句的实例:
    FOR_STATEMENT ::=
    "for" "(" ( variable_declaration |
    ( expression ";" ) | ";" )
    [ expression ] ";"
    [ expression ]
    ")" statement

     

     

    展开全文
  • 编译原理 c-语言巴克斯范式 编译原理 巴克斯范式 c-语言 消除左递归 消除公共前缀
  • 我们采用一种称为巴克斯范式的注释法书写语法,这种方式由John Bakcus发明(他是Fortain语言的首席设计师)。Fortain语言的设计师们描述Fortain的方法是使用大量的例子和文字进行解释,这种方式很有效,很多程序员...

    语法描述;

    我们采用一种称为巴克斯范式的注释法书写语法,这种方式由John Bakcus发明(他是Fortain语言的首席设计师)。Fortain语言的设计师们描述Fortain的方法是使用大量的例子和文字进行解释,这种方式很有效,很多程序员能够理解并猜测出正确的含义,但是与足够精确还相距甚远。后来在描述Algol语言的时候,这种非正式的描述方法的不够精确的缺点逐渐凸显,于是John Bakcus就发明了我们现在用来描述语言的这种注释法。

    巴克斯构造

    巴克斯范式的目的是以一种简单概括的方式来精确地描述语言;巴科斯范式义同BNF范式(BNF: Backus-Naur Form 的缩写)描述计算机语言语法的符号集。

    1. BNF范式是一种用递归的思想来表述计算机语言符号集的定义规范
    2. 法则:
      1. ::=表示定义;
      2. “ ”双引号里的内容表示字符;
      3. <>尖括号里的内容表示必选内容;
      4. | 竖线两边的是可选内容,相当于or;
        现在在网络上大多数能搜出来的都是extended BNF ,允许使用循环,但正真的BNF只需要递归就够了。(多看一些例子就懂了~)

    非终止符;用尖括号括起来;中间是一个箭头;然后右边是一个可替换项;

    <non-terminal>->replacement //替换项可以是任何的东西,可以是非终止符,终止符等
    

    推导(derivative)的过程

    碰到终止符就需要停止,一个推导意味着从非终止符开始,按照此类来构成,最终左侧只剩下终止符,我们就用语法构成了一个句子;

    编程语言,比如python必须符合编码规范(match the grammar exactly)。我们使用自然语言交流的时候,尽管不经意间会出现一些小错误,也能让别人理解我们的意思;以英文举例子,me love you;尽管有语法错误,但是我想大家还是能理解这句话的意思;但是编程语言不同,它的代码必须严格符合语法;

    我们先来看看python语言中算数表达式的相关语法;
    Python Grammer for Arithmetic Expressions

    <Expressions>-><Expression><Operator><Expression>
    

    这条规则看起来有点像循环(circular),不过因为我们还有其他的规则,所以并不是彻底的循环(completely circular),这称为递归定义(recursive definition)
    To make a good recursive defintion,we need at least two rules,we need one where we can keep going,we need one where we can stop;

    < Expressions >->< Expression ><Operator>< Expression>
    < Expressions >->< Number >
    < Operator>->+
    < Operator>->*
    < Number>->0,1,... //对于数字的指定有些复杂,我们假设这些数字已知
    

    以上的语法规则虽然很短,但是却能表达无穷无尽的内容(express infinitely many things)
    原因是两侧都有表达式,我们可以用一个衍生的表达式去替换另一个表达式,并这样重复下去;
    我们再加一条规则

    <Expressions>-><Expression><Operator><Expression>
    <Expressions>-><Number>
    <Operator>->+
    <Operator>->*
    <Number>->0,1,... //对于数字的指定有些复杂,我们假设这些数字已知
    <Expressions>->(<Expression>)
    

    虽然这是一个很短的语法,但是他已经强大到足够生成我们遇到的所有python表达式了
    print 6+ //不合法
    print 6+6 //合法
    为什么”6+“不合法呢?
    因为推导不出来啊

    展开全文
  • 简单了解巴克斯范式

    千次阅读 2017-07-27 21:20:37
    巴科斯范式(BNF) 现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则   在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。 在双引号外的字(有可能有...

    巴科斯范式(BNF)

    现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则

     

    在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。

    在双引号外的字(有可能有下划线)代表着语法部分。

    尖括号( < > )内包含的为必选项。

    方括号( [ ] )内包含的为可选项。

    大括号( { } )内包含的为可重复0至无数次的项。

    竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。

    ::= 被定义为的意思。

    在学习SQL语言的时候经常可以见到BNF形式的描述,在此简单记录一下

    展开全文
  • ABNF&BNF 巴克斯范式

    2018-02-27 17:11:00
    https://www.cnblogs.com/qook/p/5957436.html 转载于:https://www.cnblogs.com/ArcherHuang/p/8479897.html

    https://www.cnblogs.com/qook/p/5957436.html

    转载于:https://www.cnblogs.com/ArcherHuang/p/8479897.html

    展开全文
  • 巴克斯范式的内容:  尖括号( )内包含的为必选项。  : : = 是 “被定义为”的意思。  方括号( [ ] )内包含的为可选项。  大括号( { } )内包含的为可重复0至无数次的项。  竖线( | )表示在其左右两边任选一...
  • ABNF是各类RFC中经常遇到的数据定义语法,在此把他的语法简单做个总结,所有内容均参照RFC5234的内容和结构。 1 规则定义 rule = definition ;comment  一条语句以回车换行结束。其中rule为规则名,大小写不...
  • 巴克斯-诺尔范式语法说明

    千次阅读 2014-11-09 16:39:01
    巴克斯-诺尔范式 ,有兴趣的可以戳 维基百科 看完百科,感觉当下的好多语法(我所认知的语言中)语义结构都遵循它的规则定义,比如sql,js,c#,java,下面是一些摘录: 在双引号中的字("word")代表着这些...
  • 查询用 规则 形式定义 意义 ALPHA %x41-5A / %x61-7A 大小写字母(A-z) DIGIT %x30-39 数字(0-9) HEXDIG DIGIT/“A”/“B”/“C”/“D”/“E”/“F” 十六进制数(0-9,A-F,a-f) ...SP/HT...
  • 读完本篇博文大家可以收获的是: * 纨绔子弟翘课学习过程 * 巴克斯如何做出人生选择的 * 巴克斯如何解决月历程序开发问题 * 巴克斯解决浮点运算 * FORTAN对后代高级语言开发的影响 * 什么是巴克斯范式
  • 有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴克斯范式(BCNF)、第四范式(4NF) 根据不同的条件严格区分,以便于消除冗余 接下来先解释一下这几个名词 完全函数依赖 记为X->Y,例如:(学号,课程号)->...
  • RFC2234(SIP遵循的BNF范式) ...4. 扩展巴克斯范式形式的扩展巴克斯范式定义 7 5. 安全考虑 7 6. 附录A-核心 8 6.1 核心规则 8 6.2 公共编码 9 7. 致谢 9 8. 参考 9 9. 作者地址 9 10. 完整版权声明 10
  • 巴科斯范式(也称为巴科斯-瑙尔范式巴克斯-诺尔范式)即 BNF 是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于程序设计...
  • 巴科斯范式(也称为巴科斯-瑙尔范式巴克斯-诺尔范式)即 BNF 是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于程序...
  • ABNF程序

    2008-06-24 11:23:51
    多年来,巴克斯范式(BNF)的一个修订版,即扩展巴克斯范式(ABNF),已经在许多互 联网规范中流行。该版本平衡了压缩性和简单性,具有合理的表达能力。在早期的ARPA网 络中,每个规范都包含了自己的一个扩展...
  • BNF范式

    2012-11-05 21:27:39
    也称为巴科斯-瑙尔范式巴克斯-诺尔范式),是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。  是科学哲学家库恩提出的科学前进的模式,大意是一起工作的科学家们大体有一个共同的守则和...
  • Augentmented BNF (Backus-Naur Form) 增长巴克斯范式
  • 巴科斯范式

    千次阅读 2006-09-25 22:03:00
    巴科斯范式(也称为巴科斯-瑙尔范式巴克斯-诺尔范式)是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于程序设计语言、...
  • BNF范式简介

    千次阅读 2015-04-24 21:23:11
    Form,也译为巴科斯-瑙尔范式巴克斯-诺尔范式),是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。它是由约翰·巴科斯(John Backus)和彼得·诺尔(Peter Naur)首先引入的用来描述...
  • 第一章:绪论

    2019-10-04 21:23:22
    巴克斯范式(上下文无关文法) 语言的乘积依旧是语言。 习题训练过程 转载于:https://www.cnblogs.com/saber123/p/7842934.html
  • 由HTTP的\r\n所联想到的

    千次阅读 2016-01-22 17:08:54
    本文主要是以HTTP使用\r\n来换行,联想到不同操作系统的换行问题,对HTTP是一种基于文本的协议做了一次有意思的...使用巴克斯范式来表示HTTP消息如下  http-message = start-line  *(message-headerCRLF)  CRLF
  • 关系数据库7.5 规范化7.5.1 第一范式(1NF)7.5.2 第二范式(2NF)7.5.3 第三范式(3NF)7.5.4 巴克斯范式(BCNF)7.5.5 第四范式(4NF)7.5.6 第五范式(5NF,不考)7.6 Armstrong公理系统7.6.1 Armstrong公理系统...
  • 引入合作规划表达式给出基于扩展巴克斯范式(EBNF)个体agent的3APL语法。利用推理规则、结构结合变换规则等概念提出新的多agent合作操作语义。并深入研究多agent合作慎思循环过程,通过例子说明了多agent间如何合作...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

巴克斯范式