Как добавить модификаторы в выражение регулярного выражения в методе push класса Lexer (php_parle) - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно поместить некоторые модификаторы в выражение regex (например, Ungreedy), но, похоже, php_parle "не знает" об этом.

Пытался прочитать инструкцию от https://www.php.net/manual/en/book.parle.php

и не нашёл ни слова о модификаторах.

use PhpParser\Error;
use PhpParser\NodeDumper;
use PhpParser\ParserFactory;

/* name => id */
$token = array(            
   "CONSTANT" => 12,
);
/* id => name */
$tokenIdToName = array_flip($token);

$lex = new Lexer;
$lex->push("(['](.*)['])", $token["CONSTANT"]);
$lex->build();

$in = "(1 == 1) ? 'yes' : 'no'";
$lex->consume($in);

do {
   $lex->advance();
   $tok = $lex->getToken();
   if (Token::UNKNOWN == $tok->id) {                
      throw new LexerException("Unknown token '{$tok->value}' at offset {$lex->marker}.");
   }
   if($tok->id == 0) {
      continue;
   }
   echo $tokenIdToName[$tok->id], PHP_EOL;
} while (Token::EOI != $tok->id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...