Comprensión de árboles de análisis

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.

Index