You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.0 KiB
100 lines
2.0 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//=============================================================================//
|
||
|
|
||
|
#ifndef TOKENREADER_H
|
||
|
#define TOKENREADER_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include "tier0/basetypes.h"
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma warning(push, 1)
|
||
|
#pragma warning(disable:4701 4702 4530)
|
||
|
#endif
|
||
|
|
||
|
#undef min
|
||
|
#undef max
|
||
|
#include <fstream>
|
||
|
#include "valve_minmax_on.h"
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
#pragma warning(pop)
|
||
|
#endif
|
||
|
|
||
|
#include <assert.h>
|
||
|
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
TOKENSTRINGTOOLONG = -4,
|
||
|
TOKENERROR = -3,
|
||
|
TOKENNONE = -2,
|
||
|
TOKENEOF = -1,
|
||
|
OPERATOR,
|
||
|
INTEGER,
|
||
|
STRING,
|
||
|
IDENT
|
||
|
} trtoken_t;
|
||
|
|
||
|
|
||
|
#define IsToken(s1, s2) !strcmpi(s1, s2)
|
||
|
|
||
|
#define MAX_TOKEN 128 + 1
|
||
|
#define MAX_IDENT 64 + 1
|
||
|
#define MAX_STRING 128 + 1
|
||
|
|
||
|
|
||
|
class TokenReader : private std::ifstream
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
TokenReader();
|
||
|
|
||
|
bool Open(const char *pszFilename);
|
||
|
trtoken_t NextToken(char *pszStore, int nSize);
|
||
|
trtoken_t NextTokenDynamic(char **ppszStore);
|
||
|
void Close();
|
||
|
|
||
|
void IgnoreTill(trtoken_t ttype, const char *pszToken);
|
||
|
void Stuff(trtoken_t ttype, const char *pszToken);
|
||
|
bool Expecting(trtoken_t ttype, const char *pszToken);
|
||
|
const char *Error(char *error, ...);
|
||
|
trtoken_t PeekTokenType(char* = NULL, int maxlen = 0);
|
||
|
|
||
|
inline int GetErrorCount(void);
|
||
|
|
||
|
private:
|
||
|
// compiler can't generate an assignment operator since descended from std::ifstream
|
||
|
inline TokenReader(TokenReader const &);
|
||
|
inline int operator=(TokenReader const &);
|
||
|
|
||
|
trtoken_t GetString(char *pszStore, int nSize);
|
||
|
bool SkipWhiteSpace(void);
|
||
|
|
||
|
int m_nLine;
|
||
|
int m_nErrorCount;
|
||
|
|
||
|
char m_szFilename[128];
|
||
|
char m_szStuffed[128];
|
||
|
bool m_bStuffed;
|
||
|
trtoken_t m_eStuffed;
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Returns the total number of parsing errors since this file was opened.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
int TokenReader::GetErrorCount(void)
|
||
|
{
|
||
|
return(m_nErrorCount);
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif // TOKENREADER_H
|