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;
}
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)
{
@ -11270,7 +11274,7 @@ void Parser::ParsePragma(void)
{
mScanner->NextToken();
ConsumeToken(TK_OPEN_PARENTHESIS);
if (mScanner->mToken == TK_INTEGER)
if (IsIntegerToken())
{
mCompilationUnits->mSectionStack->mSize = int(mScanner->mTokenInteger);
mScanner->NextToken();
@ -11284,7 +11288,7 @@ void Parser::ParsePragma(void)
{
mScanner->NextToken();
ConsumeToken(TK_OPEN_PARENTHESIS);
if (mScanner->mToken == TK_INTEGER)
if (IsIntegerToken())
{
mCompilationUnits->mSectionHeap->mSize = int(mScanner->mTokenInteger);
mScanner->NextToken();
@ -11298,20 +11302,20 @@ void Parser::ParsePragma(void)
{
mScanner->NextToken();
ConsumeToken(TK_OPEN_PARENTHESIS);
if (mScanner->mToken == TK_INTEGER)
if (IsIntegerToken())
{
int cindex = int(mScanner->mTokenInteger);
mScanner->NextToken();
ConsumeToken(TK_COMMA);
if (mScanner->mToken == TK_INTEGER)
if (IsIntegerToken())
{
int ccode = int(mScanner->mTokenInteger);
int ccount = 1;
mScanner->NextToken();
if (ConsumeTokenIf(TK_COMMA))
{
if (mScanner->mToken == TK_INTEGER)
if (IsIntegerToken())
{
ccount = int(mScanner->mTokenInteger);
mScanner->NextToken();
@ -11760,7 +11764,7 @@ void Parser::ParsePragma(void)
mUnrollLoopPage = false;
if (mScanner->mToken == TK_INTEGER)
if (IsIntegerToken())
{
mUnrollLoop = int(mScanner->mTokenInteger);
mScanner->NextToken();
@ -11808,7 +11812,7 @@ void Parser::ParsePragma(void)
else
mErrors->Error(mScanner->mLocation, ERRR_STACK_OVERFLOW, "Stack underflow");
}
else if (mScanner->mToken == TK_INTEGER)
else if (IsIntegerToken())
{
mCompilerOptions &= ~(COPT_OPTIMIZE_ALL);
switch (mScanner->mTokenInteger)

View File

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