Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fi1a/tokenizer

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

php tokenizer

Last synced: about 1 month ago
JSON representation

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

Awesome Lists containing this project

README

        

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

[![Latest Version][badge-release]][packagist]
[![Software License][badge-license]][license]
[![PHP Version][badge-php]][php]
![Coverage Status][badge-coverage]
[![Total Downloads][badge-downloads]][downloads]
[![Support mail][badge-mail]][mail]

Пакет fi1a/tokenizer предоставляет инструменты для разбора входной последовательности консольной строки, CSS3 селекторов и PHP кода.

## Установка

Установить этот пакет можно как зависимость, используя Composer.

``` bash
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 кода.

## Разбор командной строки

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

```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 селекторами на токены для последующей обработки.

```php
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("next()) !== ITokenizer::T_EOF) {
$token->getImage(); // '