Використовуючи BNF синтаксис, ви визначити один або кілька дерева синтаксичного аналізу у ваш сценарій.
Кожне дерево аналізу маніфесту має форму:
lt; кореневий ключ >{< реєстру вираз >}+
де:
lt; кореневий ключ >:: = це можливо |HKEY_CURRENT_USER | HKEY_LOCAL_MACHINE |HKEY_USERS | HKEY_PERFORMANCE_DATA |HKEY_DYN_DATA | HKEY_CURRENT_CONFIG |HKCR |HKCU | HKLM | HKU |HKPD |HKDD |HKCC< реєстру вираз >:: < додати ключ > = | < видалити ключ > < додати ключ >:: = [ForceRemove | NoRemove | val]< ім'я ключа > [< ключ значення >][{< Додати ключ >}] < видалити ключ >:: = Видалити< ім'я ключа > < ім'я ключа >:: '= <AlphaNumeric> +'<AlphaNumeric>:: = будь-який символ не значення NULL, тобто ASCII 0< ключ значення >:: == < тип ключа >< ключ ім'я > < тип ключа >:: = s | d< ключ значення >:: = <AlphaNumeric>' '
Приміткаnbsp;HKEY_CLASSES_ROOTі HKCR є еквівалентними; HKEY_CURRE&NT_USER і HKCU є еквівалентними; і так далі.
Дерево розбору можна додати кілька розділи та підрозділи в lt; кореневий ключ >. Таким чином, він тримає підрозділ s Дескриптор відкриті поки аналізатор завершив розбору всіх його підрозділах. Такий підхід є більш ефективним, ніж діють на одній клавіші одночасно, як показано в наступному прикладі розбору дерево:
ЦЕ МОЖЛИВО
{
'MyVeryOwnKey'
{
'HasASubKey'
{
'PrettyCool'?
}
}
}
Тут, у реєстроутримувача спочатку відкриття (створення) HKEY_CLASSES_ROOT\MyVeryOwnKey . Це потім бачить, що MyVeryOwnKey має підрозділ. А не закрити ключ до MyVeryOwnKey , реєстратором зберігає ручку і відкриває (створює) HasASubKey за допомогою цього батьківський дескриптор. (Системний реєстр може бути повільніше, коли батько ручки відкрито). Таким чином, відкриття HKEY_CLASSES_ROOT\MyVeryOwnKey а потім відкрити HasASubKey з MyVeryOwnKey як батька, швидше, ніж відкриття MyVeryOwnKey , закриття MyVeryOwnKey а потім відкритиMyVeryOwnKey\HasASubKey.