src/EasyFrameWork/RuleEngine/Scripting/Compiler/Tokenizer.cs

(开头部分) 13KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

/* http://www.zkea.net/ 
 * Copyright (c) ZKEASOFT. All rights reserved. 
 * http://www.zkea.net/licenses */

using System;
using System.Collections.Generic;
using System.Text;

namespace Easy.RuleEngine.Scripting.Compiler
{
    public class Tokenizer
    {
        private readonly string _expression;
        private readonly StringBuilder _stringBuilder;
        private int _index;
        private int _startTokenIndex;

        public Tokenizer(string expression)
        {
            _expression = expression;
            _stringBuilder = new StringBuilder();
        }

        public Token NextToken()
        {
            while (true)
            {
                if (Eof())
                    return CreateToken(TokenKind.Eof);

                _startTokenIndex = _index;
                char ch = Character();
                switch (ch)
                {
                    case '(':
                        NextCharacter();
                        return CreateToken(TokenKind.OpenParen);
                    case ')':
                        NextCharacter();
                        return CreateToken(TokenKind.CloseParen);
                    case ',':
                        NextCharacter();
                        return CreateToken(TokenKind.Comma);
                    case '+':
                        NextCharacter();
                        return CreateToken(TokenKind.Plus);
                    case '-':
                        NextCharacter();
                        return CreateToken(TokenKind.Minus);
                    case '*':
                        NextCharacter();
                        return CreateToken(TokenKind.Mul);
                    case '/':
                        NextCharacter();
                        return CreateToken(TokenKind.Div);
                    case '"':
                        return LexStringLiteral();
                    case '\'':
                        return LexSingleQuotedStringLiteral();
                    case '!':
后面还有 405 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。