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"など。 |