MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / GetNextToken

Method GetNextToken

LuaParser/src/Ast/LuaSyntaxTree.cpp:355–388  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

353}
354
355std::size_t LuaSyntaxTree::GetNextToken(std::size_t index) const {
356 if (index == 0) {
357 return 0;
358 }
359
360 std::size_t tokenNodeIndex = 0;
361 if (index < _nodeOrTokens.size()) {
362 auto &n = _nodeOrTokens[index];
363 if (n.Type == NodeOrTokenType::Token) {
364 tokenNodeIndex = index;
365 } else {// Node, 可能存在无元素节点
366 auto lastTokenIndex = GetLastToken(index);
367 if (lastTokenIndex != 0) {
368 tokenNodeIndex = lastTokenIndex;
369 } else {
370 // 当前节点是空节点, 则向前查找, 查找前一个token, 就可以轻松得到下一个token
371 for (auto nodeIndex = index - 1; nodeIndex > 0; nodeIndex--) {
372 if (IsToken(nodeIndex)) {
373 tokenNodeIndex = nodeIndex;
374 break;
375 }
376 }
377 }
378 }
379 }
380
381 if (tokenNodeIndex != 0) {
382 auto &token = _nodeOrTokens[tokenNodeIndex];
383 if (token.Data.TokenIndex + 1 < _tokens.size()) {
384 return _tokens[token.Data.TokenIndex + 1].NodeIndex;
385 }
386 }
387 return 0;
388}
389
390std::size_t LuaSyntaxTree::GetParent(std::size_t index) const {
391 if (index < _nodeOrTokens.size()) {

Callers 13

BasicResolveMethod · 0.45
CompleteMissTokenMethod · 0.45
DoResolveMethod · 0.45
AnalyzeMethod · 0.45
ComplexAnalyzeMethod · 0.45
QueryMethod · 0.45
AnalyzeIfStatementMethod · 0.45
IsLastStmtOfLineMethod · 0.45
ComplexAnalyzeMethod · 0.45
QueryMethod · 0.45

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected