zoukankan      html  css  js  c++  java
  • BNF巴科斯-诺尔范式

    概述

    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
    
  • 相关阅读:
    linux服务器git pull/push时提示输入账号密码之免除设置
    如何查看Linux发行版本
    pm2日志切割
    CentOS下配置redis允许远程连接
    Node.js对SQLite的async/await封装
    Linux 系统命令行下,对 SQLite3 数据库使用的一般操作
    CentOS 7下使用n工具更新Node.js
    英语原理,索引
    词根词缀,非核心prefix/suffix/root
    哲学家核心价值观
  • 原文地址:https://www.cnblogs.com/Neo007/p/7399659.html
Copyright © 2011-2022 走看看