fi1a / tokenizer
字符串的词法分析器。将输入的字符序列分解为识别出的组(词素)。
1.1.7
2023-02-21 02:02 UTC
Requires
- php: ^7.3 || ^8
- ext-iconv: *
- ext-mbstring: *
Requires (Dev)
- captainhook/captainhook: ^5.4
- phpunit/phpunit: ^9.3
- slevomat/coding-standard: ^6.3
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.3
README
fi1a/tokenizer 包提供解析控制台字符串、CSS3 选择器和 PHP 代码的工具。
安装
可以使用 Composer 将此包作为依赖项安装。
composer require fi1a/tokenizer
包的总体架构
库中包含以下接口
- Fi1a\Tokenizer\IToken - 令牌接口;
- Fi1a\Tokenizer\ITokenFactory - 令牌工厂接口;
- Fi1a\Tokenizer\ITokenizer - 词法分析器接口;
- Fi1a\Tokenizer\ITokenizerFactory - 词法分析器工厂类接口。
以及抽象类
- Fi1a\Tokenizer\AToken - 实现了 IToken 接口的令牌;
- Fi1a\Tokenizer\ATokenizer - 实现了 ITokenizer 接口的类。
库中包含以下用于解析的词法分析器
- 控制台字符串;
- CSS3 选择器;
- PHP 代码。
命令行解析
允许将命令字符串解析为令牌以供后续处理。
use Fi1a\Tokenizer\ConsoleLine\Tokenizer; use Fi1a\Tokenizer\ITokenizer; $tokenizer = new Tokenizer('info --locale="ru , en"'); while (($token = $tokenizer->next()) !== ITokenizer::T_EOF) { $token->getImage(); // 'info', ' ', '--locale', '=', '"', 'ru , en', '"' }
CSS3 选择器解析
允许将 CSS3 选择器字符串解析为令牌以供后续处理。
use Fi1a\Tokenizer\CSS3Selector\Tokenizer; use Fi1a\Tokenizer\ITokenizer; $tokenizer = new Tokenizer('div.e-class1.m_class2 .b-class3'); while (($token = $tokenizer->next()) !== ITokenizer::T_EOF) { $token->getImage(); // 'div', '.e-class1', '.m_class2', ' ', '.b-class3' }
PHP 代码解析
允许将 PHP 代码字符串解析为令牌以供后续处理。
use Fi1a\Tokenizer\PHP\TokenizerFactory; use Fi1a\Tokenizer\ITokenizer; $tokenizer = TokenizerFactory::factory("<?php class Foo {}"); while (($token = $tokenizer->next()) !== ITokenizer::T_EOF) { $token->getImage(); // '<?php ', 'class', ' ', 'Foo', ' ', '{', '}' }