Fix use of hash character in preprocessor defines
This commit is contained in:
parent
3c306e0899
commit
2b224f262b
|
@ -12691,7 +12691,7 @@ Expression* Parser::ParseAssembler(Declaration* vdasm)
|
|||
break;
|
||||
}
|
||||
}
|
||||
else if (mScanner->mToken == TK_EOL || mScanner->mToken == TK_CLOSE_BRACE)
|
||||
else if (mScanner->mToken == TK_EOL || mScanner->mToken == TK_CLOSE_BRACE || mScanner->mToken == TK_SEMICOLON)
|
||||
ilast->mAsmInsMode = ASMIM_IMPLIED;
|
||||
else if (mScanner->mToken == TK_HASH)
|
||||
{
|
||||
|
@ -12799,12 +12799,12 @@ Expression* Parser::ParseAssembler(Declaration* vdasm)
|
|||
}
|
||||
}
|
||||
|
||||
if (mScanner->mToken != TK_EOL && mScanner->mToken != TK_CLOSE_BRACE)
|
||||
if (mScanner->mToken != TK_EOL && mScanner->mToken != TK_CLOSE_BRACE && mScanner->mToken != TK_SEMICOLON)
|
||||
{
|
||||
mErrors->Error(mScanner->mLocation, EERR_SYNTAX, "End of line expected");
|
||||
}
|
||||
|
||||
while (mScanner->mToken != TK_EOL && mScanner->mToken != TK_EOF && mScanner->mToken != TK_CLOSE_BRACE)
|
||||
while (mScanner->mToken != TK_EOL && mScanner->mToken != TK_EOF && mScanner->mToken != TK_CLOSE_BRACE && mScanner->mToken != TK_SEMICOLON)
|
||||
mScanner->NextToken();
|
||||
|
||||
offset += AsmInsSize(ilast->mAsmInsType, ilast->mAsmInsMode);
|
||||
|
@ -12815,7 +12815,7 @@ Expression* Parser::ParseAssembler(Declaration* vdasm)
|
|||
ilast = ilast->mRight;
|
||||
}
|
||||
}
|
||||
else if (mScanner->mToken == TK_EOL)
|
||||
else if (mScanner->mToken == TK_EOL || mScanner->mToken == TK_SEMICOLON)
|
||||
{
|
||||
mScanner->NextToken();
|
||||
}
|
||||
|
@ -12823,7 +12823,7 @@ Expression* Parser::ParseAssembler(Declaration* vdasm)
|
|||
{
|
||||
mErrors->Error(mScanner->mLocation, EERR_ASM_INVALID_INSTRUCTION, "Invalid assembler token");
|
||||
|
||||
while (mScanner->mToken != TK_EOL && mScanner->mToken != TK_EOF)
|
||||
while (mScanner->mToken != TK_EOL && mScanner->mToken != TK_CLOSE_BRACE && mScanner->mToken != TK_SEMICOLON && mScanner->mToken != TK_EOF)
|
||||
mScanner->NextToken();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -822,28 +822,36 @@ void Scanner::NextPreToken(void)
|
|||
}
|
||||
else if (mToken == TK_PREP_IDENT)
|
||||
{
|
||||
Macro* def = nullptr;
|
||||
if (mDefineArguments)
|
||||
def = mDefineArguments->Lookup(mTokenIdent);
|
||||
if (!def)
|
||||
def = mDefines->Lookup(mTokenIdent);
|
||||
|
||||
if (def)
|
||||
if (mTokenIdent->mString[0])
|
||||
{
|
||||
if (def->mNumArguments == -1)
|
||||
Macro* def = nullptr;
|
||||
if (mDefineArguments)
|
||||
def = mDefineArguments->Lookup(mTokenIdent);
|
||||
if (!def)
|
||||
def = mDefines->Lookup(mTokenIdent);
|
||||
|
||||
if (def)
|
||||
{
|
||||
mToken = TK_STRING;
|
||||
int i = 0;
|
||||
while ((mTokenString[i] = def->mString[i]))
|
||||
i++;
|
||||
mTokenStringSize = i;
|
||||
return;
|
||||
if (def->mNumArguments == -1)
|
||||
{
|
||||
mToken = TK_STRING;
|
||||
int i = 0;
|
||||
while ((mTokenString[i] = def->mString[i]))
|
||||
i++;
|
||||
mTokenStringSize = i;
|
||||
return;
|
||||
}
|
||||
else
|
||||
mErrors->Error(mLocation, EERR_INVALID_PREPROCESSOR, "Invalid preprocessor command", mTokenIdent);
|
||||
}
|
||||
else
|
||||
mErrors->Error(mLocation, EERR_INVALID_PREPROCESSOR, "Invalid preprocessor command", mTokenIdent);
|
||||
}
|
||||
else
|
||||
mErrors->Error(mLocation, EERR_INVALID_PREPROCESSOR, "Invalid preprocessor command", mTokenIdent);
|
||||
{
|
||||
mToken = TK_HASH;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (mToken == TK_PREP_UNDEF)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue