Usando sintaxe BNF, você define uma ou mais árvores de análise em seu script.
Cada árvore de análise tem a forma:
lt; chave raiz > < registry expression >{}+
onde:
lt; chave raiz >:: = HKEY_CLASSES_ROOT |HKEY_CURRENT_USER | HKEY_LOCAL_MACHINE |HKEY_USERS | HKEY_PERFORMANCE_DATA |HKEY_DYN_DATA | HKEY_CURRENT_CONFIG |HKCR |HKCU | HKLM | HKU |HKPD |HKDD |HKCC< registry expression >:: = < Add Key > | < Excluir chave > < adicionar chave >:: = [ForceRemove | NoRemove | val]< chave nome > [< chave valor >][{< Adicionar chave >}] < Excluir chave >:: = Excluir< chave nome > < nome da chave >:: = '<AlphaNumeric> +'<AlphaNumeric>:: = qualquer caractere não nulo, ou seja, ASCII 0< chave valor >:: == < tipo de chave >< Key Name > < chave tipo >:: = s | d< chave valor >:: = '<AlphaNumeric>'
&Notanbsp;HKEY_CLASSES_ROOTe HKCR são equivalentes; HKEY_CURRENT_USER e HKCU são equivalentes; e assim por diante.
Uma árvore de análise pode adicionar Múltiplo chaves e subchaves para lt; raiz chave >. Ao fazê-lo, mantém identificador uma subchave abrir até que o analisador tenha completado analisar tudo as suas subchaves. Essa abordagem é mais eficiente do que operando em uma única chave por um tempo, como pode ser visto no seguinte exemplo de árvore de análise:
HKEY_CLASSES_ROOT
{
'MyVeryOwnKey'
{
'HasASubKey'
{
'PrettyCool?'
}
}
}
Aqui, o Registrar inicialmente abre (cria) HKEY_CLASSES_ROOT\MyVeryOwnKey . Ele então vê que MyVeryOwnKey tem uma subchave. Em vez de fechar a chave para MyVeryOwnKey , o Registrar mantém o identificador e abre (cria) HasASubKey usando esse identificador pai. (O registro do sistema pode ser mais lento quando nenhum identificador pai está aberto.) Assim, abrindo HKEY_CLASSES_ROOT\MyVeryOwnKey e, em seguida, abrindo HasASubKey com MyVeryOwnKey como o pai é mais rápido do que a abertura MyVeryOwnKey , fechamento MyVeryOwnKey e, em seguida, abrirMyVeryOwnKey\HasASubKey.