本文整理汇总了C++中AST::asLambdaExpression方法的典型用法代码示例。如果您正苦于以下问题:C++ AST::asLambdaExpression方法的具体用法?C++ AST::asLambdaExpression怎么用?C++ AST::asLambdaExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AST
的用法示例。
在下文中一共展示了AST::asLambdaExpression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fineTuneASTNodePositions
//.........这里部分代码省略.........
Token identifierToken = m_unit->tokenAt(identifierTokenIndex);
if (debug) {
qDebug() << "identifierTokenIndex:" << identifierToken.spell();
}
int newPosStart = getTokenStartCursorPosition(identifierTokenIndex, m_workingCursor);
int newPosEnd = getTokenEndCursorPosition(identifierTokenIndex, m_workingCursor);
bool isInsideIdentifier = m_initialChangeSelectionCursor.anchor() >= newPosStart &&
m_initialChangeSelectionCursor.position() <= newPosEnd;
if (currentASTStep() == 1 && isInsideIdentifier) {
if (debug)
qDebug() << "Selecting just identifier before selecting template id.";
positions.astPosStart = newPosStart;
positions.astPosEnd = newPosEnd;
}
} else if (TemplateDeclarationAST *templateDeclarationAST = ast->asTemplateDeclaration()) {
unsigned templateKeywordTokenIndex = templateDeclarationAST->template_token;
unsigned greaterTokenIndex = templateDeclarationAST->greater_token;
Token templateKeywordToken = m_unit->tokenAt(templateKeywordTokenIndex);
Token greaterToken = m_unit->tokenAt(greaterTokenIndex);
if (debug) {
qDebug() << "templateKeywordTokenIndex:" << templateKeywordToken.spell();
qDebug() << "greaterTokenIndex:" << greaterToken.spell();
}
int templateKeywordPosStart = getTokenStartCursorPosition(templateKeywordTokenIndex,
m_workingCursor);
int templateKeywordPosEnd = getTokenEndCursorPosition(templateKeywordTokenIndex,
m_workingCursor);
int templateParametersPosEnd = getTokenEndCursorPosition(greaterTokenIndex,
m_workingCursor);
bool isInsideTemplateKeyword =
m_initialChangeSelectionCursor.anchor() >= templateKeywordPosStart &&
m_initialChangeSelectionCursor.position() <= templateKeywordPosEnd;
if (currentASTStep() == 1 && isInsideTemplateKeyword) {
if (debug)
qDebug() << "Selecting template keyword.";
positions.astPosStart = templateKeywordPosStart;
positions.astPosEnd = templateKeywordPosEnd;
}
if (currentASTStep() == 2 && isInsideTemplateKeyword) {
if (debug)
qDebug() << "Selecting template keyword and parameters.";
positions.astPosStart = templateKeywordPosStart;
positions.astPosEnd = templateParametersPosEnd;
}
} else if (LambdaExpressionAST *lambdaExpressionAST = ast->asLambdaExpression()) {
// TODO: Fix more lambda cases.
LambdaIntroducerAST *lambdaIntroducerAST = lambdaExpressionAST->lambda_introducer;
LambdaDeclaratorAST *lambdaDeclaratorAST = lambdaExpressionAST->lambda_declarator;
if (!lambdaDeclaratorAST)
return;
TrailingReturnTypeAST *trailingReturnTypeAST = lambdaDeclaratorAST->trailing_return_type;
unsigned firstSquareBracketTokenIndex = lambdaIntroducerAST->lbracket_token;
unsigned lastParenTokenIndex = lambdaDeclaratorAST->rparen_token;
Token firstSquareBracketToken = m_unit->tokenAt(firstSquareBracketTokenIndex);
Token lastParenToken = m_unit->tokenAt(lastParenTokenIndex);
if (debug) {
qDebug() << "firstSquareBracketToken:" << firstSquareBracketToken.spell();
qDebug() << "lastParenToken:" << lastParenToken.spell();
}
int firstSquareBracketPosStart = getTokenStartCursorPosition(firstSquareBracketTokenIndex,
m_workingCursor);
int lastParenPosEnd = getTokenEndCursorPosition(lastParenTokenIndex, m_workingCursor);
bool isInsideDeclarator =
m_initialChangeSelectionCursor.anchor() >= firstSquareBracketPosStart &&
m_initialChangeSelectionCursor.position() <= lastParenPosEnd;
if (currentASTStep() == 1 && isInsideDeclarator) {
if (debug)
qDebug() << "Selecting lambda capture group and arguments.";
positions.astPosStart = firstSquareBracketPosStart;
positions.astPosEnd = lastParenPosEnd;
}
if (currentASTStep() == 2 && isInsideDeclarator && trailingReturnTypeAST) {
if (debug)
qDebug() << "Selecting lambda prototype.";
unsigned lastReturnTypeTokenIndex = trailingReturnTypeAST->lastToken();
Token lastReturnTypeToken = m_unit->tokenAt(lastReturnTypeTokenIndex);
if (debug)
qDebug() << "lastReturnTypeToken:" << lastReturnTypeToken.spell();
int lastReturnTypePosEnd = getTokenEndCursorPosition(lastReturnTypeTokenIndex,
m_workingCursor);
positions.astPosStart = firstSquareBracketPosStart;
positions.astPosEnd = lastReturnTypePosEnd - 2;
}
}
}