zoukankan      html  css  js  c++  java
  • 编译系统中BNF: Backus-Naur Form

      巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法。

      简称为: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;
  • 相关阅读:
    Linux 中文件名颜色所代表的属性
    time manage
    NoClassDefFoundError
    swagger在线文档
    2020.8.18
    spring jpa data的关键字
    2020.8.6
    spring data jpa的报错Can not set int field XXX to null value
    deadlock found when trying to get lock ;try restarting transaction
    查找-斐波那契
  • 原文地址:https://www.cnblogs.com/icmzn/p/5981652.html
Copyright © 2011-2022 走看看