编译系统中BNF: Backus-Naur Form
2016-10-20 17:18
288 查看
巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法。
简称为:BNF符号。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。
在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号( < > )内包含的为必选项。
方括号( [ ] )内包含的为可选项。
大括号( { } )内包含的为可重复0至无数次的项。
竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
::= 是“被定义为”的意思。
巴科斯范式示例
endl;
简称为:BNF符号。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。
巴科斯范式的内容
在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号( < > )内包含的为必选项。
方括号( [ ] )内包含的为可选项。
大括号( { } )内包含的为可重复0至无数次的项。
竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
::= 是“被定义为”的意思。
巴科斯范式示例
这是用BNF来定义的Java语言中的For语句的实例: FOR_STATEMENT ::= "for" "(" ( variable_declaration | ( expression ";" ) | ";" ) [ expression ] ";" [ expression ] ")" statement
扩展的巴科斯范式 Augmented BNF
RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进,比如说,在ABNF中,尖括号不再需要。endl;
相关文章推荐
- 学习巴克斯范式BNF(Backus Naur Form)读懂SAP HANA语法
- 编译系统实现完了.总结下
- 编译系统所带来的语言特性的不同
- 用cygwin交叉编译环境构造基于newlib的目标系统
- 在VM上学习嵌入式Linux系统的构建之一--编译内核
- Inside ASP.NET 2.0-即时编译系统
- 走向Linux系统高手之路 内核编译过程解析
- 编译UBUNTU 7.04 系统的内核
- 走向Linux系统高手之路 编译内核解析
- 由成幻OnlineJudge学习如何做自己的Acm-Icpc在线评判系统-5.在线编译与测试系统代码粗解
- 开始看uc内核代码,不能编译,原因找到,估计的重装系统了,惨!
- 改进粒子系统-动态编译Shader
- [论文]基于C++的虚拟机构造技术及其编译系统的研究与设计 (小型篇)
- _MBCS与_UNICODE环境编译系统配置
- Inside ASP.NET 2.0-即时编译系统
- 编译busybox支持嵌入式系统需要注意的几点
- 写人器(生物编写及生物遗传特性编码)高级语言编译系统
- 终于用上gcc-4.1编译的系统了
- 在Windows系统上编译VBox源码
- Inside ASP.NET 2.0-即时编译系统