Files
firestorm/Gameleap/code/mw4/Code/MW4/Ablscan.h
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

189 lines
3.4 KiB
C++

//***************************************************************************
//
// SCANNER.H
//
//***************************************************************************
#ifndef ABLSCAN_H
#define ABLSCAN_H
#include "ablgen.h"
#include "ablerr.h"
namespace ABL
{
//***************************************************************************
#define TAB_SIZE 4
//#define MIN_INTEGER -2147483648
#define MAX_INTEGER 2147483647
#define MAX_DIGIT_COUNT 20
#define MAX_EXPONENT 20
//***************************************************************************
//------------
// TOKEN CODES
typedef enum {
TKN_NONE,
TKN_IDENTIFIER,
TKN_NUMBER,
TKN_TYPE,
TKN_STRING,
TKN_STAR,
TKN_LPAREN,
TKN_RPAREN,
TKN_MINUS,
TKN_PLUS,
TKN_EQUAL,
TKN_LBRACKET,
TKN_RBRACKET,
TKN_COLON,
TKN_SEMICOLON,
TKN_LT,
TKN_GT,
TKN_COMMA,
TKN_PERIOD,
TKN_FSLASH,
TKN_EQUALEQUAL,
TKN_LE,
TKN_GE,
TKN_NE,
TKN_EOF,
TKN_ERROR,
TKN_CODE,
TKN_ORDERS,
TKN_AND,
TKN_SWITCH,
TKN_CASE,
TKN_CONST,
TKN_DIV,
TKN_DO,
TKN_OF,
TKN_ELSE,
TKN_END_IF,
TKN_END_WHILE,
TKN_END_FOR,
TKN_END_FUNCTION,
TKN_END_MODULE,
TKN_END_LIBRARY,
TKN_END_VAR,
TKN_END_CODE,
TKN_END_CASE,
TKN_END_SWITCH,
TKN_FOR,
TKN_FUNCTION,
TKN_IF,
TKN_MOD,
TKN_NOT,
TKN_OR,
TKN_REPEAT,
TKN_THEN,
TKN_TO,
TKN_UNTIL,
TKN_VAR,
TKN_REF,
TKN_WHILE,
TKN_ELSIF,
TKN_RETURN,
TKN_MODULE,
TKN_LIBRARY,
TKN_ETERNAL,
TKN_STATIC,
TKN_FSM,
TKN_END_FSM,
TKN_STATE,
TKN_END_STATE,
TKN_TRANS,
TKN_POUND,
TKN_UNEXPECTED_TOKEN,
TKN_STATEMENT_MARKER,
TKN_ADDRESS_MARKER,
NUM_TOKENS
} TokenCodeType;
typedef enum {
CHR_LETTER,
CHR_DIGIT,
CHR_DQUOTE,
CHR_SPECIAL,
CHR_EOF
} CharCodeType;
typedef struct {
char* string;
TokenCodeType tokenCode;
} ReservedWord;
//***************************************************************************
//------------------
// LITERAL structure
typedef enum {
LIT_INTEGER,
LIT_REAL,
LIT_STRING
} LiteralType;
typedef struct {
LiteralType type;
struct {
long integer;
float real;
char string[MAXLEN_TOKENSTRING];
} value;
} Literal;
//---------------------------------------------------------------------------
typedef struct CaseItem {
int labelValue;
char* branchLocation;
struct CaseItem* next;
} CaseItem;
typedef CaseItem* CaseItemPtr;
//***************************************************************************
//----------
// FUNCTIONS
inline CharCodeType calcCharCode (long ch);
long isReservedWord (void);
void initScanner (char* fileName);
void quitScanner (void);
void skipComment (void);
void skipBlanks (void);
void getChar(void);
void crunchToken (void);
void downShiftWord (void);
void getToken(void);
void getWord (void);
void accumulateValue (float* valuePtr, SyntaxErrorType errCode);
void getNumber (void);
void getString (void);
void getSpecial (void);
bool tokenIn (TokenCodeType* tokenList);
void synchronize (TokenCodeType* tokenList1,
TokenCodeType* tokenList2,
TokenCodeType* tokenList3);
bool getSourceLine (void);
void printLine (char* line);
void initPageHeader (char* fileName);
void printPageHeader (void);
//----------
// VARIABLES
extern char wordString[MAXLEN_TOKENSTRING];
//***************************************************************************
}
#endif