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); } }
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); }
/// <summary> /// 状態をリセットする /// </summary> public void Reset() { this.mode = TextParserMode.TextPart; this.KeyWordType = TokenType.None; this.word.Clear(); }