博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BNF巴科斯-诺尔范式
阅读量:6328 次
发布时间:2019-06-22

本文共 898 字,大约阅读时间需要 2 分钟。

概述

BNF是描述编程语言的文法。自然语言存在不同程度的二义性。这种模糊、不确定的方式无法精确定义一门程序设计语言。必须设计一种准确无误地描述程序设计语言的语法结构,这种严谨、简洁、易读的形式规则描述的语言结构模型称为文法。最著名的文法描述形式是由Backus定义Algol60语言时提出的Backus-Naur范式(Backus-Naur Form, BNF)及其扩展形式EBNF。BNF能以一种简洁、灵活的方式描述语言的语法。具体内容可参考针对编译原理的书。

BNF

巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

  在BNF中,双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
  在双引号外的字(有可能有下划线)代表着语法部分。
  < > : 内包含的为必选项。
  [ ] : 内包含的为可选项。
  { } : 内包含的为可重复0至无数次的项。
  | : 表示在其左右两边任选一项,相当于"OR"的意思。
  ::= : 是“被定义为”的意思
  "..." : 术语符号
  [...] : 选项,最多出现一次
  {...} : 重复项,任意次数,包括 0 次
  (...) : 分组
  | : 并列选项,只能选一个
  斜体字: 参数,在其它地方有解释
  下面是是用BNF来定义的Java语言中的For语句的实例:

FOR_STATEMENT ::=       "for" "(" ( variable_declaration |   ( expression ";" ) | ";" )       [ expression ] ";"       [ expression ] ";"       ")" statement

转载于:https://www.cnblogs.com/Neo007/p/7399659.html

你可能感兴趣的文章
解决部分月份绩效无法显示的问题:timestamp\union al\autocommit等的用法
查看>>
CRT + lrzsz 进行远程linux系统服务器文件上传下载
查看>>
nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转
查看>>
man openstack >>1.txt
查看>>
linux几大服务器版本大比拼
查看>>
在BT5系统中安装postgresQL
查看>>
Can't connect to MySQL server on 'localhost'
查看>>
【Magedu】Week01
查看>>
写给MongoDB开发者的50条建议Tip25
查看>>
PostgreSQL学习手册(四) 常用数据类型
查看>>
为什么要让带宽制约云计算发展
查看>>
[iOS Animation]-CALayer 绘图效率
查看>>
2012-8-5
查看>>
VS中ProjectDir的值以及$(ProjectDir)../的含义
查看>>
我的友情链接
查看>>
PHP实现排序算法
查看>>
Business Contact Mnanager for Outlook2010
查看>>
9种用户体验设计的状态是必须知道的(五)
查看>>
解决WIN7下组播问题
查看>>
陈松松:视频营销成交率低,这三个因素没到位
查看>>