tokenize: moved 'IsName' to commoncheck. Replace 'sizeof(type)' with size.
This commit is contained in:
parent
284266664b
commit
a8f4091875
60
tokenize.cpp
60
tokenize.cpp
|
@ -1,5 +1,6 @@
|
|||
//---------------------------------------------------------------------------
|
||||
#include "tokenize.h"
|
||||
#include "CommonCheck.h" // <- IsName
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#include <locale>
|
||||
|
@ -11,8 +12,6 @@
|
|||
std::vector<std::string> Files;
|
||||
struct TOKEN *tokens, *tokens_back;
|
||||
|
||||
extern bool IsName(const char str[]);
|
||||
|
||||
struct DefineSymbol
|
||||
{
|
||||
char *name;
|
||||
|
@ -396,7 +395,64 @@ void Tokenize(const char FileName[])
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Replace 'sizeof'..
|
||||
for (TOKEN *tok = tokens; tok; tok = tok->next)
|
||||
{
|
||||
if (strcmp(tok->str,"sizeof") != 0)
|
||||
continue;
|
||||
|
||||
if (match(tok, "sizeof ( unsigned"))
|
||||
{
|
||||
TOKEN *tok1 = tok->next;
|
||||
TOKEN *tok2 = tok1->next;
|
||||
tok1->next = tok2->next;
|
||||
free(tok2->str);
|
||||
delete tok2;
|
||||
}
|
||||
|
||||
|
||||
if (match(tok, "sizeof ( type * )"))
|
||||
{
|
||||
free(tok->str);
|
||||
char str[10];
|
||||
tok->str = strdup(itoa(sizeof(char *), str, 10));
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
TOKEN *next = tok->next;
|
||||
tok->next = next->next;
|
||||
free(next->str);
|
||||
delete next;
|
||||
}
|
||||
}
|
||||
|
||||
else if (match(tok, "sizeof ( type )"))
|
||||
{
|
||||
int size = -1;
|
||||
const char *type = getstr(tok, 2);
|
||||
if (strcmp(type,"char")==0)
|
||||
size = sizeof(char);
|
||||
if (strcmp(type,"double")==0)
|
||||
size = sizeof(char);
|
||||
if (strcmp(type,"int")==0)
|
||||
size = sizeof(int);
|
||||
if (size < 0)
|
||||
continue;
|
||||
|
||||
free(tok->str);
|
||||
char str[10];
|
||||
tok->str = strdup(itoa(size, str, 10));
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
TOKEN *next = tok->next;
|
||||
tok->next = next->next;
|
||||
free(next->str);
|
||||
delete next;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue