Code Duplication    Length = 6-7 lines in 2 locations

src/Lexer.php 2 locations

@@ 779-784 (lines=6) @@
776
                }
777
            } elseif ($state === 4) {
778
                $flags |= Token::FLAG_NUMBER_FLOAT;
779
                if ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') {
780
                    $state = 5;
781
                } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') {
782
                    // Just digits, `e` and `E` are valid characters.
783
                    break;
784
                }
785
            } elseif ($state === 5) {
786
                $flags |= Token::FLAG_NUMBER_APPROXIMATE;
787
                if ($this->str[$this->last] === '+' || $this->str[$this->last] === '-'
@@ 787-793 (lines=7) @@
784
                }
785
            } elseif ($state === 5) {
786
                $flags |= Token::FLAG_NUMBER_APPROXIMATE;
787
                if ($this->str[$this->last] === '+' || $this->str[$this->last] === '-'
788
                    || ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9')
789
                ) {
790
                    $state = 6;
791
                } else {
792
                    break;
793
                }
794
            } elseif ($state === 6) {
795
                if ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') {
796
                    // Just digits are valid characters.