parse() public method

Process all {macros} and .
public parse ( $input ) : latte\Token[]
return latte\Token[]
 /**
  * Extracts translation messages from a file to the catalogue.
  *
  * @param string           $file The path to look into
  * @param MessageCatalogue $catalogue The catalogue
  */
 public function extractFile($file, MessageCatalogue $catalogue)
 {
     $buffer = NULL;
     $parser = new Parser();
     $parser->shortNoEscape = TRUE;
     foreach ($tokens = $parser->parse(file_get_contents($file)) as $token) {
         if ($token->type !== $token::MACRO_TAG || !in_array($token->name, array('_', '/_'), TRUE)) {
             if ($buffer !== NULL) {
                 $buffer .= $token->text;
             }
             continue;
         }
         if ($token->name === '/_') {
             $catalogue->set(($this->prefix ? $this->prefix . '.' : '') . $buffer, $buffer);
             $buffer = NULL;
         } elseif ($token->name === '_' && empty($token->value)) {
             $buffer = '';
         } else {
             $args = new MacroTokens($token->value);
             $writer = new PhpWriter($args, $token->modifiers);
             $message = $writer->write('%node.word');
             if (in_array(substr(trim($message), 0, 1), array('"', '\''), TRUE)) {
                 $message = substr(trim($message), 1, -1);
             }
             $catalogue->set(($this->prefix ? $this->prefix . '.' : '') . $message, $message);
         }
     }
 }
 /**
  * @param string $file path
  * @return array of errors
  */
 public function checkFile($file)
 {
     $content = file_get_contents($file);
     $tokens = $this->parser->parse($content);
     $errors = [];
     foreach ($this->rules as $rule) {
         foreach ($rule($tokens, $content) as $error) {
             list($code, $msg, $line) = $error;
             $es = ['code' => $code, 'message' => $msg, 'line' => $line, 'rule' => get_class($rule)];
             $errors[] = $es;
         }
     }
     usort($errors, function ($a, $b) {
         return $a['line'] > $b['line'];
     });
     return $errors;
 }