Пример #1
0
        private TokenType GetMode(TextParserMode mode, TokenType isKeyword)
        {
            switch (mode)
            {
            case TextParserMode.Literal:
                return(TokenType.Literal);

            case TextParserMode.ScriptPart:
                return(isKeyword);

            case TextParserMode.MultiLineComment:
                return(TokenType.Comment);

            default:
                return(TokenType.None);
            }
        }
Пример #2
0
        private bool TransModeAndAction(TextParserMode toMode, TokenSpilitHandeler action, StringBuilder word, int tokenLength, bool TranAfterAction, ref int index, int wordPos)
        {
            TokenSpilitEventArgs e = new TokenSpilitEventArgs();

            if (word.Length > 0)
            {
                e.index  = wordPos;
                e.length = word.Length;
                e.type   = GetMode(this.mode, this.KeyWordType);
                action(e);
                word.Clear();
                if (e.breaked)
                {
                    return(true);
                }
            }

            if (TranAfterAction == false)
            {
                this.mode = toMode;
            }

            e.index  = index;
            e.length = tokenLength;
            e.type   = GetMode(this.mode, TokenType.None);
            action(e);
            if (e.breaked)
            {
                return(true);
            }

            if (TranAfterAction)
            {
                this.mode = toMode;
            }

            index += tokenLength;

            return(false);
        }
Пример #3
0
 /// <summary>
 /// 状態をリセットする
 /// </summary>
 public void Reset()
 {
     this.mode        = TextParserMode.TextPart;
     this.KeyWordType = TokenType.None;
     this.word.Clear();
 }