You are here

private function DocParser::Annotations in Service Container 7

Same name and namespace in other branches
  1. 7.2 modules/providers/service_container_annotation_discovery/lib/Doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php \Doctrine\Common\Annotations\DocParser::Annotations()

Annotations ::= Annotation {[ "*" ]* [Annotation]}*

Return value

array

1 call to DocParser::Annotations()
DocParser::parse in modules/providers/service_container_annotation_discovery/lib/Doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
Parses the given docblock string for annotations.

File

modules/providers/service_container_annotation_discovery/lib/Doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php, line 615

Class

DocParser
A parser for docblock annotations.

Namespace

Doctrine\Common\Annotations

Code

private function Annotations() {
  $annotations = array();
  while (null !== $this->lexer->lookahead) {
    if (DocLexer::T_AT !== $this->lexer->lookahead['type']) {
      $this->lexer
        ->moveNext();
      continue;
    }

    // make sure the @ is preceded by non-catchable pattern
    if (null !== $this->lexer->token && $this->lexer->lookahead['position'] === $this->lexer->token['position'] + strlen($this->lexer->token['value'])) {
      $this->lexer
        ->moveNext();
      continue;
    }

    // make sure the @ is followed by either a namespace separator, or
    // an identifier token
    if (null === ($peek = $this->lexer
      ->glimpse()) || DocLexer::T_NAMESPACE_SEPARATOR !== $peek['type'] && !in_array($peek['type'], self::$classIdentifiers, true) || $peek['position'] !== $this->lexer->lookahead['position'] + 1) {
      $this->lexer
        ->moveNext();
      continue;
    }
    $this->isNestedAnnotation = false;
    if (false !== ($annot = $this
      ->Annotation())) {
      $annotations[] = $annot;
    }
  }
  return $annotations;
}