パーズ。CPP

プロバイダー コンポーネントの例では、ディレクトリ サービス パス パーサーのコード例が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" などです。