Comprendre les arbres syntaxique

À l'aide de la syntaxe BNF, vous définissez un ou plusieurs arbres d'analyse syntaxique dans votre script.

Chaque arbre syntaxique a la forme:

 lt ; clé racine >{< expression Registre >}+

où:

lt ; clé racine >:: = 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< expression Registre >:: = < Add Key > | < touche SUPPR > < add Key >:: = [ForceRemove | NoRemove | val]< nom clé >              [clé valeur < >][{< Add Key >}] < supprimer clé >:: = Supprimer< nom clé > < nom clé >:: = '<AlphaNumeric> +'<AlphaNumeric>:: = tout caractère non NULL, c'est-à-dire ASCII 0< clé valeur >:: == >< Type de clé < nom clé > < clé Type >:: = s | d< clé valeur >:: = '<AlphaNumeric>'

&Notenbsp ;HKEY_CLASSES_ROOTet HKCR sont équivalents ; HKEY_CURRENT_USER et HKCU sont équivalents et ainsi de suite.

Un arbre syntaxique peut ajouter plusieurs clés et sous-clés à la lt ; clé de racine >. En ce faisant, elle permet de maintenir poignée d'une sous-clé ouvert jusqu'à ce que l'analyseur a terminé l'analyse de toutes ses sous-clés. Cette approche est plus efficace que d'exploitation sur une clé unique à la fois, comme dans l'exemple suivant d'arbre syntaxique:

HKEY_CLASSES_ROOT
{
   ; « MyVeryOwnKey »
   {
      « HasASubKey »
      {
         « PrettyCool? »
      }
   }
}

Ici, le registraire s'ouvre au départ (crée) HKEY_CLASSES_ROOT\MyVeryOwnKey . Il voit alors que MyVeryOwnKey a une sous-clé. Plutôt que de fermer la clé de MyVeryOwnKey , le registraire conserve la poignée et ouvre (crée) HasASubKey à l'aide de cette poignée de parent. (Le registre du système peut être plus lent lorsque aucun handle parent n'est ouvert.) Ouvrant ainsi, HKEY_CLASSES_ROOT\MyVeryOwnKey et l'ouverture puis HasASubKey avec MyVeryOwnKey que le parent est plus rapide que l'ouverture MyVeryOwnKey , fermeture MyVeryOwnKey et ensuite d'ouvertureMyVeryOwnKey\HasASubKey.

Index