elerium / lexer
此包最新版本(dev-master)没有提供许可证信息。
dev-master
2013-12-28 16:26 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- nette/nette: 2.0.*
- nette/tester: dev-master
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.