CSScriptCompilers.CCSharpParser.IsClasslessCode C# (CSharp) Méthode

IsClasslessCode() private méthode

private IsClasslessCode ( string rawCode ) : bool
rawCode string
Résultat bool
        bool IsClasslessCode(string rawCode)
        {
            if (ProcessIfMarkedAsClassless(rawCode))
                return true;

            //ensure "one statement - one line" rule
            string code = new CSharpParser(rawCode).PureCode.Replace("\n", " ").Replace("\r", " ").Replace(";", ";\n");

            string line;
            StringReader sr = new StringReader(code);

            CodeArea area = CodeArea.unknown;
            while ((line = sr.ReadLine()) != null)
            {
                string clearLine = line.Trim();

                if (clearLine.Length == 0)
                    continue;
                while (true)
                {
                    switch (area)
                    {
                        case CodeArea.unknown:
                            {
                                if (IsUsingDirective(clearLine))
                                {
                                    area = CodeArea.header;
                                    continue;
                                }
                                else if (!IsDeclaration(clearLine))
                                {
                                    area = CodeArea.body;
                                    continue;
                                }
                                else
                                {
                                    area = CodeArea.footer;
                                    continue;
                                }
                            }
                        case CodeArea.header:
                            {
                                if (IsUsingDirective(clearLine))
                                {
                                    header.Append(line);
                                    header.Append(Environment.NewLine);
                                }
                                else
                                {
                                    area = CodeArea.body;
                                    continue;
                                }
                                break;
                            }
                        case CodeArea.body:
                            {
                                if (!IsDeclaration(clearLine))
                                {
                                    body.Append(line);
                                    body.Append(Environment.NewLine);
                                }
                                else
                                {
                                    area = CodeArea.footer;
                                    continue;
                                }
                                break;
                            }
                        case CodeArea.footer:
                            {
                                footer.Append(line);
                                footer.Append(Environment.NewLine);
                                break;
                            }
                    }
                    break;
                }
            }
            if (body.Length != 0)
                return true;
            else
            {
                if (footer.Length == 0)
                    return false;
                else
                {
                    //it is either C# or CC# without body
                    string fotterStr = footer.ToString().TrimStart();
                    if (fotterStr.StartsWith("namespace") && IsToken(fotterStr, 0, "namespace".Length))
                        return false;
                    else
                    {
                        foreach (string classToken in new string[] { "class", "enum", "struct" })
                        {
                            int classStart = -1;
                            while ((classStart = fotterStr.IndexOf(classToken, classStart + 1)) != -1)
                            {
                                if (IsToken(fotterStr, classStart, classToken.Length))
                                {
                                    string decorations = fotterStr.Substring(0, classStart);
                                    if (decorations.IndexOfAny(";{}()".ToCharArray()) != -1)
                                        break;
                                    else
                                        return false;
                                }
                            }
                        }
                        return true;
                    }
                }
            }
        }
        bool IsToken(string text, int start, int length)