Fix hex arguments for pragmas

This commit is contained in:
drmortalwombat 2024-02-17 12:53:31 +01:00
parent 6f7efd9efc
commit 58ffe2ad06
2 changed files with 12 additions and 7 deletions

View File

@ -11041,6 +11041,10 @@ bool Parser::ConsumeIdentIf(const char* ident)
return false; return false;
} }
bool Parser::IsIntegerToken(void)
{
return (mScanner->mToken == TK_INTEGER || mScanner->mToken == TK_INTEGERL || mScanner->mToken == TK_INTEGERU || mScanner->mToken == TK_INTEGERUL);
}
void Parser::ParsePragma(void) void Parser::ParsePragma(void)
{ {
@ -11270,7 +11274,7 @@ void Parser::ParsePragma(void)
{ {
mScanner->NextToken(); mScanner->NextToken();
ConsumeToken(TK_OPEN_PARENTHESIS); ConsumeToken(TK_OPEN_PARENTHESIS);
if (mScanner->mToken == TK_INTEGER) if (IsIntegerToken())
{ {
mCompilationUnits->mSectionStack->mSize = int(mScanner->mTokenInteger); mCompilationUnits->mSectionStack->mSize = int(mScanner->mTokenInteger);
mScanner->NextToken(); mScanner->NextToken();
@ -11284,7 +11288,7 @@ void Parser::ParsePragma(void)
{ {
mScanner->NextToken(); mScanner->NextToken();
ConsumeToken(TK_OPEN_PARENTHESIS); ConsumeToken(TK_OPEN_PARENTHESIS);
if (mScanner->mToken == TK_INTEGER) if (IsIntegerToken())
{ {
mCompilationUnits->mSectionHeap->mSize = int(mScanner->mTokenInteger); mCompilationUnits->mSectionHeap->mSize = int(mScanner->mTokenInteger);
mScanner->NextToken(); mScanner->NextToken();
@ -11298,20 +11302,20 @@ void Parser::ParsePragma(void)
{ {
mScanner->NextToken(); mScanner->NextToken();
ConsumeToken(TK_OPEN_PARENTHESIS); ConsumeToken(TK_OPEN_PARENTHESIS);
if (mScanner->mToken == TK_INTEGER) if (IsIntegerToken())
{ {
int cindex = int(mScanner->mTokenInteger); int cindex = int(mScanner->mTokenInteger);
mScanner->NextToken(); mScanner->NextToken();
ConsumeToken(TK_COMMA); ConsumeToken(TK_COMMA);
if (mScanner->mToken == TK_INTEGER) if (IsIntegerToken())
{ {
int ccode = int(mScanner->mTokenInteger); int ccode = int(mScanner->mTokenInteger);
int ccount = 1; int ccount = 1;
mScanner->NextToken(); mScanner->NextToken();
if (ConsumeTokenIf(TK_COMMA)) if (ConsumeTokenIf(TK_COMMA))
{ {
if (mScanner->mToken == TK_INTEGER) if (IsIntegerToken())
{ {
ccount = int(mScanner->mTokenInteger); ccount = int(mScanner->mTokenInteger);
mScanner->NextToken(); mScanner->NextToken();
@ -11760,7 +11764,7 @@ void Parser::ParsePragma(void)
mUnrollLoopPage = false; mUnrollLoopPage = false;
if (mScanner->mToken == TK_INTEGER) if (IsIntegerToken())
{ {
mUnrollLoop = int(mScanner->mTokenInteger); mUnrollLoop = int(mScanner->mTokenInteger);
mScanner->NextToken(); mScanner->NextToken();
@ -11808,7 +11812,7 @@ void Parser::ParsePragma(void)
else else
mErrors->Error(mScanner->mLocation, ERRR_STACK_OVERFLOW, "Stack underflow"); mErrors->Error(mScanner->mLocation, ERRR_STACK_OVERFLOW, "Stack underflow");
} }
else if (mScanner->mToken == TK_INTEGER) else if (IsIntegerToken())
{ {
mCompilerOptions &= ~(COPT_OPTIMIZE_ALL); mCompilerOptions &= ~(COPT_OPTIMIZE_ALL);
switch (mScanner->mTokenInteger) switch (mScanner->mTokenInteger)

View File

@ -30,6 +30,7 @@ protected:
bool ConsumeToken(Token token); bool ConsumeToken(Token token);
bool ConsumeTokenIf(Token token); bool ConsumeTokenIf(Token token);
bool ConsumeIdentIf(const char* ident); bool ConsumeIdentIf(const char* ident);
bool IsIntegerToken(void);
uint8 mCharMap[256]; uint8 mCharMap[256];
int mUnrollLoop; int mUnrollLoop;