구문 분석. Cpp
예제 공급자 구성 요소에서 디렉터리 서비스 경로 파서의 코드 예제는 Parse.cpp에 있습니다. 경로 파서는 AD 공급자 구성 요소의 핵심 구성 요소입니다. 이 공급자에게 전달된 AD 경로의 구문 유효성을 확인합니다. 구문이 유효한 경우 OBJECTINFO 구조체가 생성됩니다. 여기에는 이 개체에 대한 구성 요소화된 버전의 ADspath가 포함됩니다.
이는 구문 확인일 뿐입니다. 경로의 새로운 반복마다 특수한 경우 대신 모든 경로 확인은 파서에서 설정한 문법 규칙을 준수해야 합니다.
다음 표에는 Parse.cpp에 구현된 함수 및 메서드가 나열되어 있습니다.
항목 | 설명 |
---|---|
ADsObject | 전달된 ADspath를 구문 분석합니다. 이 함수는 다음 문법 규칙을 <따릅니다. ADsObject> -><ProviderName><SampleDSObject> |
SampleDSObject | 다음 문법 규칙을 <구문 분석합니다. SampleDSObject> -> "\\" <식별자> "\" <Pathname> |
ProviderName | 없는 경우 구문적으로 올바른 공급자 이름을 추가합니다. |
PathName | 다음 문법 규칙을 <구문 분석합니다. Pathname> -><Component> "\\" <Pathname> OR <Pathname> -><Component> |
구성 요소 | 다음 문법 규칙을 <구문 분석합니다. 식별자> OR <식별자> "=" <식별자> |
CLexer::CLexer | 표준 생성자입니다. |
CLexer::~CLexer | 표준 소멸자입니다. |
CLexer::GetNextToken | 토크 나이저. |
CLexer::NextChar | 다음 단일 문자를 검색합니다. |
CLexer::P ushBackToken | 마지막 토큰의 시작 부분에 백업합니다. |
CLexer::P ushbackChar | 한 문자를 백업합니다. |
CLexer::IsKeyword | 키워드(keyword) 목록을 확인합니다. Globals.h)에 정의됩니다. |
AddComponent | 구성 요소 배열에 이 구성 요소를 추가합니다. |
AddProviderName | OBJECTINFO 구조체에 구문적으로 올바른 공급자 이름을 추가합니다. |
AddRootRDN | 구문적으로 올바른 루트 RDN(고유 이름) 이름을 OBJECTINFO 구조체에 추가합니다. |
SetType | 개체의 형식을 설정합니다. |
형식 | 형식 구문 분석 -> "user" | "group" 등 |