Noções básicas sobre a sintaxe da BNF (forma de Backus-Naur)

Os scripts usados pelo Registrador da ATL são descritos neste tópico usando a sintaxe BNF, que usa a notação mostrada na tabela a seguir.

Convenção/símbolo Significado
::= Equivalente
| OR
+X Um ou mais Xs.
[X] X é opcional. Delimitadores opcionais são indicados por [].
Qualquer texto em negrito Um literal de cadeia de caracteres.
Qualquer texto em itálico Como construir o literal de cadeia de caracteres.

Conforme indicado na tabela anterior, os scripts do registrador usam literais de cadeia de caracteres. Esses valores são texto real que devem ser exibidos em seu script. A tabela a seguir descreve os literais de cadeia de caracteres usados em um script do Registrador da ATL.

Cadeia de caracteres literal Ação
ForceRemove Remove completamente a próxima chave (se existir) e, em seguida, a recria.
NoRemove Não remove a próxima chave durante o Cancelamento do registro.
val Especifica que <Key Name> é realmente um valor nomeado.
Delete (excluir) Exclui a próxima chave durante o Registro.
s Especifica que o próximo valor é uma cadeia de caracteres (REG_SZ).
d Específica que o próximo valor é um DWORD (REG_DWORD).
m Especifica que o próximo valor é uma cadeia de caracteres múltipla (REG_MULTI_SZ).
b Especifica que o próximo valor é um valor binário (REG_BINARY).

Exemplos de sintaxe BNF

Veja alguns exemplos de sintaxe para ajudá-lo a entender como a notação e os literais de cadeia de caracteres funcionam em um script do Registrador da ATL.

Exemplo de Sintaxe 1

<registry expression> ::= <Add Key>

especifica que registry expression é equivalente a Add Key.

Exemplo de Sintaxe 2

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

especifica que registry expression é equivalente a Add Key ou a Delete Key.

Exemplo de Sintaxe 3

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

especifica que Key Name é equivalente a um ou mais valores AlphaNumeric.

Exemplo de Sintaxe 4

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

especifica que Add Key é equivalente a Key Name e que os literais de cadeia de caracteres, ForceRemove, NoRemove e val, são opcionais.

Exemplo de Sintaxe 5

<AlphaNumeric> ::= qualquer caractere não NULL, ou seja, ASCII 0

especifica que AlphaNumeric é equivalente a qualquer caractere diferente de NULL.

Exemplo de Sintaxe 6

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

especifica que o nome da chave testmulti é um valor de cadeia de caracteres múltipla composta por String 1 e String 2.

Exemplo de Sintaxe 7

val 'testhex' = d '&H55'

especifica que o nome da chave testhex é um valor DWORD definido como hexadecimal 55 (decimal 85). Observe que este formato segue a notação &H, conforme encontrado na especificação do Visual Basic.

Confira também

Criando scripts do Registrador