添加更多Token

This commit is contained in:
Jerry Yan 2021-01-22 17:49:27 +08:00
parent 1aeef5016b
commit 3adf4811c0
6 changed files with 49 additions and 3 deletions

View File

@ -10,11 +10,13 @@ namespace JerryYan\DSL\Token\Factory;
use JerryYan\DSL\Token\Token;
use JerryYan\DSL\Token\TokenCurry;
use JerryYan\DSL\Token\TokenDefine;
use JerryYan\DSL\Token\TokenFake;
use JerryYan\DSL\Token\TokenLogicAnd;
use JerryYan\DSL\Token\TokenLogicEqual;
use JerryYan\DSL\Token\TokenLogicFake;
use JerryYan\DSL\Token\TokenLogicNotEqual;
use JerryYan\DSL\Token\TokenLogicOr;
use JerryYan\DSL\Token\TokenNumber;
use JerryYan\DSL\Token\TokenUseVariable;
@ -24,9 +26,11 @@ class DefaultFactory extends FactoryInterface
{
protected $tokenMap = [
Token::FAKE => TokenFake::class,
Token::CURRY => TokenCurry::class,
Token::LOGIC_AND => TokenLogicAnd::class,
Token::LOGIC_OR => TokenLogicOr::class,
Token::LOGIC_EQUAL => TokenLogicEqual::class,
Token::LOGIC_NOT_EQUAL => TokenLogicNotEqual::class,
Token::LOGIC_FAKE => TokenLogicFake::class,
Token::VARIABLE => TokenVariable::class,
Token::NUMBER => TokenNumber::class,

View File

@ -40,6 +40,11 @@ final class Token
const FAKE = "FAKE";
const CURRY = "CURRY";
const LOGIC_FAKE = "LOGIC_FAKE";
// 括号
const BRACKET_LEFT = "BRACKET_LEFT";
const BRACKET_RIGHT = "BRACKET_RIGHT";
const SQUARE_BRACKET_LEFT = "SQUARE_BRACKET_LEFT";
const SQUARE_BRACKET_RIGHT = "SQUARE_BRACKET_RIGHT";
// 运算符相关
const OP_CONCAT = "OP_CONCAT";
const OP_CONCAT_EQUAL = "OP_CONCAT_EQUAL";

17
src/Token/TokenCurry.php Normal file
View File

@ -0,0 +1,17 @@
<?php
/**
* @filename TokenCurry.php
* @author Jerry Yan <792602257@qq.com>
* @date 2021/1/22 17:42
*/
namespace JerryYan\DSL\Token;
class TokenCurry extends TokenInterface
{
public static $alias = [
'与'
];
}

View File

@ -12,6 +12,6 @@ namespace JerryYan\DSL\Token;
class TokenLogicEqual extends TokenInterface
{
public static $alias = [
'等于'
'等于', '相等时', '相等'
];
}

View File

@ -0,0 +1,17 @@
<?php
/**
* @filename TokenLogicNotEqual.php
* @author Jerry Yan <792602257@qq.com>
* @date 2021/1/22 17:45
*/
namespace JerryYan\DSL\Token;
class TokenLogicNotEqual extends TokenInterface
{
public static $alias = [
'不等于', '不相等时', '不相等'
];
}

View File

@ -9,10 +9,12 @@ namespace JerryYan\DSL\Test\Tokenizer;
use JerryYan\DSL\Reader\StringReader;
use JerryYan\DSL\Token\Factory\DefaultFactory;
use JerryYan\DSL\Token\TokenCurry;
use JerryYan\DSL\Token\TokenLogicAnd;
use JerryYan\DSL\Token\TokenInterface;
use JerryYan\DSL\Token\TokenLogicEqual;
use JerryYan\DSL\Token\TokenLogicFake;
use JerryYan\DSL\Token\TokenLogicNotEqual;
use JerryYan\DSL\Token\TokenLogicOr;
use JerryYan\DSL\Token\TokenNumber;
use JerryYan\DSL\Token\TokenVariable;
@ -23,13 +25,14 @@ class TokenizerTest extends TestCase
{
protected $tokenizer;
protected $reader;
private $text = "这个 和 那个 或者 那个 和 这个 等于 -0.5 的时候";
private $text = "另外那个 与 另外一个 不相等时 或者 那个 和 这个 等于 -0.5 的时候";
/** @var class-string<TokenInterface>[] 预期的类型 */
private $textTokenType = [
TokenLogicFake::class,
TokenVariable::class,
TokenLogicAnd::class,
TokenCurry::class,
TokenVariable::class,
TokenLogicNotEqual::class,
TokenLogicOr::class,
TokenVariable::class,
TokenLogicAnd::class,