`

巴科斯范式

bnf 
阅读更多
α→β表示为α∷=β
* 非终结符用“<”和“>”括起来
* 终结符:基本符号集
* 其他
β(α1|α2…|αn)≡βα1|βα2…|βαn
{α1|α2…|αn} ul
{α1|α2…|αn}m l=0,u=m
[α] ≡ α| ε
……
双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号( < > )内包含的为必选项。
方括号( [ ] )内包含的为可选项。
大括号( { } )内包含的为可重复0至无数次的项。
竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
::= 是“被定义为”的意思。
巴科斯范式示例
下面是用BNF来定义的Java语言中的For语句的实例:
FOR_STATEMENT ::=
"for" "(" ( variable_declaration |
( expression ";" ) | ";" )
[ expression ] ";"
[ expression ] ";"
")" statement
这是用BNF来定义的BNF本身的例子:
syntax ::= { rule }
rule ::= identifier "::=" expression
expression ::= term { "|" term }
term ::= factor { factor }
factor ::= identifier |
quoted_symbol |
"(" expression ")" |
"[" expression "]" |
"{" expression "}"
identifier ::= letter { letter | digit }
quoted_symbol ::= """ { any_character } """
分享到:
评论

相关推荐

    C、Java和Python的BNF范式

    BNF(巴科斯范式,Backus-Naur Form)是一种形式化语法的表示方法,广泛用于描述编程语言的语法结构。它由John Backus和Peter Naur在20世纪50年代末提出,旨在为ALGOL编程语言提供一个清晰的语法定义。在本资源中,...

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

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

    BNF范式查看器

    巴科斯范式(Backus-Naur Form,简称BNF)是一种形式化的语法描述方法,广泛应用于计算机语言的定义,尤其是编译器设计领域。BNF查看器是一个专门用来解析和展示BNF范式的工具,它能够帮助用户理解和分析BNF规范,对...

    RFC2234(SIP遵循的BNF范式)

    #### 语法规范的扩展巴科斯范式:ABNF **ABNF(Augmented BNF for Syntax Specifications: ABNF)** 是一种基于传统巴科斯范式的扩展版本,用于描述语法规范。与原始的巴科斯范式相比,ABNF具有更丰富的表达能力和...

    b.rar_verilog ebnf

    下面我们将详细探讨递归下降分析、扩展巴科斯范式(EBNF)以及它们在Verilog中的应用。 **递归下降分析(Recursive Descent Parsing)** 递归下降分析是一种自顶向下的解析策略,它基于编程语言的语法结构,通过一...

    edk2-MetaDataExpressionSyntaxSpecification-release-1.30

    - **ABNF**: 增强巴科斯范式(Augmented Backus-Naur Form),一种用于描述语法结构的语言。 ##### 1.4 Target Audience 本规范的目标读者包括但不限于: - UEFI固件开发者 - EDK II构建系统维护者 - 需要理解和...

    AI-201300035-方盛俊-作业41

    该作业主要涉及数据库设计的相关知识,具体包括实体关系模型(ER模型)、关系模型、函数依赖、第二范式(2NF)和第三范式(3NF)以及巴科斯范式(BCNF)。以下是这些概念的详细说明: 1. **实体关系模型**:ER模型...

    形式语言自动机教学参考书.pdf

    同时,书中会介绍如何通过巴科斯范式(BNF)或扩展巴科斯范式(EBNF)来描述语言的语法结构。 自动机理论则是研究如何用一种计算设备,即自动机,来识别和处理这些形式语言。书中可能会详细讲解有限状态自动机的...

    北邮形式语言与自动机试题

    此外,考生可能需要理解和运用正则表达式、巴科斯范式(BNF)或扩展巴科斯范式(EBNF)来描述语言的结构。自动机的转换规则、接受状态、判定状态等问题也可能出现在这份试卷中。 第三份文档《形式语言与自动机试题....

    编译原理课件(介绍了 文法和语法的一些定义,NFA,DFA文法,LL1。,LR1等等)

    通常,我们用BNF(巴科斯范式)或EBNF(扩展巴科斯范式)来定义文法。例如,"E -&gt; E + T | T" 表示一个表达式E可以由另一个表达式E加上一个项T构成,或者直接是一个项T。 接着,**NFA(非确定性有限状态自动机)**...

    编译原理实验.zip

    通常,这些规则用巴科斯范式(BNF)或扩展巴科斯范式(EBNF)表示。开发者使用这些规则来构建解析器,解析器将源代码转化为抽象语法树(AST),这是理解程序结构的关键步骤。 `compiler.txt` 文件可能是实验指南或...

    编译原理实现的一个词法分析器和LR1语法分析器.zip

    "语法"文件夹可能包含了描述编程语言语法规则的文件,这些规则通常以BNF(巴科斯范式)或EBNF(扩展巴科斯范式)的形式表示。这些规则定义了如何组合标记来构成合法的语句或表达式。 在实际编程中,编译器的每个...

    dd.rar_语法分析_语法分析器

    语法分析器的实现通常涉及编译原理中的概念,如上下文无关文法(Context-Free Grammar, CFG)、巴科斯范式(Backus-Naur Form, BNF)和扩展巴科斯范式(Extended Backus-Naur Form, EBNF)。开发者可以使用各种工具...

    C++ 语法编译器 分析器

    "grammar.TXT"可能是C++的文法定义,通常以巴科斯范式(BNF)或扩展巴科斯范式(EBNF)的形式存在。文法定义了语言的规则,如语句、表达式、声明等,是编译器和分析器的基础。 "readme.txt"是常见的说明文件,通常...

Global site tag (gtag.js) - Google Analytics