Code Duplication    Length = 16-20 lines in 2 locations

src/POData/UriProcessor/QueryProcessor/ExpressionParser/ExpressionParser.php 2 locations

@@ 164-183 (lines=20) @@
161
     *
162
     * @return AbstractExpression
163
     */
164
    private function parseLogicalOr()
165
    {
166
        $this->recurseEnter();
167
        $left = $this->parseLogicalAnd();
168
        while ($this->tokenIdentifierIs(ODataConstants::KEYWORD_OR)) {
169
            $logicalOpToken = clone $this->getCurrentToken();
170
            $this->lexer->nextToken();
171
            $right = $this->parseLogicalAnd();
172
            FunctionDescription::verifyLogicalOpArguments($logicalOpToken, $left, $right);
173
            $left = new LogicalExpression(
174
                $left,
175
                $right,
176
                ExpressionType::OR_LOGICAL
177
            );
178
        }
179
180
        $this->recurseLeave();
181
182
        return $left;
183
    }
184
185
    /**
186
     * Parse logical and (and).
@@ 190-205 (lines=16) @@
187
     *
188
     * @return AbstractExpression
189
     */
190
    private function parseLogicalAnd()
191
    {
192
        $this->recurseEnter();
193
        $left = $this->parseComparison();
194
        while ($this->tokenIdentifierIs(ODataConstants::KEYWORD_AND)) {
195
            $logicalOpToken = clone $this->getCurrentToken();
196
            $this->lexer->nextToken();
197
            $right = $this->parseComparison();
198
            FunctionDescription::verifyLogicalOpArguments($logicalOpToken, $left, $right);
199
            $left = new LogicalExpression($left, $right, ExpressionType::AND_LOGICAL);
200
        }
201
202
        $this->recurseLeave();
203
204
        return $left;
205
    }
206
207
    /**
208
     * Parse comparison operation (eq, ne, gt, ge, lt, le).