elerium/lexer

此包最新版本(dev-master)没有提供许可证信息。

dev-master 2013-12-28 16:26 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:00:29 UTC


README

PHP的词法分析工具。

用法

以下是一个示例用法

$patterns = array(
    'number' => '[0-9]',
);

$lexer = new \Elerium\Lexer\Lexer($patterns);
$lexemes = $lexer->getLexemes('12'); // Returns two lexemes

模式

模式名称应该是数字或非数字值。模式名称应该包含命名的子模式,以 ?P 标记开始于模式或子模式的开始处,但重要的是模式名和子模式名必须是唯一的。被忽略的模式以 ?: 标记。

命名模式

$namedPattern = array(
    'address' => '(?P<city>[a-zA-Z]+) (?P<street>[a-zA-Z0-9]+)',
    'name' => '(?P<name>[a-zA-Z]+) (?P<surname>[a-zA-Z]+)' // error: repeating name!
);

忽略模式

$ignoredPatterns = array(
    'whitespace' => '?:\s', // lexeme won't be added to list
);

错误

如果不存在适用于输入的模式,则 Lexer 抛出 Elerium\Lexer\LexerException

$lexer = new \Elerium\Lexer\Lexer(array(
    'foo' => 'foo'
));
$lexer->getLexemes('bar'); // Invalid lexeme near 'bar' at line 1.