Zrozumienie analizy drzewa

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.

Index