コード例 #1
0
        public override MultilineStatement Interprete(string src)
        {
            var    returns   = new TryCatchStmt();
            string trysrc    = "";
            string catchsrc  = "";
            string finalysrc = "";
            var    state     = TryCatchState.Try;

            for (int index = 0;
                 index < src.Split(new[] { '\n', ';' }, StringSplitOptions.RemoveEmptyEntries).Length;
                 index++)
            {
                string i = src.Split(new[] { '\n', ';' }, StringSplitOptions.RemoveEmptyEntries)[index];

                if (Parser.Grammar.GetPattern("catch").IsValid(i))
                {
                    returns.catchheader = i;
                    state = TryCatchState.Catch;
                }
                if (Parser.Grammar.GetPattern("finally").IsValid(i))
                {
                    state = TryCatchState.Finally;
                }

                if (state == TryCatchState.Try)
                {
                    if (index != 0)
                    {
                        trysrc += i + ";\n";
                    }
                }
                if (state == TryCatchState.Catch)
                {
                    catchsrc += i + ";\n";
                }
                if (state == TryCatchState.Finally)
                {
                    finalysrc += i + ";\n";
                }
            }
            returns.TryNodes     = Parser.ParseCodeBlock(trysrc.TrimEnd('\n'), "").Nodes;
            returns.CatchNodes   = Parser.ParseCodeBlock(catchsrc, "").Nodes;
            returns.FinallyNodes = Parser.ParseCodeBlock(finalysrc, "").Nodes;
            return(returns);
        }
コード例 #2
0
ファイル: TryCatchStmt.cs プロジェクト: Myvar/Eclang
        public override MultilineStatement Interprete(string src)
        {
            var returns = new TryCatchStmt();
            string trysrc = "";
            string catchsrc = "";
            string finalysrc = "";
            var state = TryCatchState.Try;
            for (int index = 0;
                index < src.Split(new[] { '\n', ';' }, StringSplitOptions.RemoveEmptyEntries).Length;
                index++)
            {
                string i = src.Split(new[] { '\n', ';' }, StringSplitOptions.RemoveEmptyEntries)[index];

                if (Parser.Grammar.GetPattern("catch").IsValid(i))
                {
                    returns.catchheader = i;
                    state = TryCatchState.Catch;
                }
                if (Parser.Grammar.GetPattern("finally").IsValid(i))
                {
                    state = TryCatchState.Finally;
                }

                if (state == TryCatchState.Try)
                {
                    if (index != 0)
                    {
                        trysrc += i + ";\n";
                    }
                }
                if (state == TryCatchState.Catch)
                {
                    catchsrc += i + ";\n";
                }
                if (state == TryCatchState.Finally)
                {
                    finalysrc += i + ";\n";
                }
            }
            returns.TryNodes = Parser.ParseCodeBlock(trysrc.TrimEnd('\n'), "").Nodes;
            returns.CatchNodes = Parser.ParseCodeBlock(catchsrc, "").Nodes;
            returns.FinallyNodes = Parser.ParseCodeBlock(finalysrc, "").Nodes;
            return returns;
        }