您的位置:首页 > 其它

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

2011-08-07 12:08 387 查看
理解巴科斯-诺尔范式 (BNF) 语法

语法结构使用BNF范式形式给出,先做一个简单了解。
在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。

在双引号外的字(有可能有下划线)代表着语法部分。

尖括号( < > )内包含的为必选项。

方括号( [ ] )内包含的为可选项。

大括号( { } )内包含的为可重复0至无数次的项。

竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。

::= 是“被定义为”的意思。

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

约定/符号含义
::=
等效
|
OR
X+
一个或多个
X
[X]
X
可选。可选的分隔符由
[]
表示。
任何粗体文本字符串。
任何斜体 文本如何构造字符串。
正如前表中所指出的,注册器脚本使用字符串。这些值是必须出现在脚本中的实际的文本。下表描述 ATL 注册器脚本中使用的字符串。

字符串操作
ForceRemove完全移除下一项(如果存在),然后重新创建它。
NoRemove在“注销”期间不移除下一项。
val指定
<Key Name>
实际上是一个命名值。
Delete在“注册”期间删除下一项。
s指定下一个值为字符串 (REG_SZ)。
d指定下一个值为 DWORD (REG_DWORD)。
m指定下一个值为多字符串 (REG_MULTI_SZ)。
b指定下一个值为二进制值 (REG_BINARY)。

BNF 语法示例

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

语法示例 1

<registry expression> ::= <Add Key>


指定
registry expression
等效于
Add Key

语法示例 2

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


指定
registry expression
等效于
Add Key
Delete Key

语法示例 3

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


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

语法示例 4

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


指定
Add Key
等效于
Key Name
,而且字符串、
ForceRemove
NoRemove
以及
val
均为可选。

语法示例 5

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


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

语法示例 6

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


指定项名
testmulti
是由
String 1
String 2
组成的多字符串值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: