tokenize negative numbers into a single token
This commit is contained in:
parent
2a3535c04f
commit
9c057c707b
|
@ -408,9 +408,9 @@ void CheckOther::CheckUnsignedDivision()
|
|||
}
|
||||
}
|
||||
|
||||
else if (!Token::Match(tok, "[).]") && Token::Match(tok->next(), "%var% / - %num%"))
|
||||
else if (!Token::Match(tok, "[).]") && Token::Match(tok->next(), "%var% / %num%"))
|
||||
{
|
||||
if (ErrorLogger::udivError())
|
||||
if (tok->strAt(3)[0] == '-' && ErrorLogger::udivError())
|
||||
{
|
||||
const char *varname1 = tok->strAt(1);
|
||||
char sign1 = varsign[varname1];
|
||||
|
@ -421,11 +421,11 @@ void CheckOther::CheckUnsignedDivision()
|
|||
}
|
||||
}
|
||||
|
||||
else if (Token::Match(tok, "[([=*/+-] - %num% / %var%"))
|
||||
else if (Token::Match(tok, "[([=*/+-,] %num% / %var%"))
|
||||
{
|
||||
if (ErrorLogger::udivError())
|
||||
if (tok->strAt(1)[0] == '-' && ErrorLogger::udivError())
|
||||
{
|
||||
const char *varname2 = tok->strAt(4);
|
||||
const char *varname2 = tok->strAt(3);
|
||||
char sign2 = varsign[varname2];
|
||||
if (sign2 == 'u')
|
||||
{
|
||||
|
|
|
@ -49,7 +49,7 @@ void Token::str(const char s[])
|
|||
{
|
||||
_str = s;
|
||||
_isName = bool(_str[0] == '_' || std::isalpha(_str[0]));
|
||||
_isNumber = bool(std::isdigit(_str[0]) != 0);
|
||||
_isNumber = bool(std::isdigit(_str[(_str[0]=='-')?1:0]) != 0);
|
||||
if (_str == "true" || _str == "false")
|
||||
_isBoolean = true;
|
||||
else
|
||||
|
|
|
@ -336,6 +336,16 @@ void Tokenizer::tokenize(std::istream &code, const char FileName[])
|
|||
}
|
||||
addtoken(CurrentToken.c_str(), lineno, FileIndex);
|
||||
|
||||
// Combine "- %num%" ..
|
||||
for (Token *tok = _tokens; tok; tok = tok->next())
|
||||
{
|
||||
if (Token::Match(tok, "[(+-*/=,] - %num%") && tok->strAt(2)[0] != '-')
|
||||
{
|
||||
tok->next()->str((std::string("-") + tok->strAt(2)).c_str());
|
||||
tok->next()->deleteNext();
|
||||
}
|
||||
}
|
||||
|
||||
// Combine tokens..
|
||||
for (Token *tok = _tokens; tok && tok->next(); tok = tok->next())
|
||||
{
|
||||
|
|
|
@ -61,6 +61,8 @@ private:
|
|||
|
||||
void run()
|
||||
{
|
||||
TEST_CASE(minus);
|
||||
|
||||
TEST_CASE(longtok);
|
||||
|
||||
TEST_CASE(removeCast1);
|
||||
|
@ -171,6 +173,14 @@ private:
|
|||
}
|
||||
|
||||
|
||||
void minus()
|
||||
{
|
||||
ASSERT_EQUALS("i = -12", tokenizeAndStringify("i = -12"));
|
||||
ASSERT_EQUALS("1 - 2", tokenizeAndStringify("1-2"));
|
||||
ASSERT_EQUALS("foo ( -1 ) - 2", tokenizeAndStringify("foo(-1)-2"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
void longtok()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue