PHPackages                             fi1a/tokenizer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. fi1a/tokenizer

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

fi1a/tokenizer
==============

Лексический анализатор строк (tokenizer). Разбор входной последовательности символов на распознанные группы (лексемы).

1.1.7(3y ago)015.2k↓20%5MITPHPPHP ^7.3 || ^8

Since Sep 10Pushed 3y ago1 watchersCompare

[ Source](https://github.com/fi1a/tokenizer)[ Packagist](https://packagist.org/packages/fi1a/tokenizer)[ Docs](https://github.com/fi1a/tokenizer)[ RSS](/packages/fi1a-tokenizer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (13)Used By (5)

Лексические анализаторы.
========================

[](#лексические-анализаторы)

[![Latest Version](https://camo.githubusercontent.com/a38c6e23e29656f3ff6731aed537c69c008651dd14b174964627a3aec42d053e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f666931612f746f6b656e697a65723f6c6162656c3d72656c65617365)](https://packagist.org/packages/fi1a/tokenizer)[![Software License](https://camo.githubusercontent.com/1127d1938d4a03c899d8cc5d1cf3fe8888a3b5939f6dab0d45ee68962d6abdd3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f666931612f746f6b656e697a65723f7374796c653d666c61742d737175617265)](https://github.com/fi1a/tokenizer/blob/master/LICENSE)[![PHP Version](https://camo.githubusercontent.com/d9d61444056a7f48d4505a8ce07fb331fdae23edef14b36dbc66206954c9ff5f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f666931612f746f6b656e697a65723f7374796c653d666c61742d737175617265)](https://php.net)[![Coverage Status](https://camo.githubusercontent.com/0c967d746eb7f4fe28065a3b94d23faa207cd6f4a968535b20fce0310a87cf89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e)](https://camo.githubusercontent.com/0c967d746eb7f4fe28065a3b94d23faa207cd6f4a968535b20fce0310a87cf89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d677265656e)[![Total Downloads](https://camo.githubusercontent.com/fae49adc15f72d3ad284d60abff98f38c429aee1c7ff5db433b04063e2b73cc8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f666931612f746f6b656e697a65722e7376673f7374796c653d666c61742d73717561726526636f6c6f72423d6d656469756d76696f6c6574726564)](https://packagist.org/packages/fi1a/tokenizer)[![Support mail](https://camo.githubusercontent.com/116fa0d447870a3a6c6c1f4b296c889707a6e30a69c2b28cbe8d0f6f5c3d4920/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696c2d737570706f7274253430666931612e72752d627269676874677265656e)](mailto:support@fi1a.ru)

Пакет 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-селекторов)

Позволяет разобрать строку с 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-кода)

Позволяет разобрать строку с PHP кодом на токены для последующей обработки.

```
use Fi1a\Tokenizer\PHP\TokenizerFactory;
use Fi1a\Tokenizer\ITokenizer;

$tokenizer = TokenizerFactory::factory("
