理解巴科斯-诺尔范式 (BNF) 语法

理解巴科斯-诺尔范式 (BNF) 语法

 

语法结构使用BNF范式形式给出,先作一个简单了解。web

在双引号中的字("word")表明着这些字符自己。而double_quote用来表明双引号
双引号外的字(有可能有下划线)表明着语法部分
尖括号( < > )内包含的为必选项
方括号( [ ] )内包含的为可选项
大括号( { } )内包含的为可重复0至无数次的项
竖线( | )表示在其左右两边任选一项,至关于"OR"的意思。
::= 被定义为的意思。 
express

 

BNF 语法使用下表中显示的表示法。ide

约定/符号 含义
::= 等效
| OR
X+ 一个或多个 X
[X] X 可选。可选的分隔符由 [] 表示。
任何粗体文本 字符串。
任何斜体 文本 如何构造字符串。

正如前表中所指出的,注册器脚本使用字符串。这些值是必须出如今脚本中的实际的文本。下表描述 ATL 注册器脚本中使用的字符串。spa

字符串 操做
ForceRemove 彻底移除下一项(若是存在),而后从新建立它。
NoRemove 在“注销”期间不移除下一项。
val 指定 <Key Name> 其实是一个命名值。
Delete 在“注册”期间删除下一项。
s 指定下一个值为字符串 (REG_SZ)。
d 指定下一个值为 DWORD (REG_DWORD)。
m 指定下一个值为多字符串 (REG_MULTI_SZ)。
b 指定下一个值为二进制值 (REG_BINARY)。

BNF 语法示例

如下是一些语法示例,能够帮助您理解表示法和字符串在 ATL 注册器脚本中的工做方式。code

语法示例 1

    
  1. <registry expression> ::= <Add Key>

指定 registry expression 等效于 Add Keyorm

语法示例 2

    
  1. <registry expression> ::= <Add Key> | <Delete Key>

指定 registry expression 等效于 Add Key 或 Delete Keyci

语法示例 3

    
  1. <Key Name> ::= '<AlphaNumeric>+'

指定 Key Name 等效于一个或多个 AlphaNumeric字符串

语法示例 4

    
  1. <Add Key> ::= [ForceRemove | NoRemove | val]<Key Name>

指定 Add Key 等效于 Key Name,并且字符串、ForceRemoveNoRemove 以及 val 均为可选。string

语法示例 5

    
  1. <AlphaNumeric> ::= any character not NULL, that is, ASCII 0

指定 AlphaNumeric 等效于任何非空字符。it

语法示例 6

    
  1. val 'testmulti' = m 'String 1\0String 2\0'

指定项名 testmulti 是由 String 1 和 String 2 组成的多字符串值。

相关文章
相关标签/搜索