private TokenNodeType GetTokenType(FSharpToken token) { // todo: next or current state? var state = FSharpLineTokenizer.ColorStateOfLexState(myNextTokenAndState.Item2); if (state == FSharpTokenizerColorState.VerbatimString) { return(FSharpTokenType.VERBATIM_STRING); } if (state == FSharpTokenizerColorState.TripleQuoteString) { return(FSharpTokenType.TRIPLE_QUOTE_STRING); } return(token.GetTokenType()); }
public static TokenNodeType GetTokenType(this FSharpToken token) { var tokenTag = token.Token.Tag; if (ourTokenTypesByTags.TryGetValue(tokenTag, out var tokenType)) { return(tokenType); } if (tokenTag == Parser.token.Tags.PLUS_MINUS_OP) { var plusToken = (Parser.token.PLUS_MINUS_OP)token.Token; if (plusToken.Item == "+") { return(FSharpTokenType.PLUS); } } var tokenInfo = token.TokenInfo; if (tokenInfo.Item1 == FSharpTokenColorKind.PreprocessorKeyword) { return(FSharpTokenType.OTHER_KEYWORD); } switch (tokenInfo.Item2) { case FSharpTokenCharKind.Keyword: return(FSharpTokenType.OTHER_KEYWORD); case FSharpTokenCharKind.Identifier: return(FSharpTokenType.IDENTIFIER); case FSharpTokenCharKind.String: if (tokenTag == Parser.token.Tags.CHAR) { return(FSharpTokenType.CHAR); } return(FSharpTokenType.STRING); case FSharpTokenCharKind.Literal: return(FSharpTokenType.LITERAL); case FSharpTokenCharKind.Operator: return(FSharpTokenType.OPERATOR); case FSharpTokenCharKind.LineComment: return(FSharpTokenType.LINE_COMMENT); case FSharpTokenCharKind.Comment: return(FSharpTokenType.COMMENT); case FSharpTokenCharKind.WhiteSpace: return(FSharpTokenType.WHITESPACE); case FSharpTokenCharKind.Delimiter: if (tokenTag == LQuoteTag) { return(token.FullMatchedLength == 2 ? FSharpTokenType.LQUOTE_TYPED : FSharpTokenType.LQUOTE_UNTYPED); } if (tokenTag == RQuoteTag) { return(token.FullMatchedLength == 2 ? FSharpTokenType.RQUOTE_TYPED : FSharpTokenType.RQUOTE_UNTYPED); } return(FSharpTokenType.TEXT); default: return(FSharpTokenType.TEXT); } }