1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Trailing whitespace trimming

This commit is contained in:
Brian Fiete 2022-07-26 13:27:03 -04:00
parent 06425735d9
commit 7f328385db
88 changed files with 9577 additions and 9850 deletions

View file

@ -1,6 +1,5 @@
#pragma warning(disable:4996)
#include "BfParser.h"
#include "BfReducer.h"
#include "BfPrinter.h"
@ -158,7 +157,7 @@ void BfParserCache::ReportMemory(MemReporter* memReporter)
int allocPages = 0;
int usedPages = 0;
mAstAllocManager.GetStats(allocPages, usedPages);
OutputDebugStrF("Parsers: %d Chars: %d UsedAlloc: %dk BytesPerChar: %d SysAllocPages: %d SysUsedPages: %d (%dk) LargeAllocs: %dk\n", (int)mEntries.size(), srcLen, allocBytesUsed / 1024,
allocBytesUsed / BF_MAX(1, srcLen), allocPages, usedPages, (usedPages * BfAstAllocManager::PAGE_SIZE) / 1024, largeAllocs / 1024);
@ -182,7 +181,6 @@ static int DecodeInt(uint8* buf, int& idx)
curByte = buf[idx++];
value |= ((curByte & 0x7f) << shift);
shift += 7;
} while (curByte >= 128);
// Sign extend negative numbers.
if (((curByte & 0x40) != 0) && (shift < 64))
@ -192,14 +190,14 @@ static int DecodeInt(uint8* buf, int& idx)
static int gCurDataId = 0;
BfParserData::BfParserData()
{
{
mDataId = (int)BfpSystem_InterlockedExchangeAdd32((uint32*)&gCurDataId, 1) + 1;
mHash = 0;
mRefCount = -1;
mJumpTable = NULL;
mJumpTableSize = 0;
mFailed = false;
mFailed = false;
mCharIdData = NULL;
mUniqueParser = NULL;
mDidReduce = false;
@ -239,7 +237,7 @@ int BfParserData::GetCharIdAtIndex(int findIndex)
}
void BfParserData::GetLineCharAtIdx(int idx, int& line, int& lineChar)
{
{
if (mJumpTableSize <= 0)
{
line = 0;
@ -348,7 +346,7 @@ BfParser::BfParser(BfSystem* bfSystem, BfProject* bfProject) : BfSource(bfSystem
{
BfLogSys(bfSystem, "BfParser::BfParser %08X\n", this);
gParserCount++;
gParserCount++;
mTextVersion = -1;
mEmbedKind = BfSourceEmbedKind_None;
@ -374,15 +372,15 @@ BfParser::BfParser(BfSystem* bfSystem, BfProject* bfProject) : BfSource(bfSystem
mLineStart = 0;
//mCurToken = (BfSyntaxToken)0;
mToken = BfToken_None;
mSyntaxToken = BfSyntaxToken_None;
mSyntaxToken = BfSyntaxToken_None;
mTokenStart = 0;
mTokenEnd = 0;
mLineNum = 0;
mLineNum = 0;
mCompatMode = false;
mQuickCompatMode = false;
mLiteral.mWarnType = 0;
mDataId = -1;
mDataId = -1;
mTriviaStart = 0;
mParsingFailed = false;
@ -397,7 +395,6 @@ BfParser::BfParser(BfSystem* bfSystem, BfProject* bfProject) : BfSource(bfSystem
}
}
//static std::set<BfAstNode*> gFoundNodes;
BfParser::~BfParser()
@ -406,7 +403,6 @@ BfParser::~BfParser()
if (mParserData == NULL)
{
}
else if (mParserData->mRefCount == -1)
{
@ -419,12 +415,12 @@ BfParser::~BfParser()
// Just never got added to the cache
delete mParserData;
}
else
else
{
mParserData->Deref();
mParserData->Deref();
}
mSourceData = NULL;
mSourceData = NULL;
BfLogSys(mSystem, "BfParser::~BfParser %p\n", this);
}
@ -470,9 +466,9 @@ void BfParser::TokenFail(const StringImpl& error, int offset)
void BfParser::Init(uint64 cacheHash)
{
BF_ASSERT(mParserData == NULL);
mParserData = new BfParserData();
mSourceData = mParserData;
mSourceData = mParserData;
mParserData->mFileName = mFileName;
if (mDataId != -1)
mParserData->mDataId = mDataId;
@ -481,7 +477,7 @@ void BfParser::Init(uint64 cacheHash)
mParserData->mAstAllocManager = &gBfParserCache->mAstAllocManager;
mParserData->mSrc = mSrc;
mParserData->mSrcLength = mSrcLength;
if (cacheHash != 0)
{
BfLogSysM("Creating cached parserData %p for %p %s\n", mParserData, this, mFileName.c_str());
@ -503,9 +499,9 @@ void BfParser::Init(uint64 cacheHash)
mParserData->mJumpTable = mJumpTable;
mParserData->mJumpTableSize = mJumpTableSize;
mAlloc = &mParserData->mAlloc;
mAlloc->mSourceData = mSourceData;
mAlloc->mSourceData = mSourceData;
}
void BfParser::NewLine()
@ -529,7 +525,7 @@ void BfParser::SetSource(const char* data, int length)
const int EXTRA_BUFFER_SIZE = 80; // Extra chars for a bit of AllocChars room
//TODO: Check cache
// Don't cache if we have a Cursorid set,
// Don't cache if we have a Cursorid set,
// if mDataId != -1
// if BfParerFlag != 0
@ -570,7 +566,7 @@ void BfParser::SetSource(const char* data, int length)
BfParserCache::DataEntry* dataEntryP;
if (gBfParserCache->mEntries.TryGetWith(lookupEntry, &dataEntryP))
{
{
mUsingCache = true;
mParserData = dataEntryP->mParserData;
@ -595,7 +591,7 @@ void BfParser::SetSource(const char* data, int length)
mSrcLength = length;
mOrigSrcLength = length;
mSrcAllocSize = mSrcLength /*+ EXTRA_BUFFER_SIZE*/;
mSrcAllocSize = mSrcLength /*+ EXTRA_BUFFER_SIZE*/;
char* ownedSrc = new char[mSrcAllocSize + 1];
if (data != NULL)
memcpy(ownedSrc, data, length);
@ -753,7 +749,7 @@ BfBlock* BfParser::ParseInlineBlock(int spaceIdx, int endIdx)
break;
if ((childNode->IsA<BfCommentNode>()))
{
mSidechannelRootNode->Add(childNode);
mSidechannelRootNode->Add(childNode);
mPendingSideNodes.push_back(childNode);
continue;
}
@ -798,7 +794,7 @@ void BfParser::HandlePragma(const StringImpl& pragma, BfBlock* block)
if (paramNode->ToStringView() == "warning")
{
++itr;
//auto iterNode = paramNode->mNext;
//auto iterNode = paramNode->mNext;
//BfAstNode* iterNode = parentNode->mChildArr.GetAs<BfAstNode*>(++curIdx);
BfAstNode* iterNode = itr.Get();
@ -863,11 +859,11 @@ void BfParser::HandlePragma(const StringImpl& pragma, BfBlock* block)
}
else if (paramNode->ToStringView() == "format")
{
++itr;
++itr;
BfAstNode* iterNode = itr.Get();
if (iterNode)
{
if ((iterNode->ToStringView() != "disable") &&
if ((iterNode->ToStringView() != "disable") &&
(iterNode->ToStringView() != "restore"))
{
mPassInstance->FailAfterAt("Expected \"disable\" or \"restore\" after \"format\"", mSourceData, paramNode->GetSrcEnd() - 1);
@ -881,13 +877,13 @@ void BfParser::HandlePragma(const StringImpl& pragma, BfBlock* block)
}
void BfParser::HandleDefine(const StringImpl& name, BfAstNode* paramNode)
{
{
mPreprocessorDefines[name] = BfDefineState_ManualSet;
}
void BfParser::HandleUndefine(const StringImpl& name)
{
mPreprocessorDefines[name] = BfDefineState_ManualUnset;
mPreprocessorDefines[name] = BfDefineState_ManualUnset;
}
MaybeBool BfParser::HandleIfDef(const StringImpl& name)
@ -925,16 +921,14 @@ MaybeBool BfParser::HandleProcessorCondition(BfBlock* paramNode)
void BfParser::HandleInclude(BfAstNode* paramNode)
{
}
void BfParser::HandleIncludeNext(BfAstNode* paramNode)
{
}
bool BfParser::HandlePreprocessor()
{
{
int triviaStart = mTriviaStart;
int checkIdx = 0;
@ -958,7 +952,7 @@ bool BfParser::HandlePreprocessor()
String pragmaParam;
switch (mSrc[mSrcIdx - 1])
{
{
case '<':
if (mPreprocessorIgnoreDepth > 0)
return false;
@ -967,15 +961,15 @@ bool BfParser::HandlePreprocessor()
case '=':
if (mPreprocessorIgnoreDepth > 0)
return false;
pragma = "===";
break;
pragma = "===";
break;
case '>':
if (mPreprocessorIgnoreDepth > 1)
return false;
return false;
pragma = ">>>";
break;
}
bool atEnd = false;
int startIdx = mSrcIdx - 1;
@ -1003,7 +997,7 @@ bool BfParser::HandlePreprocessor()
}
if (!hadSlash)
break;
break;
}
if (c == '\0')
@ -1045,7 +1039,7 @@ bool BfParser::HandlePreprocessor()
BfBlock* paramNode = NULL;
if (pragma.IsEmpty())
{
{
if (spaceIdx != -1)
{
pragma = String(mSrc + charIdx, mSrc + spaceIdx);
@ -1234,7 +1228,7 @@ bool BfParser::HandlePreprocessor()
mPreprocessorNodeStack.pop_back();
}
else if (pragma == "define")
{
{
if ((paramNode != NULL) && (!paramNode->mChildArr.IsEmpty()))
HandleDefine(paramNode->mChildArr[0]->ToString(), paramNode);
wantedParam = true;
@ -1247,7 +1241,7 @@ bool BfParser::HandlePreprocessor()
}
else if (pragma == "error")
{
wantsSingleParam = false;
wantsSingleParam = false;
mPassInstance->FailAt(pragmaParam, mSourceData, startIdx, mSrcIdx - startIdx);
wantedParam = true;
}
@ -1370,7 +1364,6 @@ struct StrHashT<4>
{
const static int HASH = (StrHashT<3>::HASH) ^ Str[4];
};
};
// This is little endian only
@ -1512,7 +1505,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
if (mSrc[mSrcIdx + 1] == '=')
{
if (mSrc[mSrcIdx + 2] == '=')
{
{
if (HandlePreprocessor())
{
// Conflict split
@ -1782,7 +1775,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
}
break;
case '$':
c = mSrc[mSrcIdx];
if ((c == '\"') || (c == '@') || (c == '$'))
{
@ -1795,7 +1788,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
case '\'':
{
SizedArray<BfUnscopedBlock*, 4> interpolateExpressions;
String lineHeader;
String strLiteral;
char startChar = c;
@ -2139,9 +2132,9 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
mPassInstance->FailAfterAt("Expected '}'", mSourceData, newBlock->GetSrcEnd() - 1);
}
mInAsmBlock = false;
interpolateExpressions.Add(newBlock);
interpolateExpressions.Add(newBlock);
}
if (interpolateSetting == 1)
{
for (int i = 0; i < braceCount - 1; i++)
@ -2169,7 +2162,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
braceCount++;
mSrcIdx++;
}
bool isClosingBrace = false;
if (!interpolateExpressions.IsEmpty())
@ -2186,14 +2179,14 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
isClosingBrace = true;
}
else if (block->mCloseBrace->mSrcStart == mSrcIdx - braceCount)
{
{
block->mCloseBrace->mSrcEnd = mSrcIdx - braceCount + interpolateSetting;
isClosingBrace = true;
}
}
if (interpolateSetting == 1)
{
{
for (int i = 0; i < braceCount - 1; i++)
strLiteral += '}';
}
@ -2222,7 +2215,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
{
mTokenStart = stringStart;
stringStart = -1;
}
}
mTriviaStart = triviaStart;
mTokenEnd = mSrcIdx;
@ -2246,7 +2239,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
{
bool isGraphemeCluster = false;
// There's no explicit unicode limit to how many diacriticals a grapheme cluster can contain,
// There's no explicit unicode limit to how many diacriticals a grapheme cluster can contain,
// but we apply a limit for sanity for the purpose of this error
if (strLiteral.length() < 64)
{
@ -2266,7 +2259,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
{
mLiteral.mInt64 = (uint8)strLiteral[0];
}
if (mLiteral.mInt64 >= 0x8000) // Use 0x8000 to remain UTF16-compatible
mLiteral.mTypeCode = BfTypeCode_Char32;
else if (mLiteral.mInt64 >= 0x80) // Use 0x80 to remain UTF8-compatible
@ -2289,7 +2282,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
interpolateExpr->mTriviaStart = mTriviaStart;
interpolateExpr->mSrcStart = mTokenStart;
interpolateExpr->mSrcEnd = mSrcIdx;
BfSizedArrayInitIndirect(interpolateExpr->mExpressions, interpolateExpressions, mAlloc);
BfSizedArrayInitIndirect(interpolateExpr->mExpressions, interpolateExpressions, mAlloc);
mGeneratedNode = interpolateExpr;
mSyntaxToken = BfSyntaxToken_GeneratedNode;
mToken = BfToken_None;
@ -2321,10 +2314,10 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
if (!mPendingSideNodes.IsEmpty())
{
if (auto prevComment = BfNodeDynCast<BfCommentNode>(mPendingSideNodes.back()))
{
{
// This is required for folding '///' style multi-line documentation into a single node
if (prevComment->GetTriviaStart() == mTriviaStart)
{
{
auto prevCommentKind = GetCommentKind(prevComment->mSrcStart);
if ((!BfIsCommentBlock(commentKind)) && (commentKind == prevCommentKind))
@ -2339,7 +2332,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
if ((!handled) && (!disablePreprocessor))
{
auto bfCommentNode = mAlloc->Alloc<BfCommentNode>();
bfCommentNode->Init(this);
bfCommentNode->Init(this);
bfCommentNode->mCommentKind = commentKind;
mSidechannelRootNode->Add(bfCommentNode);
mPendingSideNodes.push_back(bfCommentNode);
@ -2547,7 +2540,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
return;
default:
if (((c >= '0') && (c <= '9')) || (c == '-'))
{
{
bool prevIsDot = prevToken == BfToken_Dot;
if (c == '-')
@ -2577,7 +2570,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
mTokenEnd = mSrcIdx;
return;
}
bool hadOverflow = false;
uint64 val = 0;
int numberBase = 10;
@ -2674,14 +2667,14 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
{
// Skip float parsing if we have a double-dot `1..` case
hasDot = false;
}
}
// The 'prevIsDot' helps tuple lookups like "tuple.0.0", interpreting those as two integers rather than a float
if (((hasDot) && (!prevIsDot)) || (hasExp))
{
// Switch to floating point mode
//double dVal = val;
//double dValScale = 0.1;
//double dValScale = 0.1;
//if (hasExp)
//dVal *= pow(10, expVal);
while (true)
@ -2796,7 +2789,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
if (endNumber)
{
mTokenEnd = mSrcIdx - 1;
mSrcIdx--;
mSrcIdx--;
if ((numberBase == 0x10) &&
((hexDigits >= 16) || ((hadSeps) && (hexDigits > 8)) || ((hadLeadingHexSep) && (hexDigits == 8))))
@ -2815,7 +2808,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
mLiteral.mTypeCode = BfTypeCode_IntUnknown;
if ((numberBase == 0x10) && (hexDigits == 7))
mLiteral.mWarnType = BfWarning_BF4201_Only7Hex;
mLiteral.mWarnType = BfWarning_BF4201_Only7Hex;
if ((numberBase == 0x10) && (hexDigits == 9))
mLiteral.mWarnType = BfWarning_BF4202_TooManyHexForInt;
@ -2830,9 +2823,9 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
mLiteral.mTypeCode = BfTypeCode_UInt64;
}
else if (val > 0xFFFFFFFFLL)
{
{
mLiteral.mTypeCode = BfTypeCode_Int64;
}
}
}
mSyntaxToken = BfSyntaxToken_Literal;
@ -2859,9 +2852,9 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
val *= numberBase;
val += c - 'a' + 0xa;
}
else if ((c == 'u') || (c == 'U'))
{
{
if ((mSrc[mSrcIdx] == 'l') || (mSrc[mSrcIdx] == 'L'))
{
if (mSrc[mSrcIdx] == 'l')
@ -2888,7 +2881,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
else if ((c == 'l') || (c == 'L'))
{
if (c == 'l')
TokenFail("Uppercase 'L' required for int64");
TokenFail("Uppercase 'L' required for int64");
if ((mSrc[mSrcIdx] == 'u') || (mSrc[mSrcIdx] == 'U'))
{
mSrcIdx++;
@ -2901,12 +2894,12 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
mPassInstance->FailAt("Value doesn't fit into uint64", mSourceData, mTokenStart, mSrcIdx - mTokenStart);
mSyntaxToken = BfSyntaxToken_Literal;
return;
}
}
mTokenEnd = mSrcIdx;
mLiteral.mTypeCode = BfTypeCode_Int64;
mLiteral.mInt64 = (int64)val;
if (val == 0x8000000000000000)
mLiteral.mTypeCode = BfTypeCode_UInt64;
mLiteral.mTypeCode = BfTypeCode_UInt64;
else if (val >= 0x8000000000000000)
hadOverflow = true;
if (numberBase == 0x10)
@ -2938,14 +2931,14 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
else
{
mTokenEnd = mSrcIdx - 1;
mSrcIdx--;
mSrcIdx--;
mLiteral.mUInt64 = val;
mLiteral.mTypeCode = BfTypeCode_IntUnknown;
mSyntaxToken = BfSyntaxToken_Literal;
TokenFail("Unexpected character while parsing number", 0);
return;
}
if ((uint64)prevVal > (uint64)val)
hadOverflow = true;
}
@ -3188,7 +3181,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
if (SrcPtrHasToken("new"))
mToken = BfToken_New;
break;
case TOKEN_HASH('n', 'u', 'l', 'l'):
case TOKEN_HASH('n', 'u', 'l', 'l'):
if (SrcPtrHasToken("null"))
mToken = BfToken_Null;
else if (SrcPtrHasToken("nullable"))
@ -3213,7 +3206,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
case TOKEN_HASH('p', 'a', 'r', 'a'):
if ((!mCompatMode) && (SrcPtrHasToken("params")))
mToken = BfToken_Params;
break;
break;
case TOKEN_HASH('p', 'r', 'i', 'v'):
if (SrcPtrHasToken("private"))
mToken = BfToken_Private;
@ -3460,7 +3453,7 @@ void BfParser::NextToken(int endIdx, bool outerIsInterpolate, bool disablePrepro
{
if (interpolateSetting == 0)
stringStart = mTokenStart;
interpolateSetting++;
interpolateSetting++;
}
}
}
@ -3476,7 +3469,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
bool isAsmBlock = false;
bool isTernary = false;
SizedArray<BfAstNode*, 32> childArr;
SizedArray<BfAstNode*, 32> childArr;
int parenDepth = 0;
@ -3491,7 +3484,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
}
NextToken(-1, isInterpolate && (parenDepth == 0));
if (mPreprocessorIgnoredSectionNode != NULL)
{
if (mSyntaxToken != BfSyntaxToken_EOF)
@ -3508,7 +3501,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
gParseMemberIdx++;
int memberIdx = gParseMemberIdx;
auto childNode = CreateNode();
if (childNode == NULL)
break;
@ -3556,12 +3549,12 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
}
mInAsmBlock = false;
astNode->Add(newBlock);
childArr.push_back(newBlock);
}
childArr.push_back(newBlock);
}
else if (mToken == BfToken_RBrace)
{
if (depth == 0)
Fail("Unexpected ending brace");
Fail("Unexpected ending brace");
break;
}
else
@ -3578,7 +3571,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
bool endNow = false;
if (mToken == BfToken_Colon)
{
{
endNow = true;
if (!childArr.IsEmpty())
{
@ -3599,7 +3592,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
if (mToken == BfToken_Comma)
endNow = true;
if (endNow)
{
mSrcIdx = mTokenStart;
@ -3607,7 +3600,7 @@ void BfParser::ParseBlock(BfBlock* astNode, int depth, bool isInterpolate)
}
}
astNode->Add(childNode);
astNode->Add(childNode);
childArr.Add(childNode);
if ((mSyntaxToken == BfSyntaxToken_Token) && (mToken == BfToken_RBrace))
@ -3667,7 +3660,7 @@ void BfParser::Parse(BfPassInstance* passInstance)
mSyntaxToken = BfSyntaxToken_None;
mPassInstance = passInstance;
int startIdx = mSrcIdx;
int startIdx = mSrcIdx;
if (mUsingCache)
{
@ -3708,7 +3701,7 @@ void BfParser::Parse(BfPassInstance* passInstance)
if ((mPassInstance->HasMessages()) || (mParsingFailed))
{
mParserData->mFailed = true; // Don't reuse cache if there were errors or warnings
mParserData->mFailed = true; // Don't reuse cache if there were errors or warnings
}
mPassInstance = NULL;
@ -3739,18 +3732,18 @@ void BfParser::Close()
}
else
{
// It's possible two of the same entries were being parsed at the same time on different threads.
// It's possible two of the same entries were being parsed at the same time on different threads.
// Just let the loser be deleted in the dtor
BfLogSys(mSystem, "Duplicate parser %p not added to cache\n", this);
}
}
}
}
void BfParser::HadSrcRealloc()
{
int jumpTableSize = ((mSrcAllocSize + 1) + PARSER_JUMPTABLE_DIVIDE - 1) / PARSER_JUMPTABLE_DIVIDE;
if (jumpTableSize > mJumpTableSize)
{
{
auto jumpTable = new BfLineStartEntry[jumpTableSize];
memset(jumpTable, 0, jumpTableSize * sizeof(BfLineStartEntry));
memcpy(jumpTable, mJumpTable, mJumpTableSize * sizeof(BfLineStartEntry));
@ -3763,7 +3756,6 @@ void BfParser::HadSrcRealloc()
mParserData->mJumpTable = mJumpTable;
mParserData->mJumpTableSize = mJumpTableSize;
}
}
void BfParser::GenerateAutoCompleteFrom(int srcPosition)
@ -3782,7 +3774,7 @@ void BfParser::ReportMemory(MemReporter* memReporter)
// if (!mUsingCache)
// memReporter->AddBumpAlloc("AstAlloc", *mAlloc);
//
//
// memReporter->Add("JumpTable", mJumpTableSize * sizeof(BfLineStartEntry));
memReporter->Add(sizeof(BfParser));
@ -3917,7 +3909,7 @@ BF_EXPORT void BF_CALLTYPE BfParser_SetNextRevision(BfParser* bfParser, BfParser
BF_EXPORT void BF_CALLTYPE BfParser_SetCursorIdx(BfParser* bfParser, int cursorIdx)
{
bfParser->SetCursorIdx(cursorIdx);
bfParser->SetCursorIdx(cursorIdx);
}
BF_EXPORT void BF_CALLTYPE BfParser_SetIsClassifying(BfParser* bfParser)
@ -3961,7 +3953,7 @@ BF_EXPORT bool BF_CALLTYPE BfParser_Reduce(BfParser* bfParser, BfPassInstance* b
BP_ZONE("BfParser_Reduce");
if (bfParser->mUsingCache)
return true; // Already reduced
bfParser->FinishSideNodes();
int startFailIdx = bfPassInstance->mFailedIdx;
int startWarningCount = bfPassInstance->mWarningCount;
@ -4013,7 +4005,7 @@ BF_EXPORT const char* BF_CALLTYPE BfParser_DocPrep(BfParser* bfParser)
bfPrinter.mCharMapping = &gCharMapping;
bfPrinter.mDocPrep = true;
bfPrinter.Visit(bfParser->mRootNode);
outString = bfPrinter.mOutString;
outString = bfPrinter.mOutString;
return outString.c_str();
}
@ -4094,7 +4086,7 @@ BF_EXPORT BfResolvePassData* BF_CALLTYPE BfParser_CreateResolvePassData(BfParser
}
BF_EXPORT bool BF_CALLTYPE BfParser_BuildDefs(BfParser* bfParser, BfPassInstance* bfPassInstance, BfResolvePassData* resolvePassData, bool fullRefresh)
{
{
if (bfParser->mCursorIdx != -1)
resolvePassData->mHasCursorIdx = true;
@ -4108,7 +4100,6 @@ BF_EXPORT bool BF_CALLTYPE BfParser_BuildDefs(BfParser* bfParser, BfPassInstance
BF_EXPORT void BF_CALLTYPE BfParser_RemoveDefs(BfParser* bfParser)
{
}
BF_EXPORT void BF_CALLTYPE BfParser_ClassifySource(BfParser* bfParser, BfSourceClassifier::CharData* charData, bool preserveFlags)
@ -4117,18 +4108,18 @@ BF_EXPORT void BF_CALLTYPE BfParser_ClassifySource(BfParser* bfParser, BfSourceC
bfParser->Close();
BfSourceClassifier bfSourceClassifier(bfParser, charData);
bfSourceClassifier.mPreserveFlags = preserveFlags;
bfSourceClassifier.mPreserveFlags = preserveFlags;
bfSourceClassifier.Visit(bfParser->mRootNode);
bfSourceClassifier.mIsSideChannel = false; //? false or true?
bfSourceClassifier.Visit(bfParser->mErrorRootNode);
bfSourceClassifier.mIsSideChannel = true;
bfSourceClassifier.Visit(bfParser->mSidechannelRootNode);
bfSourceClassifier.Visit(bfParser->mSidechannelRootNode);
}
BF_EXPORT void BF_CALLTYPE BfParser_CreateClassifier(BfParser* bfParser, BfPassInstance* bfPassInstance, BfResolvePassData* resolvePassData, BfSourceClassifier::CharData* charData)
{
resolvePassData->mIsClassifying = true;
bfParser->mSourceClassifier = new BfSourceClassifier(bfParser, charData);
bfParser->mSourceClassifier = new BfSourceClassifier(bfParser, charData);
bfParser->mSourceClassifier->mClassifierPassId = bfPassInstance->mClassifierPassId;
if ((resolvePassData->mParsers.IsEmpty()) || (bfParser != resolvePassData->mParsers[0]))
@ -4140,7 +4131,7 @@ BF_EXPORT void BF_CALLTYPE BfParser_CreateClassifier(BfParser* bfParser, BfPassI
bfParser->mSourceClassifier->mSkipMethodInternals = true;
bfParser->mSourceClassifier->mSkipTypeDeclarations = true;
if (charData != NULL)
{
{
if ((doClassifyPass) && (bfParser->mRootNode != NULL))
bfParser->mSourceClassifier->Visit(bfParser->mRootNode);
}
@ -4179,4 +4170,4 @@ BF_EXPORT void BF_CALLTYPE BfParser_GenerateAutoCompletionFrom(BfParser* bfParse
BF_EXPORT void BF_CALLTYPE BfParser_SetCompleteParse(BfParser* bfParser)
{
bfParser->mCompleteParse = true;
}
}