fi1a/tokenizer

字符串的词法分析器。将输入的字符序列分解为识别出的组(词素)。

1.1.7 2023-02-21 02:02 UTC

This package is auto-updated.

Last update: 2024-09-21 05:15:52 UTC


README

Latest Version Software License PHP Version Coverage Status Total Downloads Support mail

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', ' ', '{', '}'
}