BNF(巴科斯范式)
BNF
巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法(最早用于描述ALGOL 60 编程语言)。
巴科斯范式的内容
- 在双引号中的字(“word”)代表着这些字符本身。而double_quote用来代表双引号。
- 在双引号外的字(有可能有下划线)代表着语法部分。
- 尖括号( < > )内包含的为必选项。
- 方括号( [ ] )内包含的为可选项。
- 大括号( { } )内包含的为可重复0至无数次的项。
- 竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。
- ::= 是“被定义为”的意思。
巴科斯范式示例
- 这是用BNF来定义的Java语言中的For语句的实例:
FOR_STATEMENT ::=
"for" "(" ( (variable_declaration ";") |
( expression ";" ) | ";" )
[ expression ] ";"
[ expression ]
")" statement
- 这是Oracle packages的BNF定义:
package_body ::= "package" package_name "is"
package_obj_body
[ "begin" seq_of_statements ]
"end" [ package_name ] ";"
package_obj_body ::= variable_declaration
| subtype_declaration
| cursor_declaration
| cursor_body
| exception_declaration
| record_declaration
| plsql_table_declaration
| procedure_body
| function_body
procedure_body ::= "procedure" procedure_name
[ "(" argument { "," argument } ")" ]
"return" return_type
"is"
[ "declare" declare_spec ";" { declare_spec ";" } ]
"begin"
seq_of_statements
[ "exception" exception_handler ]
"end" [ procedure_name ] ";"
statement ::= comment
| assignment_statement
| exit_statement
| goto_statement
| if_statement
| loop_statement
| null_statement
| raise_statement
| return_statement
| sql_statement
| plsql_block
- 这是用BNF来定义的BNF本身的例子:
syntax ::=
rule ::= identifier "::=" expression
expression ::= term { "|" term }
term ::= factor
factor ::= identifier |
quoted_symbol |
"(" expression ")" |
"[" expression "]" |
"{" expression "}"
identifier ::= letter { letter | digit }
quoted_symbol ::= """ """
BNF(巴科斯范式)相关推荐
- 巴科斯范式和sql语言
查询Mysql帮助文档,如何写SQL语句的时候,需要注意SQL语法,这里就需要知道BNF巴科斯范式. 巴科斯范式:BNF用于描述计算机语言.基本的规则如下: 尖括号<> 内包含的为必选项. ...
- 巴科斯范式BNF: Backus-Naur Form介绍
巴科斯范式(BNF: Backus-Naur Form. 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法(最早用于描述ALGOL 60 编程 ...
- 什么是BNF EBNF 巴科斯范式及其扩展 BNF Augmented BNF
什么是BNF范式,什么又是EBNF范式? 巴科斯范式及其扩展 BNF & Augmented BNF 什么是巴科斯范式? 巴科斯范式(BNF: Bac ...
- CS【1】:巴科斯范式(BNF: Backus-Naur Form)介绍与例子
太幸运了,今天考试刚刚考到,把笔记放出来哦 有时间更新一下原题 巴科斯范式 (BNF: Backus-Naur Form 的缩写)描述计算机语言语法的符号集 在双引号中的字("word&qu ...
- 巴科斯范式(Backus-Naur Form, BNF)
什么是巴科斯范式(Backus-Naur Form, BNF) 描述语言的语法规则 游戏规则 在双引号中的东西代表它本身 双引号外的字代表语法 <必选项> [可选项] {0次或多次} | ...
- BNF范式(巴科斯范式)
BNF范式(巴科斯范式) 是一种用递归的思想来表述计算机语言符号集的定义规范. 基本结构: <non-terminal> ::= <replacement> non-termi ...
- java 范式 问号_巴科斯范式和扩展巴科斯范式
巴科斯范式(也称为巴科斯-瑙尔范式.巴克斯-诺尔范式)即 BNF 是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言.尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于 ...
- 巴科斯范式(BNR范式,Backus-Naur Form)
前言: 当你搜索看到这篇文章时,我想你已经有了 动机来了解什么是巴科斯范式(BNR范式,Backus-Naur Form).对于本人而言,我是因为需要看一门编程语言的IEEE标准文档而需要了解BNR范 ...
- 扩展巴科斯范式(EBNF)简介
介绍 扩展巴科斯-瑙尔范式(Extended Backus–Naur Form,EBNF)是一种用于描述计算机编程语言等正式语言的与上下文无关语法的元语法(metasyntax)符号表示法.简而言之, ...
最新文章
- 电信的 DNS 服务器地址
- 【MDCC 2015】开源选型之Android三大图片缓存原理、特性对比
- Meavn 搭建项目遇到Error creating bean with name 'sessionFactory' defined in class path resource...
- 常用邮件客户端软件设置
- 深入理解JVM(1)——Java内存区域与Java对象
- php中strtotime的意思,php中strtotime函数用法详解
- Linux内核--内核地址空间分布和进程地址空间
- 搜狗2012.9.23校园招聘会笔试题
- ubuntu系统目录介绍
- java-Integer的自动装箱与拆箱
- 大数据技术是“地球的神经系统”
- 设置php中字符编码_php如何设置字符编码
- Qt之指针与float--setNum使用
- 如何使用Visual Studio 2017建立一个C语言项目
- 语音信号处理的过程及其应用
- teamviewer路由器设置虚拟服务器,远程控制软件TeamViewer的配置详细操作步骤
- 不管怎么换相,电机始终反转 。这是怎么回事?
- python_open函数中newline参数详解
- 芯片自主注释流程代码
- AI 让朱茵秒变杨幂,但我拒绝成为波多野结衣
热门文章
- 【实验练习】请建立简单线性回归模型,实现依据身高预测以为女性的体重,并对模型进行评估和优化。
- 深度学习面试:用猫和狗的数据做图像分类,分类的效果不好怎么办?
- 记住这几步,轻松学会吉他推弦技巧
- 2022世界杯La‘eeb肖像,python海龟实现啦
- centos7-aliyun
- 基于stm32mp157 linux开发板ARM裸机开发教程4:Cortex-A7 内核存储系统与流水线(连载中)
- 3dsmax 1603错误
- 【JAVA】List转Set并按照List的顺序排序,HashSet、LinkedHashSet、TreeSet元素保存顺序List转换对比
- 转:使用IL的方式直接跟踪exception到行的方法
- SRAM和DRAM的优缺点对比