Мне нужно поместить некоторые модификаторы в выражение 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);