MCPcopy Create free account
hub / github.com/beefytech/Beef / ParseInlineBlock

Method ParseInlineBlock

IDEHelper/Compiler/BfParser.cpp:817–872  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

815}
816
817BfBlock* BfParser::ParseInlineBlock(int spaceIdx, int endIdx)
818{
819 BfBlock* block = NULL;
820 SizedArray<BfAstNode*, 8> childArr;
821
822 mSrcIdx = spaceIdx;
823 BfAstNode* startNode = NULL;
824 int usedEndIdx = spaceIdx;
825 int usedLineNum = mLineNum;
826 int usedLineStart = mLineStart;
827
828 while (true)
829 {
830 NextToken(endIdx + 1, false, true);
831 if (mSyntaxToken == BfSyntaxToken_HIT_END_IDX)
832 {
833 mSrcIdx = usedEndIdx;
834 mLineNum = usedLineNum;
835 mLineStart = usedLineStart;
836
837 auto lastNode = mSidechannelRootNode->GetLast();
838 if (lastNode != NULL)
839 mSrcIdx = std::max(mSrcIdx, lastNode->GetSrcEnd());
840 break;
841 }
842
843 usedEndIdx = mSrcIdx;
844 usedLineStart = mLineStart;
845 usedLineNum = mLineNum;
846
847 auto childNode = CreateNode();
848 if (childNode == NULL)
849 break;
850 if ((childNode->IsA<BfCommentNode>()))
851 {
852 mSidechannelRootNode->Add(childNode);
853 mPendingSideNodes.push_back(childNode);
854 continue;
855 }
856 if (startNode == NULL)
857 startNode = childNode;
858 if (block == NULL)
859 {
860 block = mAlloc->Alloc<BfBlock>();
861 block->mParserBlockId = ++mCurBlockId;
862 }
863 block->Add(childNode);
864 childArr.push_back(childNode);
865 //block->mChildArr.Add(childNode, &mAlloc);
866 }
867
868 if (block != NULL)
869 block->Init(childArr, mAlloc);
870
871 return block;
872}
873
874BfExpression* BfParser::CreateInlineExpressionFromNode(BfBlock* block)

Callers

nothing calls this directly

Calls 5

GetLastMethod · 0.45
GetSrcEndMethod · 0.45
AddMethod · 0.45
push_backMethod · 0.45
InitMethod · 0.45

Tested by

no test coverage detected