src/Tokenizer/TokensAnalyzer.php
public function isWhilePartOfDoWhile($index)
    {
        $tokens = $this->tokens;
        $token = $tokens[$index];

        if (!$token->isGivenKind(T_WHILE)) {
            throw new \LogicException(sprintf('No T_WHILE at given index %d, got %s.', $index, $token->getName()));
        }

        $endIndex = $tokens->getPrevMeaningfulToken($index);
        if (!$tokens[$endIndex]->equals('}')) {
            return false;
        }

        $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_CURLY_BRACE, $endIndex);
        $beforeStartIndex = $tokens->getPrevMeaningfulToken($startIndex);

        return $tokens[$beforeStartIndex]->isGivenKind(T_DO);
    }
public function isWhilePartOfDoWhile($index)
    {
        $tokens = $this->tokens;
        $token = $tokens[$index];

        if (!$token->isGivenKind(T_WHILE)) {
            throw new \LogicException(sprintf('No T_WHILE at given index %d, got %s.', $index, $token->getName()));
        }

        $endIndex = $tokens->getPrevMeaningfulToken($index);
        if (!$tokens[$endIndex]->equals('}')) {
            return false;
        }

        $startIndex = $tokens->findBlockStart(Tokens::BLOCK_TYPE_CURLY_BRACE, $endIndex);
        $beforeStartIndex = $tokens->getPrevMeaningfulToken($startIndex);

        return $tokens[$beforeStartIndex]->isGivenKind(T_DO);
    }
public function isWhilePartOfDoWhile ( $ index ) { $ tokens = $ this -> tokens ; $ token = $ tokens [ $ index ] ; if ( ! $ token -> isGivenKind ( T_WHILE ) ) { throw new \ LogicException ( sprintf ( 'No T_WHILE at given index %d, got %s.' , $ index , $ token -> getName ( ) ) ) ; } $ endIndex = $ tokens -> getPrevMeaningfulToken ( $ index ) ; if ( ! $ tokens [ $ endIndex ] -> equals ( '}' ) ) { return false ; } $ startIndex = $ tokens -> findBlockStart ( Tokens :: BLOCK_TYPE_CURLY_BRACE , $ endIndex ) ; $ beforeStartIndex = $ tokens -> getPrevMeaningfulToken ( $ startIndex ) ; return $ tokens [ $ beforeStartIndex ] -> isGivenKind ( T_DO ) ; }
Check if `T_WHILE` token at given index is `do { ... } while ();` syntax
and not `while () { ...}`.

@param int $index

@return bool
Check if T_WHILE token at given index is do { ... } while () ; syntax and not while () { ... } .