Za pomocą Składnia BNF, można zdefiniować jeden lub więcej drzew analizy w skrypcie.
Każdy parsowanym drzewie ma postać:
lt; klucz główny > < rejestru wyrażenie > {}}+
w przypadku gdy:
lt; klucz główny >:: = 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< rejestru wyrażenie >:: = < Dodaj klucz > | < klawisz delete > < dodać klucz >:: = [ForceRemove | NoRemove | val]< Nazwa klucza > [< wartość klucza >][{}< Dodać klucz >}] < Usuń klucz >:: = Usuń< Nazwa klucza > < Nazwa klucza >:: = '<AlphaNumeric> +'<AlphaNumeric>:: = dowolnego znaku nie NULL, czyli ASCII od 0< wartość klucza >:: == < typ klucza >< Nazwa klucza > < typ klucza >:: = s | d< wartość klucza >:: = '<AlphaNumeric>'
Uwaganbsp;HKEY_CLASSES_ROOTi HKCR są równoważne; HKEY_CURRE&NT_USER i HKCU są równoważne; i tak dalej.
Parsowanym drzewie można dodać wiele klucze i podklucze do lt, główny klucz >. Czyniąc to, zachowuje podklucz uchwyt otwarte aż parser zakończył przetwarzanie wszystkich jego podkluczy. Podejście to jest bardziej efektywne niż działających na pojedynczy klucz naraz, jak pokazano w poniższym przykładzie drzewo analizy:
KLUCZ HKEY_CLASSES_ROOT
{
"MyVeryOwnKey"
{
"HasASubKey"
{
„PrettyCool? ”
}
}
}
Tutaj, Sekretarz początkowo otwiera (tworzy) HKEY_CLASSES_ROOT\MyVeryOwnKey . Następnie widzi, MyVeryOwnKey ma podklucza. Zamiast zamknij klucz do MyVeryOwnKey , Sekretarz zachowuje uchwyt i otwiera (tworzy) HasASubKey przy użyciu ten uchwyt macierzysty. (Rejestru systemu może być wolniejsze, gdy nie uchwyt macierzysty jest otwarty). W związku z tym, otwierając HKEY_CLASSES_ROOT\MyVeryOwnKey i następnie otwarcia HasASubKey z MyVeryOwnKey jako nadrzędny jest szybsza niż otwarcie MyVeryOwnKey , zamknięcia MyVeryOwnKey , a następnie otwarcieMyVeryOwnKey\HasASubKey.