Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fi1a/tokenizer
Лексический анализатор строк (tokenizer). Разбор входной последовательности символов на распознанные группы (лексемы).
https://github.com/fi1a/tokenizer
php tokenizer
Last synced: about 1 month ago
JSON representation
Лексический анализатор строк (tokenizer). Разбор входной последовательности символов на распознанные группы (лексемы).
- Host: GitHub
- URL: https://github.com/fi1a/tokenizer
- Owner: fi1a
- License: mit
- Created: 2020-09-07T14:57:31.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-02-21T02:03:28.000Z (almost 2 years ago)
- Last Synced: 2024-11-12T22:09:35.947Z (about 2 months ago)
- Topics: php, tokenizer
- Language: PHP
- Homepage:
- Size: 52.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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(); // '