98 lines
2.4 KiB
C
98 lines
2.4 KiB
C
|
/*** token.h - Token definitions
|
||
|
*
|
||
|
* Copyright (c) 1996,1997 Microsoft Corporation
|
||
|
* Author: Michael Tsang (MikeTs)
|
||
|
* Created: 09/04/96
|
||
|
*
|
||
|
* This file contains the implementation constants,
|
||
|
* imported/exported data types, exported function
|
||
|
* prototypes of the token.c module.
|
||
|
*
|
||
|
* MODIFICATIONS
|
||
|
*/
|
||
|
|
||
|
#ifndef _TOKEN_H
|
||
|
#define _TOKEN_H
|
||
|
|
||
|
/*** Constants
|
||
|
*/
|
||
|
|
||
|
// GetToken return values
|
||
|
// return value is the token type if it is positive
|
||
|
// return value is the error number if it is negative
|
||
|
|
||
|
// Error values (negative)
|
||
|
#define TOKERR_NONE 0
|
||
|
#define TOKERR_EOF (TOKERR_BASE - 0)
|
||
|
#define TOKERR_NO_MATCH (TOKERR_BASE - 1)
|
||
|
#define TOKERR_ASSERT_FAILED (TOKERR_BASE - 2)
|
||
|
|
||
|
// TOKERR_LANG must always be the last TOKERR from the above list
|
||
|
#define TOKERR_LANG TOKERR_ASSERT_FAILED
|
||
|
|
||
|
// Token type
|
||
|
#define TOKTYPE_NULL 0
|
||
|
|
||
|
#define TOKTYPE_LANG TOKTYPE_NULL
|
||
|
|
||
|
// Identifier token types
|
||
|
#define ID_USER -1 //user identifier
|
||
|
|
||
|
#define ID_LANG 0 //language specific ID base
|
||
|
|
||
|
//Token flags values
|
||
|
#define TOKF_NOIGNORESPACE 0x0001
|
||
|
#define TOKF_CACHED 0x8000
|
||
|
|
||
|
//Match token flags
|
||
|
#define MTF_NOT_ERR 0x00000001
|
||
|
#define MTF_ANY_VALUE 0x00000002
|
||
|
|
||
|
/*** Exported data types
|
||
|
*/
|
||
|
|
||
|
#define MAX_TOKEN_LEN 255
|
||
|
|
||
|
typedef struct token_s TOKEN;
|
||
|
typedef TOKEN *PTOKEN;
|
||
|
typedef int (LOCAL *PFNTOKEN)(int, PTOKEN);
|
||
|
|
||
|
struct token_s
|
||
|
{
|
||
|
PLINE pline;
|
||
|
PFNTOKEN *papfnToken;
|
||
|
WORD wfToken;
|
||
|
int iTokenType;
|
||
|
LONGLONG llTokenValue;
|
||
|
WORD wTokenLine;
|
||
|
WORD wTokenPos;
|
||
|
WORD wErrLine;
|
||
|
WORD wErrPos;
|
||
|
WORD wTokenLen;
|
||
|
char szToken[MAX_TOKEN_LEN + 1];
|
||
|
#ifdef TUNE
|
||
|
WORD *pawcTokenType;
|
||
|
#endif
|
||
|
};
|
||
|
|
||
|
/*** Imported data types
|
||
|
*/
|
||
|
|
||
|
/*** Exported function prototypes
|
||
|
*/
|
||
|
|
||
|
#ifdef TUNE
|
||
|
PTOKEN EXPORT OpenToken(FILE *pfileSrc, PFNTOKEN *apfnToken,
|
||
|
WORD *pawcTokenType);
|
||
|
#else
|
||
|
PTOKEN EXPORT OpenToken(FILE *pfileSrc, PFNTOKEN *apfnToken);
|
||
|
#endif
|
||
|
VOID EXPORT CloseToken(PTOKEN ptoken);
|
||
|
int EXPORT GetToken(PTOKEN ptoken);
|
||
|
int EXPORT UnGetToken(PTOKEN ptoken);
|
||
|
int EXPORT MatchToken(PTOKEN ptoken, int iTokenType, LONG lTokenValue,
|
||
|
DWORD dwfMatch, PSZ pszErrMsg);
|
||
|
VOID EXPORT PrintTokenErr(PTOKEN ptoken, PSZ pszErrMsg, BOOL fErr);
|
||
|
|
||
|
#endif //ifndef _TOKEN_H
|