예제 #1
0
        internal static bool TryGetValueToken(ref string text, out TokenBase token, bool requireReturnValue = true)
        {
            string temp = null;

            token = null;
            foreach (TokenBase type in valueTypeInstanceList)
            {
                temp = text;
                if (type.TryGetToken(ref temp, out token, requireReturnValue))
                {
                    break;
                }
                token = null;
            }
            if (token == null)
            {
                return(false);
            }
            text = temp;

            if (token.ReturnType != typeof(void))
            {
                while (true)
                {
                    temp = temp.TrimStart();
                    bool      cont = false;
                    TokenBase newToken;
                    foreach (TokenBase type in postValueTypeInstanceList)
                    {
                        if (type.TryGetToken(ref temp, out newToken, requireReturnValue))
                        {
                            if (newToken.SetPostTarget(token))
                            {
                                token = newToken;
                                text  = temp;
                                cont  = true;
                                break;
                            }
                        }
                    }
                    if (!cont)
                    {
                        break;
                    }
                }

                if (token is IPostToken)
                {
                    token = new PostTokenChainToken(token);
                }
            }

            return(true);
        }
예제 #2
0
        internal static bool TryGetValueToken(ref string text, out TokenBase token)
        {
            string temp = null;

            token = null;
            foreach (TokenBase type in valueTypeInstanceList)
            {
                temp = text;
                if (type.TryGetToken(ref temp, out token))
                {
                    break;
                }
                token = null;
            }
            if (token == null)
            {
                return(false);
            }
            text = temp;

            while (true)
            {
                bool      cont = false;
                TokenBase newToken;
                foreach (TokenBase type in postValueTypeInstanceList)
                {
                    if (type.TryGetToken(ref temp, out newToken))
                    {
                        newToken.SetPostTarget(token);
                        token = newToken;
                        text  = temp;
                        cont  = true;
                        break;
                    }
                }
                if (!cont)
                {
                    break;
                }
            }

            if (token is IPostToken)
            {
                token = new PostTokenChainToken(token);
            }

            return(true);
        }