Exemplo n.º 1
0
        private static bool ShouldConcatenate(FSharpTokenInfo token)
        {
            var tokenTag = token.Tag;

            if (tokenTag == InactiveCodeTag)
            {
                return(true);
            }
            if (tokenTag == FSharpTokenTag.LESS || tokenTag == FSharpTokenTag.GREATER)
            {
                return(false);
            }

            var tokenClass = token.CharClass;

            return(tokenClass == FSharpTokenCharKind.String || tokenClass == FSharpTokenCharKind.Operator ||
                   tokenClass == FSharpTokenCharKind.Comment || tokenClass == FSharpTokenCharKind.LineComment);
        }
Exemplo n.º 2
0
        public static TokenNodeType GetTokenType(FSharpTokenInfo token)
        {
            // todo: add this to FCS
            const int PublicTag    = 42;
            const int PriateTag    = 43;
            const int InternalTag  = 44;
            const int NewTag       = 118;
            const int ModuleTag    = 148;
            const int NamespaceTag = 149;
            const int LQuoteTag    = 153;
            const int RQuoteTag    = 154;

            if (token.ColorClass == FSharpTokenColorKind.InactiveCode)
            {
                return(FSharpTokenType.DEAD_CODE);
            }
            if (token.ColorClass == FSharpTokenColorKind.PreprocessorKeyword)
            {
                return(FSharpTokenType.OTHER_KEYWORD);
            }
            var tokenTag = token.Tag;

            switch (token.CharClass)
            {
            case FSharpTokenCharKind.Keyword:
                switch (tokenTag)
                {
                case PublicTag:
                    return(FSharpTokenType.PUBLIC);

                case PriateTag:
                    return(FSharpTokenType.PRIVATE);

                case InternalTag:
                    return(FSharpTokenType.INTERNAL);

                case NewTag:
                    return(FSharpTokenType.NEW);

                case ModuleTag:
                    return(FSharpTokenType.MODULE);

                case NamespaceTag:
                    return(FSharpTokenType.NAMESPACE);

                default:
                    return(FSharpTokenType.OTHER_KEYWORD);
                }

            case FSharpTokenCharKind.Identifier:
                return(FSharpTokenType.IDENTIFIER);

            case FSharpTokenCharKind.String:
                return(FSharpTokenType.STRING);

            case FSharpTokenCharKind.Literal:
                return(FSharpTokenType.LITERAL);

            case FSharpTokenCharKind.Operator:
                if (tokenTag == FSharpTokenTag.GREATER)
                {
                    return(FSharpTokenType.GREATER);
                }
                if (tokenTag == FSharpTokenTag.LESS)
                {
                    return(FSharpTokenType.LESS);
                }
                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 == FSharpTokenTag.LPAREN)
                {
                    return(FSharpTokenType.LPAREN);
                }
                if (tokenTag == FSharpTokenTag.RPAREN)
                {
                    return(FSharpTokenType.RPAREN);
                }
                if (tokenTag == FSharpTokenTag.LBRACE)
                {
                    return(FSharpTokenType.LBRACE);
                }
                if (tokenTag == FSharpTokenTag.RBRACE)
                {
                    return(FSharpTokenType.RBRACE);
                }
                if (tokenTag == FSharpTokenTag.LBRACK)
                {
                    return(FSharpTokenType.LBRACK);
                }
                if (tokenTag == FSharpTokenTag.RBRACK)
                {
                    return(FSharpTokenType.RBRACK);
                }
                if (tokenTag == FSharpTokenTag.DOT)
                {
                    return(FSharpTokenType.DOT);
                }
                if (tokenTag == FSharpTokenTag.GREATER_RBRACK)
                {
                    return(FSharpTokenType.GREATER_RBRACK);
                }
                if (tokenTag == FSharpTokenTag.LBRACK_LESS)
                {
                    return(FSharpTokenType.LBRACK_LESS);
                }
                if (tokenTag == FSharpTokenTag.LBRACK_BAR)
                {
                    return(FSharpTokenType.LBRACK_BAR);
                }
                if (tokenTag == FSharpTokenTag.BAR_RBRACK)
                {
                    return(FSharpTokenType.BAR_RBRACK);
                }

                if (tokenTag == LQuoteTag)
                {
                    return(token.FullMatchedLength == 2
              ? FSharpTokenType.LQUOTE_TYPED
              : FSharpTokenType.LQUOTE);
                }

                if (tokenTag == RQuoteTag)
                {
                    return(token.FullMatchedLength == 2
              ? FSharpTokenType.RQUOTE_TYPED
              : FSharpTokenType.RQUOTE);
                }

                if (tokenTag == FSharpTokenTag.BAR)
                {
                    return(FSharpTokenType.BAR);
                }

                return(FSharpTokenType.TEXT);

            default:
                return(FSharpTokenType.TEXT);
            }
        }
Exemplo n.º 3
0
        public static TokenNodeType GetTokenType(FSharpTokenInfo token)
        {
            // todo: add this to FCS
            if (token.ColorClass == FSharpTokenColorKind.InactiveCode)
            {
                return(FSharpTokenType.DEAD_CODE);
            }
            if (token.ColorClass == FSharpTokenColorKind.PreprocessorKeyword)
            {
                return(FSharpTokenType.OTHER_KEYWORD);
            }
            var tokenTag = token.Tag;

            if (TokenTypeByTokenTag.TryGetValue(tokenTag, out var tokenType))
            {
                return(tokenType);
            }

            switch (token.CharClass)
            {
            case FSharpTokenCharKind.Keyword:
                return(FSharpTokenType.OTHER_KEYWORD);

            case FSharpTokenCharKind.Identifier:
                return(FSharpTokenType.IDENTIFIER);

            case FSharpTokenCharKind.String:
                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);
                }

                if (tokenTag == RQuoteTag)
                {
                    return(token.FullMatchedLength == 2
              ? FSharpTokenType.RQUOTE_TYPED
              : FSharpTokenType.RQUOTE);
                }

                return(FSharpTokenType.TEXT);

            default:
                return(FSharpTokenType.TEXT);
            }
        }