PARSE.CPP

プロバイダーコンポーネントの例では、ディレクトリサービスパスパーサーのコード例がParse.cppにあります。 パスパーサーは、ADプロバイダーコンポーネントの重要なコンポーネントです。 このプロバイダーに渡されるADパスの構文の有効性を検証します。 構文が有効な場合は、このオブジェクトのADspathのコンポーネント化されたバージョンを含むOBJECTINFO構造体が構築されます。

これは構文の検証のみであることに注意してください。 パスの新しいイテレーションごとに特殊なケースではなく、すべてのパス検証は、パーサーによって確立された文法規則に準拠している必要があります。

次の表に、Parse.cppに実装されている関数とメソッドを示します。

アイテム 説明
ADsObject 渡されたADspathを解析します。 この関数は、次の文法規則に従います:<ADsObject>-><ProviderName><SampleDSObject>
SampleDSObject 次の文法規則を解析します。<SampleDSObject> ->"\\"<identifier>\"<Pathname>
ProviderName 存在しない場合は、構文的に正しいプロバイダー名を追加します。
PathName 次の文法規則を解析します<Pathname> -><Component> "\\" <Pathname>OR
<Pathname> -><Component>
コンポーネント 次の文法規則を解析します<Identifier>OR
<Identifier> "=" <Identifier>
CLexer :: CLexer 標準コンストラクター.
CLexer ::~CLexer 標準デストラクター。
CLexer :: GetNextToken トークナイザー。
CLexer :: NextChar 次の1文字を取得します。
CLexer :: PushBackToken 最後のトークンの先頭までバックアップします。
CLexer :: PushbackChar 1文字をバックアップします。
CLexer :: IsKeyword キーワードリストを検証します。 Globals.hで定義されています) 。
AddComponent コンポーネント配列にこのコンポーネントを追加します。
AddProviderName 構文的に正しいプロバイダー名をOBJECTINFO構造体に追加します。
AddRootRDN 構文的に正しいルート相対識別名 (RDN) 名をOBJECTINFO構造体に追加します。
SetType オブジェクトの種類を設定します。
Type 型を解析します>"user"|"group"など。