理解巴科斯-諾爾範式 (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 組成的多字符串值。

相關文章
相關標籤/搜索