diff --git a/src/Token/Factory/DefaultFactory.php b/src/Token/Factory/DefaultFactory.php index adca8c3..63a4a4f 100644 --- a/src/Token/Factory/DefaultFactory.php +++ b/src/Token/Factory/DefaultFactory.php @@ -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, diff --git a/src/Token/Token.php b/src/Token/Token.php index d79ac88..908b618 100644 --- a/src/Token/Token.php +++ b/src/Token/Token.php @@ -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"; diff --git a/src/Token/TokenCurry.php b/src/Token/TokenCurry.php new file mode 100644 index 0000000..3adb767 --- /dev/null +++ b/src/Token/TokenCurry.php @@ -0,0 +1,17 @@ + + * @date 2021/1/22 17:42 + */ + + +namespace JerryYan\DSL\Token; + + +class TokenCurry extends TokenInterface +{ + public static $alias = [ + '与' + ]; +} \ No newline at end of file diff --git a/src/Token/TokenLogicEqual.php b/src/Token/TokenLogicEqual.php index 2994b61..548ca73 100644 --- a/src/Token/TokenLogicEqual.php +++ b/src/Token/TokenLogicEqual.php @@ -12,6 +12,6 @@ namespace JerryYan\DSL\Token; class TokenLogicEqual extends TokenInterface { public static $alias = [ - '等于' + '等于', '相等时', '相等' ]; } \ No newline at end of file diff --git a/src/Token/TokenLogicNotEqual.php b/src/Token/TokenLogicNotEqual.php new file mode 100644 index 0000000..a12b03f --- /dev/null +++ b/src/Token/TokenLogicNotEqual.php @@ -0,0 +1,17 @@ + + * @date 2021/1/22 17:45 + */ + + +namespace JerryYan\DSL\Token; + + +class TokenLogicNotEqual extends TokenInterface +{ + public static $alias = [ + '不等于', '不相等时', '不相等' + ]; +} \ No newline at end of file diff --git a/tests/Tokenizer/TokenizerTest.php b/tests/Tokenizer/TokenizerTest.php index 876205a..8a18a2b 100644 --- a/tests/Tokenizer/TokenizerTest.php +++ b/tests/Tokenizer/TokenizerTest.php @@ -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[] 预期的类型 */ private $textTokenType = [ TokenLogicFake::class, TokenVariable::class, - TokenLogicAnd::class, + TokenCurry::class, TokenVariable::class, + TokenLogicNotEqual::class, TokenLogicOr::class, TokenVariable::class, TokenLogicAnd::class,