MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / createAst

Method createAst

lib/tokenlist.cpp:1897–1915  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1895}
1896
1897void TokenList::createAst() const
1898{
1899 for (Token *tok = mTokensFrontBack->front; tok; tok = tok ? tok->next() : nullptr) {
1900 Token* const nextTok = createAstAtToken(tok);
1901 if (precedes(nextTok, tok))
1902 throw InternalError(tok, "Syntax Error: Infinite loop when creating AST.", InternalError::AST);
1903 tok = nextTok;
1904 }
1905 for (Token *tok = mTokensFrontBack->front; tok; tok = tok ? tok->next() : nullptr) {
1906 if (tok->astParent())
1907 continue;
1908 if (!tok->astOperand1() && !tok->astOperand2())
1909 continue;
1910 visitAstNodes(tok, [&](Token* child) {
1911 child->astTop(tok);
1912 return ChildrenToVisit::op1_and_op2;
1913 });
1914 }
1915}
1916
1917namespace {
1918 struct OnException {

Callers 7

simplifyTokens1Method · 0.80
evalConditionMethod · 0.80
testAstMethod · 0.80
ast1Method · 0.80
function_match_argsMethod · 0.80

Calls 8

createAstAtTokenFunction · 0.85
precedesFunction · 0.85
visitAstNodesFunction · 0.85
nextMethod · 0.80
astParentMethod · 0.80
astOperand1Method · 0.80
astOperand2Method · 0.80
astTopMethod · 0.80

Tested by 4

testAstMethod · 0.64
ast1Method · 0.64
function_match_argsMethod · 0.64