Utilizando sintaxis BNF, definir uno o más árboles de análisis de la secuencia de comandos.
Cada árbol de análisis tiene la forma:
lt; clave raíz > {}< expresión registro >}+
donde:
lt; clave raíz >:: = 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< expresión registro >:: = < agregar clave > | < eliminar clave > < agregar clave >:: = [ForceRemove | NoRemove | val]< nombre de clave > [< valor clave >][{}< Agregar clave >}] < eliminar clave >:: = Eliminar< nombre de clave > < nombre de clave >:: = '<AlphaNumeric> +'<AlphaNumeric>:: = cualquier carácter no NULL, es decir, ASCII 0< valor clave >:: == < tipo de clave >< clave nombre > < clave tipo >:: = s | d< valor clave >:: = '' <AlphaNumeric>
&Notanbsp;HKEY_CLASSES_ROOTy HKCR son equivalentes; HKEY_CURRENT_USER y HKCU son equivalentes; etc.
Un árbol de análisis puede agregar varias claves y subclaves para el lt; raíz clave >. Hacerlo, mantiene identificador de una subclave abierto hasta que haya finalizado el analizador analizar todas sus subclaves. Este enfoque es más eficiente que operan en una sola tecla a la vez, como se ve en el siguiente ejemplo de árbol de análisis:
HKEY_CLASSES_ROOT
{
'MyVeryOwnKey'
{
'HasASubKey'
{
¿' PrettyCool'?
}
}
}
Aquí, el Secretario inicialmente abre (crea) HKEY_CLASSES_ROOT\MyVeryOwnKey . A continuación, ve que MyVeryOwnKey tiene una subclave. En lugar de cerrar la clave de MyVeryOwnKey , el Secretario retiene el identificador y se abre (crea) HasASubKey mediante este identificador primario. (El registro del sistema puede ser más lento cuando ningún identificador primario está abierto). Abriendo así, HKEY_CLASSES_ROOT\MyVeryOwnKey y, a continuación, abra HasASubKey con MyVeryOwnKey como el padre es más rápido que la apertura MyVeryOwnKey , cierre MyVeryOwnKey y, a continuación, abrirMyVeryOwnKey\HasASubKey.