`
unique5945
  • 浏览: 136822 次
  • 来自: 杭州
社区版块
存档分类
最新评论

BNF范式和EBNF范式

    博客分类:
  • JAVA
阅读更多
1、什么是BNF范式,什么又是EBNF范式?(在学习中经常会碰到用BNF范式描述的规则,老是忘记每个符号确切的作用,现在把他们一一罗列如下,亲手记录的东西应该能记住吧。。。-__-|||)
答:巴科斯范式及其扩展(BNF & Augmented BNF)
   1)巴科斯范式:巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。
   2)巴科斯范式的内容:
在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
< > : 内包含的为必选项。
[ ] : 内包含的为可选项。
{ } : 内包含的为可重复0至无数次的项。
|  : 表示在其左右两边任选一项,相当于"OR"的意思。
::= : 是“被定义为”的意思
  3)扩展的巴科斯范式(Augmented BNF):RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进,比如说,在ABNF中,尖括号不再需要。
   4)EBNF的基本内容:
  "..." : 术语符号
  [...] : 选项:最多出现一次
  {...} : 重复项: 任意次数,包括 0 次
  (...) : 分组
    |   : 并列选项,只能选一个
  斜体字: 参数,在其它地方有解释

例子BNF应用较多,以下给出一个简单例子,这是用BNF来定义的Java语言中的For语句的实例:
FOR_STATEMENT ::=
      "for" "(" ( variable_declaration |
  ( expression ";" ) | ";" )
      [ expression ] ";"
      [ expression ] ";"
      ")" statement
分享到:
评论

相关推荐

    ISO_IEC_14977_1996(E) 信息技术 语法元语言 扩展的BNF标准(EBNF) .pdf

    信息技术 语法元语言 扩展的BNF标准(EBNF) 巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用...

    EBNF.cr:使用(E)BNF和bisonYACC语法:解析,FIRSTFOLLOW集,CNF,转换,LR和LL解析表

    EBNF(扩展巴科斯范式)和Bison/YACC是实现这一目标的常用工具。本文将详细探讨这些概念,以及它们在解析过程中的应用,包括FIRST/FOLLOW集、规范形文法(CNF)、转换、LR和LL解析表等核心知识点。 首先,EBNF是一...

    b.rar_verilog ebnf

    EBNF是一种用于描述形式语言的符号表示法,它是原始巴科斯范式(BNF)的扩展,增加了更多的构造符来表达更复杂的文法规则。在EBNF中,可以表示重复、选择、可选等语法结构,使得文法规则的描述更加简洁和灵活。例如...

    cifa.rar_EBNF

    EBNF是一种用于规范和描述编程语言语法的形式化表示方法,它扩展了传统的巴科斯范式(BNF),使得表达更为灵活和简洁。EBNF提供了一种方式来定义语法规则,包括终结符(如标识符、常量、运算符)和非终结符(代表更...

    EBNF-源码.rar

    EBNF比传统的巴科斯范式(BNF)更加灵活,能够更方便地表达复杂的语法规则。 EBNF的基本结构包括: 1. **非终结符**:表示语言中的语法构造块,通常用大写字母表示,如`Program`、`Statement`等。 2. **终结符**:...

    ebnf2yacc-开源

    `ebnf2yacc` 的亮点在于它接受扩展巴科斯范式(EBNF)语法描述,这是一种形式化的语言定义方式,比传统的巴科斯范式(BNF)更具有灵活性。 EBNF 是一种表示语法规则的标准格式,允许使用重复、选择和选项等高级构造...

    编译器前端 .rar

    2. BNF 和 EBNF:学习如何使用巴科斯范式(BNF)或扩展巴科斯范式(EBNF)来描述编程语言的语法。 3. 抽象语法树(AST):理解AST的结构和构建方法,以及如何通过AST进行程序分析。 4. 词法分析器生成工具:例如...

    一种XDL网表电路到有向超图的转换系统.docx

    XDL 文件对应一个 FPGA 设计的硬件实现,使用 BNF 范式详细地描述了整个 FPGA 设计的布局布线信息,包含 design、module、instance 和 net 等语句,提供了 FPGA 设计在芯片微观级别(网表级)逻辑资源的配置信息和...

    基于lex和yacc的词法分析器+语法分析器,可以在控制台生成语法分析树.zip

    使用BNF(巴科斯-诺尔范式)或EBNF(扩展巴科斯-诺尔范式)来定义你的语言的语法。 为每个语法规则编写一个动作,这个动作通常包括构建语法分析树的一部分。 集成lex和yacc: lex生成的词法分析器会读取源代码,并...

    用预测分析表实现c子集语法分析

    在创建预测分析表之前,我们需要将这些规则转化为BNF(巴科斯范式)或EBNF(扩展巴科斯范式)的形式,这是一种形式化的表示语言的语法结构的方法。 接着,我们需要构建预测分析表。预测分析表由状态和输入符号组成...

    程序语言设计原理(第五版)课件

    2. **语法和语法规则**:讲解形式语言和文法,如巴科斯范式(BNF)和扩展巴科斯范式(EBNF),用于描述编程语言的结构。 3. **编译器与解释器**:介绍编译器和解释器的工作原理,包括词法分析、语法分析、语义分析...

    kgt:BNF争斗和铁路图

    BNF(巴科斯范式,Backus-Naur Form)是一种形式语法的表示法,由John Backus和Peter Naur提出,它使用一套符号来描述一种语言的句法结构。BNF通常用于定义编程语言的文法,如变量、表达式、语句等,使得编译器或...

    《编译原理》(龙书)课后习题分析

    理解并应用巴科斯范式(BNF)和扩展巴科斯范式(EBNF)是这一章的关键。 第五章可能涉及到语义分析和中间代码生成。习题可能涵盖如何为高级语言构造语义规则,以及如何生成三地址码或其他中间表示形式。此外,错误...

    哈尔滨工业大学计算机考研复试面试编译原理操作系统软件工程

    考生应熟悉巴科斯范式(BNF)和扩展巴科斯范式(EBNF)等描述语言的形式定义方法,以及LR、LL和LL(*)等解析技术。同时,了解编译器的错误处理机制、中间代码生成以及目标代码优化策略也很重要。 其次,操作系统是...

    编译原理课件.rar

    课程强调形式化描述技术,如巴科斯范式(BNF)和扩展巴科斯范式(EBNF),它们是描述编程语言语法的标准工具。通过这些描述,可以明确地定义语言的结构和规则,为编译器的构造提供清晰的指导。 在编译原理和技术的...

    编译原理的课后答案清华版

    巴科斯范式(BNF)和扩展巴科斯范式(EBNF)是描述语言语法的常用工具。在这个阶段,学生可能需要编写解析器规则来处理不同类型的语法结构。 语义分析阶段涉及理解程序的实际意义,确保它符合语言的规则。这包括...

    程序设计语言原理期末复习.7z

    2. **语法结构**:学习如何通过巴科斯范式(BNF)或扩展巴科斯范式(EBNF)来定义语言的语法结构,理解词法分析、语法分析的过程。 3. **数据类型与控制结构**:包括基本的数据类型(如整型、浮点型、字符串等),...

    计算机编译原理第三版张幸儿课后答案

    文法的规范形式,如巴科斯范式(BNF)和扩展巴科斯范式(EBNF),以及如何构造和理解这些文法在编译器设计中的应用,都是这一章的重点。此外,递归下降解析和自底向上解析等解析技术也是学习的重点。通过课后习题,...

    编译原理(龙书)第二三四章习题解答

    这一章介绍了巴科斯范式(BNF)和扩展巴科斯范式(EBNF)表示语法规则的形式,并讲解了如何设计和构造解析器。语法分析的任务是确定输入序列是否符合给定语言的语法规则,常见的解析技术有递归下降解析、LR解析和LL...

Global site tag (gtag.js) - Google Analytics