Comprensione Parse alberi

Utilizzando la sintassi BNF, definire uno o più alberi di analisi nello script.

Ogni parse tree ha la forma:

 lt; chiave radice >{< espressione del Registro di sistema >}+

dove:

lt; chiave radice >:: = 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< espressione del Registro di sistema >:: = < Add Key > | < tasto CANC > < aggiungere chiave >:: = [ForceRemove | NoRemove | val]Nome della chiave < >              [chiave valore < >][{< Aggiungere chiave >}] < eliminare chiave >:: = eliminare< nome chiave > Nome della chiave < >:: = '<AlphaNumeric> +'<AlphaNumeric>:: = qualsiasi carattere non NULL, cioè ASCII 0Valore della chiave < >:: == >< tipo di chiave < nome chiave > Tipo di chiave < >:: = s | dValore della chiave < >:: = '' <AlphaNumeric>

&Notanbsp;HKEY_CLASSES_ROOTe HKCR sono equivalenti; HKEY_CURRENT_USER e HKCU sono equivalenti; e così via.

Un parse tree può aggiungere chiavi multiple e le sottochiavi per la lt; radice chiave >. In tal modo, tiene il manico di una sottochiave aperto fino a quando il parser è stata completata l'analisi di tutte le relative sottochiavi. Questo approccio è più efficiente che operano su una singola chiave in un momento, come si è visto nell'esempio seguente parse tree:

HKEY_CLASSES_ROOT
{
   'MyVeryOwnKey'
   {
      'HasASubKey'
      {
         'PrettyCool'?
      }
   }
}

Qui, si apre il Cancelliere inizialmente (crea) HKEY_CLASSES_ROOT\MyVeryOwnKey . Vede allora che MyVeryOwnKey ha una sottochiave. Anziché chiudere la chiave per MyVeryOwnKey , il Cancelliere conserva la maniglia e si apre (crea) HasASubKey usando questo handle padre. (Il Registro di sistema può essere più lento quando nessun handle padre è aperto.) Aprendo così, HKEY_CLASSES_ROOT\MyVeryOwnKey e poi aprendo HasASubKey con MyVeryOwnKey come il genitore è più veloce di apertura MyVeryOwnKey , chiusura MyVeryOwnKey e poi aprendoMyVeryOwnKey\HasASubKey.

Index