You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.6 KiB
99 lines
2.6 KiB
/**
|
|
* @file pragma_cleanup.cpp
|
|
*
|
|
* @author Guy Maurel
|
|
* @license GPL v2+
|
|
*/
|
|
|
|
#include "pragma_cleanup.h"
|
|
|
|
#include "chunk.h"
|
|
#include "unc_tools.h"
|
|
|
|
|
|
void pragma_cleanup()
|
|
{
|
|
LOG_FUNC_ENTRY();
|
|
|
|
bool preproc_found = false;
|
|
bool pragma_found = false;
|
|
bool parameter_found = false;
|
|
|
|
Chunk *pc = Chunk::GetHead();
|
|
|
|
while (pc->IsNotNullChunk())
|
|
{
|
|
LOG_CHUNK(LTOK, pc);
|
|
|
|
if (!preproc_found)
|
|
{
|
|
if (pc->Is(CT_PREPROC))
|
|
{
|
|
LOG_FMT(LMCB, "%s(%d): PREPROC found: orig line %zu, orig col is %zu\n",
|
|
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
|
|
log_pcf_flags(LMCB, pc->GetFlags());
|
|
preproc_found = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!pragma_found)
|
|
{
|
|
if (pc->Is(CT_PP_PRAGMA))
|
|
{
|
|
LOG_FMT(LMCB, "%s(%d): PP_PRAGMA found: orig line %zu, orig col is %zu\n",
|
|
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol());
|
|
log_pcf_flags(LMCB, pc->GetFlags());
|
|
pragma_found = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!parameter_found)
|
|
{
|
|
LOG_FMT(LMCB, "%s(%d): PARAMETER found: orig line %zu, orig col is %zu, Text is '%s'\n",
|
|
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
|
|
log_pcf_flags(LMCB, pc->GetFlags());
|
|
|
|
if (strcmp(pc->Text(), "endasm") == 0)
|
|
{
|
|
pc->SetType(CT_PP_ENDASM);
|
|
}
|
|
else if (strcmp(pc->Text(), "region") == 0)
|
|
{
|
|
pc->SetType(CT_PP_REGION);
|
|
}
|
|
//else if (strcmp(pc->Text(), "comment") == 0)
|
|
//{
|
|
// pc->SetType(CT_PP_COMMENT);
|
|
//}
|
|
else
|
|
{
|
|
pc->SetType(CT_PP_PRAGMA);
|
|
}
|
|
parameter_found = true;
|
|
}
|
|
else
|
|
{
|
|
LOG_FMT(LMCB, "%s(%d): orig line is %zu, orig col is %zu, Text is '%s'\n",
|
|
__func__, __LINE__, pc->GetOrigLine(), pc->GetOrigCol(), pc->Text());
|
|
|
|
if (pc->IsNewline())
|
|
{
|
|
// reset
|
|
preproc_found = false;
|
|
pragma_found = false;
|
|
parameter_found = false;
|
|
}
|
|
else
|
|
{
|
|
pc->SetType(CT_PP_IGNORE);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pc = pc->GetNext();
|
|
}
|
|
//prot_the_line(__func__, __LINE__, 3, 0);
|
|
} // pragma_cleanup
|