//---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1997.
//
//  File:  parse.cxx
//
//  Contents:  Parser Object
//
//  History:
//----------------------------------------------------------------------------
#define MAX_TOKEN_LENGTH       MAX_PATH+1
#define MAX_KEYWORDS           14

typedef struct _kwdlist {
    DWORD   dwTokenId;
    LPWSTR  Keyword;
} KWDLIST, *PKWDLIST;

class FAR CLexer
{
public:
    CLexer();
    ~CLexer();

//    BOOL
//    CLexer::IsKeyword(LPWSTR szToken, LPDWORD pdwToken);

    HRESULT
    CLexer::Initialize(LPWSTR szBuffer);

    WCHAR
    CLexer::NextChar();

    void
    CLexer::PushbackChar();

    HRESULT
    CLexer::GetNextToken(LPWSTR szToken, LPDWORD pdwToken);

    HRESULT
    CLexer::PushBackToken();

    void
    CLexer::SetAtDisabler(BOOL bFlag);

    BOOL
    CLexer::GetAtDisabler();

private:

    LPWSTR _ptr;
    LPWSTR _Buffer;
    DWORD  _dwLastTokenLength;
    DWORD  _dwLastToken;
    DWORD  _dwEndofString;
    BOOL   _bAtDisabled;

};

HRESULT
ADsObject(CLexer * pTokenizer, POBJECTINFO pObjectInfo);

HRESULT
IISObject(CLexer * pTokenizer, POBJECTINFO pObjectInfo);


HRESULT
DsPathName(CLexer * pTokenizer, POBJECTINFO pObjectInfo);


HRESULT
PathName(CLexer * pTokenizer, POBJECTINFO pObjectInfo);

HRESULT
Component(CLexer * pTokenizer, POBJECTINFO pObjectInfo);

HRESULT
Type(CLexer * pTokenizer, POBJECTINFO pObjectInfo);

HRESULT
ProviderName(CLexer * pTokenizer, POBJECTINFO pObjectInfo);

HRESULT
AddTreeName(POBJECTINFO pObjectInfo, LPWSTR szToken);

HRESULT
SetType(POBJECTINFO pObjectInfo, DWORD dwToken);

HRESULT
SchemaPathName(CLexer * pTokenizer, POBJECTINFO pObjectInfo);

HRESULT
SchemaComponent(CLexer * pTokenizer, POBJECTINFO pObjectInfo);