更多Token类型

This commit is contained in:
2021-01-22 17:00:16 +08:00
parent 9610d0609d
commit ca612f74f2
10 changed files with 86 additions and 10 deletions

View File

@ -10,20 +10,26 @@ namespace JerryYan\DSL\Token\Factory;
use JerryYan\DSL\Token\Token;
use JerryYan\DSL\Token\TokenLogicAnd;
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\TokenLogicOr;
use JerryYan\DSL\Token\TokenUseVariable;
use JerryYan\DSL\Token\TokenVariable;
class DefaultFactory extends FactoryInterface
{
protected $tokenMap = [
Token::FAKE => TokenFake::class,
Token::LOGIC_AND => TokenLogicAnd::class,
Token::LOGIC_OR => TokenLogicOr::class,
Token::LOGIC_EQUAL => TokenLogicEqual::class,
Token::LOGIC_FAKE => TokenLogicFake::class,
Token::VARIABLE => TokenVariable::class,
Token::DEFINE => TokenDefine::class,
Token::USE_VARIABLE => TokenUseVariable::class,
];
protected $undefinedTokenClass = TokenVariable::class;

View File

@ -22,23 +22,36 @@ final class Token
const LOGIC_AND = "LOGIC_AND";
const LOGIC_NOT = "LOGIC_NOT";
const LOGIC_EQUAL = "LOGIC_EQUAL";
const LOGIC_EQUAL_STRONG = "LOGIC_EQUAL_STRONG";
const LOGIC_NOT_EQUAL = "LOGIC_NOT_EQUAL";
const LOGIC_NOT_EQUAL_STRONG = "LOGIC_NOT_EQUAL_STRONG";
const LOGIC_GREATER = "LOGIC_GREATER";
const LOGIC_GREATER_EQUAL = "LOGIC_GREATER_EQUAL";
const LOGIC_LESS = "LOGIC_LESS";
const LOGIC_LESS_EQUAL = "LOGIC_LESS_EQUAL";
const LOGIC_FAKE = "LOGIC_FAKE";
// 变量相关
const DEFINE = "DEFINE";
const USE_VARIABLE = "USE_VARIABLE";
const VARIABLE = "VARIABLE";
const VAR_ASSIGN = "VAR_ASSIGN";
const ASSIGN = "ASSIGN";
const CALL = "CALL";
const FAKE = "FAKE";
// 运算符相关
const OP_CONCAT = "Concat";
const OP_CONCAT = "OP_CONCAT";
const OP_CONCAT_EQUAL = "OP_CONCAT_EQUAL";
const OP_PLUS = "OP_PLUS";
const OP_PLUS_EQUAL = "OP_PLUS_EQUAL";
const OP_MINUS = "OP_MINUS";
const OP_MINUS_EQUAL = "OP_MINUS_EQUAL";
const OP_MULTIPLY = "OP_MULTIPLY";
const OP_MULTIPLY_EQUAL = "OP_MULTIPLY_EQUAL";
const OP_DIVIDE = "OP_DIVIDE";
const OP_DIVIDE_EQUAL = "OP_DIVIDE_EQUAL";
const OP_MOD = "OP_MOD";
const OP_MOD_EQUAL = "OP_MOD_EQUAL";
const OP_POW = "OP_POW";
const OP_POW_EQUAL = "OP_POW_EQUAL";
// 逻辑运算相关
const OP_OR = "OP_OR";
const OP_AND = "OP_AND";

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

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

View File

@ -11,5 +11,7 @@ namespace JerryYan\DSL\Token;
class TokenLogicEqual extends TokenInterface
{
public static $alias = [
'等于'
];
}

View File

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

View File

@ -12,6 +12,6 @@ namespace JerryYan\DSL\Token;
class TokenLogicOr extends TokenInterface
{
public static $alias = [
'或者'
'或', '或者'
];
}

View File

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