예제 #1
0
 public NamespaceFactory(ESObjectSpace objectSpace, NamespaceObject baseEnvironment, ESSymbol name, IDictionary <String, List <ESCompilationError> > compilationErrors)
 {
     this.objectSpace       = objectSpace;
     this.baseEnvironment   = baseEnvironment;
     this.name              = name;
     this.compilationErrors = compilationErrors;
 }
예제 #2
0
        public static bool load(ESObjectSpace objectSpace, NamespaceObject baseEnvironment, DirectoryInfo baseDirectory, bool beVerbose, bool recurseIntoNestedNamespaces, out List <NamespaceObject> rootNamespaces)
        {
            var libraryLoader = new ESLibraryLoader(objectSpace, baseEnvironment, baseDirectory, recurseIntoNestedNamespaces);

            libraryLoader.IsVerbose = beVerbose;
            return(libraryLoader.load(out rootNamespaces));
        }
예제 #3
0
 public ESScriptCode(SourceUnit sourceUnit, ESObjectSpace objectSpace, ESCompilerOptions esCompilerOptions, ErrorSink errorSink) : base(sourceUnit)
 {
     this.sourceUnit        = sourceUnit;
     this.objectSpace       = objectSpace;
     this.esCompilerOptions = esCompilerOptions;
     this.errorSink         = errorSink;
     bindingNamespace       = esCompilerOptions.getEnvironment(objectSpace);
     if (bindingNamespace == null)
     {
         bindingNamespace = objectSpace.SmalltalkNamespace;
     }
 }
예제 #4
0
        public virtual bool evaluate(ScriptType rootParseNodeType, NamespaceObject environment, Object selfValue, Object[] arguments, out Object value)
        {
            ESBlock compiledBlock;

            if (compile(rootParseNodeType, environment, selfValue, rootParseNodeType == ScriptType.SelfExpression ? parametersFor(arguments) : null, out compiledBlock))
            {
                value = arguments == null || arguments.Length < 1 ? compiledBlock.value0() : compiledBlock.valueWithArguments(arguments);
                return(true);
            }

            value = null;
            return(false);
        }
예제 #5
0
        public virtual bool compile(ScriptType rootParseNodeType, NamespaceObject environment, Object selfValue, List <ParameterExpression> rootParameters, out Expression <FuncNs.Func <Object> > lambda)
        {
            Expression rootExpression;

            if (compile(rootParseNodeType, environment, selfValue, rootParameters, out rootExpression))
            {
                lambda = Expression.Lambda <FuncNs.Func <Object> >(rootExpression, false, new ParameterExpression[0]);
                return(true);
            }

            lambda = null;
            return(false);
        }
예제 #6
0
 protected virtual bool evaluateAsSelfExpression(NamespaceObject environment, Object selfValue, FileInfo file, out Object value)
 {
     objectSpace.evaluateAsSelfExpression(
         file,
         environment,
         selfValue,
         (errorDescription, span, code, severity) => {
         var error = new ESCompilationError(file, environment, errorDescription, span, code, severity);
         error.addTo(compilationErrors);
     },
         out value);
     return(true);
 }
예제 #7
0
 public ESCompilationError(
     FileInfo sourceFile,
     NamespaceObject environment,
     String errorDescription,
     SourceSpan errorSpan,
     int errorCode,
     Severity severity)
 {
     this.sourceFile       = sourceFile;
     this.environment      = environment;
     this.errorDescription = errorDescription;
     this.errorSpan        = errorSpan;
     this.errorCode        = errorCode;
     this.severity         = severity;
 }
예제 #8
0
        public NamespaceResidentVariableDeclaration declareNamespaceVariable(NamespaceObject environment, ESSymbol name, Functor1 <NamespaceResidentVariableDeclaration, String> collisionAction)
        {
            if (namespaceResidentBindings == null)
            {
                namespaceResidentBindings = new Dictionary <String, NamespaceResidentVariableDeclaration>();
            }
            else if (namespaceResidentBindings.ContainsKey(name))
            {
                return(collisionAction(name));
            }
            var declaration = new NamespaceResidentVariableDeclaration(environment, this, name);

            namespaceResidentBindings[name] = declaration;
            return(declaration);
        }
예제 #9
0
        public NamedVariableBinder(DynamicBindingGuru dynamicBindingGuru, ESSymbol name, NamespaceObject environment)
        {
            this.dynamicBindingGuru = dynamicBindingGuru;
            objectSpace             = dynamicBindingGuru.ObjectSpace;
            this.name        = name;
            this.environment = environment;

            if (name != null)
            {
                nameString = name.PrimitiveValue;
            }
            addToUndeclared =
                () =>
            { var bindingRef = objectSpace.newBindingReference(NameString, new DirectBindingHandle((Object)null));
              objectSpace.UndeclaredNamespace.add(bindingRef);
              return(bindingRef); };
        }
예제 #10
0
        public virtual bool compile(ScriptType rootParseNodeType, NamespaceObject environment, Object selfValue, List <ParameterExpression> rootParameters, out Expression expression)
        {
            BlockLiteralNode blockLiteralNode;

            if (compile(rootParseNodeType, selfValue, rootParameters, out blockLiteralNode))
            {
                expression = blockLiteralNode.asCLRExpression(environment, null);
                var undeclaredVariables = blockLiteralNode.UndeclaredVariables;
                if (undeclaredVariables != null && undeclaredVariables.Count > 0)
                {
                    handleUndeclaredVariableReferences(undeclaredVariables, SourceSpan.None);
                }
                return(ErrorCount < 1);
            }

            expression = null;
            return(false);
        }
예제 #11
0
        public virtual bool compile(ScriptType rootParseNodeType, NamespaceObject environment, Object selfValue, List <ParameterExpression> rootParameters, out ESBlock block)
        {
            Expression <FuncNs.Func <Object> > lambda;

            if (compile(rootParseNodeType, environment, selfValue, rootParameters, out lambda))
            {
                var function = lambda.Compile();
                if (function == null)
                {
                    block = null;
                    return(false);
                }
                block = (ESBlock)function();
                return(true);
            }

            block = null;
            return(false);
        }
예제 #12
0
        protected void evaluatScriptArguments(ESObjectSpace objectSpace, NamespaceObject environment)
        {
            var argList = new List <Object>();

            foreach (var argSpec in scriptArguments)
            {
                try {
                    Object   value;
                    FileInfo scriptPath;
                    if (argSpec.SpecifiesPathname)
                    {
                        if (objectSpace.pathForScript(argSpec.Value, out scriptPath))
                        {
                            if (objectSpace.evaluate(scriptPath, environment, null, null, out value))
                            {
                                argList.Add(value);
                            }
                            else
                            {
                                errors.Add("Syntax error in script used as argument, pathname = " + argSpec.Value);
                            }
                        }
                        else
                        {
                            errors.Add("Script path (used as argument to base script) not found: " + argSpec.Value);
                        }
                    }
                    else if (objectSpace.evaluate(new StringReader(argSpec.Value), environment, null, null, out value))
                    {
                        argList.Add(value);
                    }
                    else
                    {
                        errors.Add("Syntax error in argument: " + argSpec.Value);
                    }
                } catch (Exception ex) {
                    errors.Add("Error in argument evaluation: " + ex.ToString());
                }
            }
            scriptArgs = argList.ToArray();
        }
예제 #13
0
            public SetVariableValueBinder canonicalBinderFor(ESSymbol name, NamespaceObject environment)
            {
                if (environment == null)
                {
                    environment = defaultNamespace;
                }
                Dictionary <ESSymbol, SetVariableValueBinder> nameRegistry;
                SetVariableValueBinder binder;

                if (!registry.TryGetValue(environment, out nameRegistry))
                {
                    nameRegistry       = new Dictionary <ESSymbol, SetVariableValueBinder>();
                    binder             = new SetVariableValueBinder(DynamicBindingGuru, name, environment);
                    nameRegistry[name] = binder;
                    return(binder);
                }
                if (!nameRegistry.TryGetValue(name, out binder))
                {
                    binder             = new SetVariableValueBinder(DynamicBindingGuru, name, environment);
                    nameRegistry[name] = binder;
                }
                return(binder);
            }
예제 #14
0
 public virtual bool compileSelfExpression(NamespaceObject environment, Object selfValue, List <ParameterExpression> rootParameters, out ESBlock block)
 {
     return(compile(ScriptType.SelfExpression, environment, selfValue, rootParameters, out block));
 }
예제 #15
0
 public virtual bool compile(NamespaceObject environment, Object selfValue, out ESBlock block)
 {
     return(compile(ScriptType.BlockDeclaration, environment, selfValue, null, out block));
 }
예제 #16
0
 public ESLibraryLoader(ESObjectSpace objectSpace)
 {
     this.objectSpace = objectSpace;
     baseEnvironment  = objectSpace.RootNamespace;
 }
예제 #17
0
 public virtual bool evaluateSelfExpression(NamespaceObject environment, Object selfValue, Object[] arguments, out Object value)
 {
     return(evaluate(ScriptType.SelfExpression, environment, selfValue, arguments, out value));
 }
예제 #18
0
 public virtual bool evaluate(NamespaceObject environment, Object selfValue, Object[] arguments, out Object value)
 {
     return(evaluate(ScriptType.BlockDeclaration, environment, selfValue, arguments, out value));
 }
예제 #19
0
 public virtual bool evaluate(NamespaceObject environment, Object[] arguments, out Object value)
 {
     return(evaluate(environment, null, arguments, out value));
 }
예제 #20
0
 public NamespaceResidentVariableDeclaration(NamespaceObject environment, NameBindingScope scope, ESSymbol name) : base(scope, name)
 {
     getVariableCallSite = Context.getVariableValueCallSiteConstantFor(environment, name);
     setVariableCallSite = Context.setVariableValueCallSiteConstantFor(environment, name);
 }
예제 #21
0
 protected BehavioralObjectFactory(ESObjectSpace objectSpace, NamespaceObject baseEnvironment, ESSymbol name, IDictionary <String, List <ESCompilationError> > compilationErrors) : base(objectSpace, baseEnvironment, name, compilationErrors)
 {
 }
예제 #22
0
        protected virtual bool loadNamespace(NamespaceObject baseEnvironment, DirectoryInfo baseDirectory, out NamespaceObject loadedNamespace)
        {
            loadedNamespace = null;
            if (baseDirectory == null || !baseDirectory.Exists)
            {
                Console.WriteLine("Namespace directory '" + baseDirectory.FullName + "' is not accessible.");
                return(false);
            }
            var    name = baseDirectory.Name;
            String namePrefix;
            int    genericArity;

            if (!TypeName.parseUnqualifiedName(name, out namePrefix, out genericArity, (prefix, errorDescription) => {}))
            {
                return(true);
            }
            if (namePrefix.Length != name.Length)
            {
                var extension = baseDirectory.Extension;
                if (extension.Length > 0)
                {
                    return(true);
                }
            }
            if (genericArity > 0)
            {
                name = namePrefix + "`" + genericArity.ToString();
            }
            FileSystemInfo[] files = baseDirectory.GetFileSystemInfos();
            FileSystemInfo   namespaceConfigurationFile = null;
            FileSystemInfo   classConfigurationFile     = null;
            FileSystemInfo   metaclassConfigurationFile = null;
            FileSystemInfo   initializerFile            = null;
            FileSystemInfo   instanceMethodsFile        = null;
            FileSystemInfo   classMethodsFile           = null;
            var              variables        = new List <FileSystemInfo>();
            var              constants        = new List <FileSystemInfo>();
            var              nestedNamespaces = recurseIntoNestedNamespaces ? new List <DirectoryInfo>() : null;
            DeclarationType  type             = DeclarationType.Namespace;
            NamespaceFactory namespaceFactory = null;
            TraitFactory     traitFactory;
            ClassFactory     behaviorFactory;

            var renameCount = 0;

            foreach (var fileEntry in files)
            {
                var fileName = fileEntry.Name.ToLower();
                if ((fileEntry.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
                {
                    continue;
                }
                else
                {
                    var      sourceFile = (FileInfo)fileEntry;
                    String   targetPath;
                    FileInfo targetFile;
                    switch (fileName)
                    {
                    case "namespace.configure":
                    case "configure.namespace":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "namespace.def");
                        targetFile = new FileInfo(targetPath);
                        if (!targetFile.Exists)
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    case "trait.configure":
                    case "configure.trait":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "trait.def");
                        targetFile = new FileInfo(targetPath);
                        if (targetFile.Exists)
                        {
                            Console.WriteLine("Deprecated/retired file type; not renamed due to name conflict: " + sourceFile.FullName);
                        }
                        else
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    case "classTrait.configure":
                    case "configure.classTrait":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "classTrait.def");
                        targetFile = new FileInfo(targetPath);
                        if (targetFile.Exists)
                        {
                            Console.WriteLine("Deprecated/retired file type; not renamed due to name conflict: " + sourceFile.FullName);
                        }
                        else
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    case "class.configure":
                    case "configure.class":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "class.def");
                        targetFile = new FileInfo(targetPath);
                        if (targetFile.Exists)
                        {
                            Console.WriteLine("Deprecated/retired file type; not renamed due to name conflict: " + sourceFile.FullName);
                        }
                        else
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    case "metaclass.configure":
                    case "configure.metaclass":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "metaclass.def");
                        targetFile = new FileInfo(targetPath);
                        if (targetFile.Exists)
                        {
                            Console.WriteLine("Deprecated/retired file type; not renamed due to name conflict: " + sourceFile.FullName);
                        }
                        else
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    case "instance.methods":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "methods.instance");
                        targetFile = new FileInfo(targetPath);
                        if (targetFile.Exists)
                        {
                            Console.WriteLine("Deprecated/retired file type; not renamed due to name conflict: " + sourceFile.FullName);
                        }
                        else
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    case "class.methods":
                        targetPath = Path.Combine(sourceFile.Directory.FullName, "methods.class");
                        targetFile = new FileInfo(targetPath);
                        if (targetFile.Exists)
                        {
                            Console.WriteLine("Deprecated/retired file type; not renamed due to name conflict: " + sourceFile.FullName);
                        }
                        else
                        {
                            sourceFile.MoveTo(targetPath);
                            renameCount++;
                        }
                        break;

                    default:
                        break;
                    }
                }
            }

            if (renameCount > 0)
            {
                files = baseDirectory.GetFileSystemInfos();
            }

            foreach (var file in files)
            {
                var fileName = file.Name.ToLower();
                if ((file.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
                {
                    if (recurseIntoNestedNamespaces)
                    {
                        nestedNamespaces.Add((DirectoryInfo)file);
                    }
                }
                else
                {
                    switch (fileName)
                    {
                    case "namespace.def":
                        namespaceConfigurationFile = file;
                        break;

                    case "trait.def":
                        if (type == DeclarationType.Class)
                        {
                            Console.WriteLine(baseDirectory.FullName + " cannot be declared to be both a class and a trait.");
                            return(false);
                        }
                        type = DeclarationType.Trait;
                        classConfigurationFile = file;
                        break;

                    case "classTrait.def":
                        if (type == DeclarationType.Class)
                        {
                            Console.WriteLine(baseDirectory.FullName + " cannot be declared to be both a class and a trait.");
                            return(false);
                        }
                        type = DeclarationType.Trait;
                        metaclassConfigurationFile = file;
                        break;

                    case "class.def":
                        if (type == DeclarationType.Trait)
                        {
                            Console.WriteLine(baseDirectory.FullName + " cannot be declared to be both a class and a trait.");
                            return(false);
                        }
                        type = DeclarationType.Class;
                        classConfigurationFile = file;
                        break;

                    case "metaclass.def":
                        if (type == DeclarationType.Trait)
                        {
                            Console.WriteLine(baseDirectory.FullName + " cannot be declared to be both a class and a trait.");
                            return(false);
                        }
                        type = DeclarationType.Class;
                        metaclassConfigurationFile = file;
                        break;

                    case "initializer":
                        initializerFile = file;
                        break;

                    case "methods.instance":
                        if (type == DeclarationType.Namespace)
                        {
                            type = DeclarationType.TraitOrClass;
                        }
                        instanceMethodsFile = file;
                        break;

                    case "methods.class":
                        if (type == DeclarationType.Namespace)
                        {
                            type = DeclarationType.TraitOrClass;
                        }
                        classMethodsFile = file;
                        break;

                    case "class.initialize":
                    case "initialize.class":
                    case "metaclass.initialize":
                    case "initialize.metaclass":
                        Console.WriteLine("Deprecated/retired file type; not processed: " + file.FullName);
                        break;

                    default:
                        var extension = file.Extension;
                        switch (extension)
                        {
                        case ".variable":
                            variables.Add(file);
                            break;

                        case ".constant":
                            constants.Add(file);
                            break;
                        }
                        break;
                    }
                }
            }

            if (type == DeclarationType.TraitOrClass)
            {
                type = DeclarationType.Class;
            }

            bool success    = true;
            var  nameSymbol = objectSpace.SymbolRegistry.symbolFor(name);

            switch (type)
            {
            case DeclarationType.Trait:
                namespaceFactory = traitFactory = new TraitFactory(objectSpace, baseEnvironment, nameSymbol, compilationErrors);
                traitFactories.Add(traitFactory);
                traitFactory.ClassConfigurationFile     = (FileInfo)classConfigurationFile;
                traitFactory.MetaclassConfigurationFile = (FileInfo)metaclassConfigurationFile;
                traitFactory.InstanceMethodsFile        = (FileInfo)instanceMethodsFile;
                traitFactory.ClassMethodsFile           = (FileInfo)classMethodsFile;
                break;

            case DeclarationType.Class:
                namespaceFactory = behaviorFactory = new ClassFactory(objectSpace, baseEnvironment, nameSymbol, compilationErrors);
                classFactories.Add(behaviorFactory);
                behaviorFactory.ClassConfigurationFile     = (FileInfo)classConfigurationFile;
                behaviorFactory.MetaclassConfigurationFile = (FileInfo)metaclassConfigurationFile;
                behaviorFactory.InstanceMethodsFile        = (FileInfo)instanceMethodsFile;
                behaviorFactory.ClassMethodsFile           = (FileInfo)classMethodsFile;
                break;

            default:
            case DeclarationType.Namespace:
                namespaceFactory = new NamespaceFactory(objectSpace, baseEnvironment, nameSymbol, compilationErrors);
                namespaceFactories.Add(namespaceFactory);
                break;
            }
            namespaceFactory.InitializerFile = (FileInfo)initializerFile;
            namespaceFactory.IsVerbose       = IsVerbose;
            if (!namespaceFactory.declareNamespace())
            {
                return(false);
            }
            loadedNamespace = namespaceFactory.ThisNamespace;
            namespaceFactory.NamespaceConfigurationFile = (FileInfo)namespaceConfigurationFile;
            foreach (var constFile in constants)
            {
                namespaceFactory.addConstantInitializerFile((FileInfo)constFile);
            }
            foreach (var varFile in variables)
            {
                namespaceFactory.addVariableInitializerFile((FileInfo)varFile);
            }
            if (recurseIntoNestedNamespaces)
            {
                NamespaceObject childNamespace;
                foreach (var nsFile in nestedNamespaces)
                {
                    if (!loadNamespace(loadedNamespace, nsFile, out childNamespace))
                    {
                        return(false);
                    }
                }
            }
            return(success);
        }
예제 #23
0
 protected Registry(DynamicBindingGuru dynamicBindingGuru) : base(dynamicBindingGuru)
 {
     defaultNamespace = objectSpace.SmalltalkNamespace;
 }
예제 #24
0
 public ClassFactory(ESObjectSpace objectSpace, NamespaceObject baseEnvironment, ESSymbol name, IDictionary <String, List <ESCompilationError> > compilationErrors) : base(objectSpace, baseEnvironment, name, compilationErrors)
 {
 }
예제 #25
0
        protected override Object runScript(ScriptEngine engine, ESCompilerOptions compilationOptions, NamespaceObject environment)
        {
            var script = engine.CreateScriptSourceFromString(text);

            return(script.Execute(compilationOptions, scriptArgs, out durationToRun));
        }
예제 #26
0
 protected abstract Object runScript(ScriptEngine engine, ESCompilerOptions compilationOptions, NamespaceObject environment);
예제 #27
0
 protected SetVariableValueBinder(DynamicBindingGuru dynamicBindingGuru, ESSymbol name, NamespaceObject environment) : base(dynamicBindingGuru, name, environment)
 {
 }
예제 #28
0
        public HashSet <ESSymbol> bindNonLocalVariablesToEnvironment(NamespaceObject environment, BehavioralObject methodHomeClass)
        {
            if (nonLocalBindings == null)
            {
                if (outerScope != null)
                {
                    return(outerScope.bindNonLocalVariablesToEnvironment(environment, methodHomeClass));
                }
                return(null);
            }
            String nameContext;

            instanceVariableBindings  = null;
            namespaceResidentBindings = null;
            HashSet <ESSymbol> instVarNames = null;

            if (environment == null)
            {
                if (methodHomeClass != null)
                {
                    environment = methodHomeClass;
                }
            }
            if (methodHomeClass == null)
            {
                methodHomeClass = environment as BehavioralObject;
            }

            var envName    = environment == null ? "??" : environment.QualifiedName;
            var methodName = Context.MethodSelector;

            if (methodName != null)
            {
                if (methodHomeClass == null)
                {
                    nameContext = envName + " ## " + methodName.PrimitiveValue + " => ";
                }
                else
                {
                    nameContext = methodHomeClass.QualifiedName + ">>" + methodName.PrimitiveValue + " => ";
                    methodHomeClass.allInstVarNamesAndIndexesDo((instVarName, index) => {
                        if (instVarNames == null)
                        {
                            instVarNames = new HashSet <ESSymbol>();
                        }
                        instVarNames.Add(instVarName);
                        NonLocalVariableDeclaration nonLocalVar;
                        if (nonLocalBindings.TryGetValue(instVarName, out nonLocalVar))
                        {
                            var instanceVar   = declareInstanceVariable(instVarName.PrimitiveValue, null);
                            instanceVar.Index = (int)index;
                            nonLocalVar.occurrencesDo(occurrence => occurrence.Declaration = instanceVar);
                        }
                    });
                }
            }
            else
            {
                nameContext = envName + " => ";
            }
            HashSet <ESSymbol> undeclared = null;

            foreach (var kvp in nonLocalBindings)
            {
                var nonLocalVar  = kvp.Value;
                var nonLocalName = nonLocalVar.NameSymbol;
                if (instVarNames == null || !instVarNames.Contains(nonLocalName))
                {
                    var ns            = environment ?? Context.ObjectSpace.UndeclaredNamespace;
                    var nsResidentVar = declareNamespaceVariable(ns, nonLocalName, null);
                    nonLocalVar.occurrencesDo(occurrence => occurrence.Declaration = nsResidentVar);
                    if (environment == null && methodHomeClass == null)
                    {
                        continue;
                    }

                    /*
                     * if (nonLocalName.PrimitiveValue == "symbolTag")
                     *      Console.WriteLine();
                     */
                    var binding = nonLocalName.bindingInNamespaceIfAbsent(ns, AccessPrivilegeLevel.Local, ImportTransitivity.Transitive, null);
                    if (binding == null)
                    {
                        if (undeclared == null)
                        {
                            undeclared = new HashSet <ESSymbol>();
                        }
                        var nameInContext = Context.symbolFor(nameContext + nonLocalName);
                        undeclared.Add(nameInContext);
                    }
                }
            }
            if (environment == null && methodHomeClass == null)
            {
                return(null);
            }
            return(undeclared);
        }
예제 #29
0
        protected override Object runScript(ScriptEngine engine, ESCompilerOptions compilationOptions, NamespaceObject environment)
        {
            var script = engine.CreateScriptSourceFromPathSuffix(pathnameSuffix);

            if (script == null)
            {
                var message = "Script not found: " + pathnameSuffix;
                Console.WriteLine(message);
                return(message);
            }
            else
            {
                try {
                    return(script.Execute(compilationOptions, scriptArgs, out durationToRun));
                } catch (InvalidFunctionCallException ex) {
                    var message = "Script argument mismatch: " + pathnameSuffix;
                    Console.WriteLine(message);
                    return(message);
                }
            }
        }
예제 #30
0
 public ESLibraryLoader(ESObjectSpace objectSpace, NamespaceObject baseEnvironment, DirectoryInfo baseDirectory, bool recurseIntoNestedNamespaces) : this(objectSpace, baseDirectory, recurseIntoNestedNamespaces)
 {
     this.baseEnvironment = baseEnvironment ?? objectSpace.RootNamespace;
 }