CSI.Interpreter.ExecuteLine C# (CSharp) Метод

ExecuteLine() приватный Метод

private ExecuteLine ( string codeStr ) : void
codeStr string
Результат void
        void ExecuteLine(string codeStr)
        {
            // at this point we either have a line to be immediately compiled and evaluated,
            // or a function definition.
            CHash type = CHash.Expression;
            string className = null, assemblyName = null, funName = null;
            Match funMatch = funDef.Match(codeStr);
            if (funMatch.Success)
                type = CHash.Function;
            if (type == CHash.Function)
            {
                funName = funMatch.Groups[1].ToString();
                macro.RemoveMacro(funName);
                className = "Csi" + nextAssembly++;
                assemblyName = className + ".dll";
                codeStr = codeStr.Insert(funMatch.Groups[1].Index, "_");
            }
            codeStr = macro.ProcessLine(codeStr);
            if (codeStr == "")  // may have been a prepro statement!
                return;
            bool wasAssignment;
            codeStr = MassageInput(codeStr, out wasAssignment);
            if (wasAssignment)
                type = CHash.Assignment;
            CompilerResults cr = CompileLine(codeStr.TrimStart(), type, assemblyName, className);
            if (cr != null)
            {
                Assembly ass = cr.CompiledAssembly;
                if (type != CHash.Function)
                    CodeChunk.Instantiate(ass, this);
                else
                {
                    CsiFunctionContext.Instantiate(ass, varTable, className, funName);
                    string prefix = mustDeclare ? "" : "$";
                    macro.AddMacro(funName, prefix + className + "._" + funName, null);
                    AddReference(Path.GetFullPath(assemblyName));
                }
            }
        }