public function parseInputStreamWithBacktracking(InputStreamInterface $input, ExpressionResultInterface $previous_result = null) { if ($previous_result !== null) { return null; } $string = $input->getRemainingString(); $result = $this->string_parser->parse($string); if ($result === null) { $input->move(-strlen($string)); return null; } $input->move($result->getLength() - strlen($string)); return $result; }