Используя синтаксис БНФ, определить одно или несколько деревьев разбора в вашем скрипте.
Каждое дерево разбора имеет вид:
lt; корневого ключа > < реестра выражение >{}+
где:
lt; корневого ключа >:: = 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< реестра выражение >:: = < Add Key > | < удалить ключ > < добавить ключ >:: = [ForceRemove | NoRemove | val]< имя ключа > [< значение ключа >][{< Добавить ключ >}] < удалить ключ >:: = Удалить< имя ключа > < имя ключа >:: = '<AlphaNumeric> +'<AlphaNumeric>:: = любой символ не NULL, то есть ASCII 0< значение ключа >:: == < тип ключа >< имя ключа > < тип ключа >:: = s | d< значение ключа >:: = '<AlphaNumeric>'
Примечаниеnbsp;HKEY_CLASSES_ROOTи HKCR эквивалентны; HKEY_CURRE&NT_USER и HKCU являются эквивалентные; и так далее.
Дерева разбора можно добавить несколько разделов и подразделов lt; корневой ключ >. Поступая таким образом, он держит один подраздел дескриптор открытым до завершения синтаксический анализатор разбора всех его подразделов. Этот подход является более эффективным, чем работающих на один ключ в то время, как показано в следующем примере дерево разбора:
HKEY_CLASSES_ROOT
{
«MyVeryOwnKey»
{
«HasASubKey»
{
«PrettyCool?»
}
}
}
Здесь, первоначально открывает регистратор (создается) HKEY_CLASSES_ROOT\MyVeryOwnKey . Затем он видит, что MyVeryOwnKey имеет соответствующий подраздел. Вместо того, чтобы закрыть ключ к MyVeryOwnKey , секретарь сохраняет ручку и открывает (создается) HasASubKey с помощью этого родительского дескриптора. (Системный реестр может быть медленнее при открытом не родительский дескриптор). Таким образом, открытие HKEY_CLASSES_ROOT\MyVeryOwnKey и затем открыть HasASubKey с MyVeryOwnKey как родитель работает быстрее, чем открытие MyVeryOwnKey , закрытие MyVeryOwnKey и затем открытьMyVeryOwnKey\HasASubKey.