プロバイダー コンポーネントの例では、ディレクトリ サービス パス パーサーのコード例がParse.cpp。 パス パーサーは、ADs プロバイダー コンポーネントの主要なコンポーネントです。 このプロバイダーに渡される ADs パスの構文の有効性を検証します。 構文が有効な場合は、OBJECTINFO 構造体が構築されます。この構造体には、このオブジェクトのコンポーネント化されたバージョンの ADspath が含まれます。
これは構文検証に過ぎないことに注意してください。 パスの新しい反復ごとに特殊なケースではなく、すべてのパス検証がパーサーによって確立された文法規則に準拠している必要があります。
次の表に、Parse.cppで実装される関数とメソッドを示します。
| アイテム | 形容 |
|---|---|
| ADsObject | 渡された ADspath を解析します。 この関数は、次の文法規則に従います。 <ADsObject> -><ProviderName><SampleDSObject> |
| SampleDSObject の | 次の文法規則を解析します。 <SampleDSObject> -> "\\" <識別子> "\" <Pathname> |
| ProviderName | 構文的に正しいプロバイダー名を追加します (存在しない場合)。 |
| PathName | 次の文法規則を解析します。 <Pathname> -><コンポーネント> "\\" <Pathname> OR <パス名の> -><コンポーネント> |
| コンポーネント | 次の文法規則を解析します。 <識別子> OR <識別子> "=" <識別子> |
| CLexer::CLexer | 標準コンストラクター。 |
| CLexer::~CLexer | 標準デストラクター。 |
| CLexer::GetNextToken | トークナイザー。 |
| CLexer::NextChar | 次の 1 文字を取得します。 |
| CLexer::P ushBackToken | 最後のトークンの先頭までバックアップします。 |
| CLexer::P ushbackChar | 1 文字をバックアップします。 |
| CLexer::IsKeyword | キーワード リストを検証します。 Globals.h で定義されます)。 |
| AddComponent を する | このコンポーネントをコンポーネント配列に追加します。 |
| AddProviderName の | 構文上正しいプロバイダー名を、OBJECTINFO 構造体に追加します。 |
| AddRootRDN の | 構文的に正しいルート相対識別名 (RDN) 名を、OBJECTINFO 構造体に追加します。 |
| SetType | オブジェクトの型を設定します。 |
| 型の | 型の解析- "user"> |"group" などです。 |