Files
firestorm/Gameleap/code/mw4/Code/MW4/Ablparse.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

109 lines
3.1 KiB
C++

//***************************************************************************
//
// PARSER.H
//
//***************************************************************************
#ifndef ABLPARSE_H
#define ABLPARSE_H
#include "ablgen.h"
#include "ablsymt.h"
#include "ablerr.h"
//***************************************************************************
namespace ABL
{
typedef enum {
USE_EXPR,
USE_TARGET,
USE_REFPARAM
} UseType;
typedef enum {
BLOCK_MODULE,
BLOCK_ROUTINE
} BlockType;
//***************************************************************************
//----------
// FUNCTIONS
TypePtr baseType (TypePtr thisType);
TypePtr expression (void);
TypePtr variable (SymTableNodePtr variableIdPtr);
TypePtr arraySubscriptList (TypePtr typePtr);
//TypePtr routineCall (SymTableNodePtr routineIdPtr, BOOL parmCheckFlag);
TypePtr baseType (void);
void checkRelationalOpTypes (TypePtr type1, TypePtr type2);
long isAssignTypeCompatible (TypePtr type1, TypePtr type2);
void ifTokenGet (TokenCodeType tokenCode);
void ifTokenGetElseError (TokenCodeType tokenCode, SyntaxErrorType errCode);
// DECL routines
void declarations (SymTableNodePtr routineIdPtr, long allowFunctions, long allowStates);
void constDefinitions (void);
void doConst (SymTableNodePtr constantIdPtr);
void varDeclarations (SymTableNodePtr routineIdPtr);
void varOrFieldDeclarations (SymTableNodePtr routineIdPtr, long offset);
void typeDefinitions (void);
TypePtr doType (void);
TypePtr identifierType (SymTableNodePtr idPtr);
TypePtr enumerationType (void);
TypePtr subrangeType (void);
TypePtr arrayType (void);
long arraySize (TypePtr typePtr);
TypePtr makeStringType (long length);
// ROUTINE functions
void module (void);
SymTableNodePtr moduleHeader (void);
void routine (void);
SymTableNodePtr functionHeader (void);
SymTableNodePtr formalParamList (long* count, long* totalSize);
TypePtr routineCall (SymTableNodePtr routineIdPtr, long paramCheckFlag);
TypePtr declaredRoutineCall (SymTableNodePtr routineIdPtr, long paramCheckFlag);
void actualParamList (SymTableNodePtr routineIdPtr, long paramCheckFlag);
void block (SymTableNodePtr routineIdPtr);
void state (void);
SymTableNodePtr stateHeader (void);
// STATEMNT routines
void compoundStatement (void);
void assignmentStatement (SymTableNodePtr varIdPtr);
void repeatStatement (void);
void whileStatement (void);
void ifStatement (void);
void forStatement (void);
void switchStatement (void);
void statement (void);
// STANDARD routines
TypePtr stdPrint (void);
TypePtr stdAbs (void);
TypePtr stdRound (void);
TypePtr stdTrunc (void);
TypePtr stdSqrt (void);
TypePtr stdRandom (void);
TypePtr standardRoutineCall (SymTableNodePtr routineIdPtr);
// FILE routines
long openSourceFile (char* sourceFileName);
long closeSourceFile (void);
#if !ANALYZE_ON
#define analyzeConstDefn(idPtr)
#define analyzeVarDecl(idPtr)
#define analyzeTypeDefn(idPtr)
#define analyzeRoutineHeader(idPtr)
#define analyzeBlock(idPtr)
#endif
}
//***************************************************************************
#endif