コード例 #1
0
        private void DeclareBuiltinVariables()
        {
            if (Node == null || Module.ModuleType != ModuleType.User || this is IGlobalScope)
            {
                return;
            }

            var strType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Str);
            var objType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Object);

            VariableCollection.DeclareVariable("__name__", strType, VariableSource.Builtin);

            if (Node is FunctionDefinition)
            {
                var dictType  = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Dict);
                var tupleType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Tuple);

                VariableCollection.DeclareVariable("__closure__", tupleType, VariableSource.Builtin);
                VariableCollection.DeclareVariable("__code__", objType, VariableSource.Builtin);
                VariableCollection.DeclareVariable("__defaults__", tupleType, VariableSource.Builtin);
                VariableCollection.DeclareVariable("__dict__", dictType, VariableSource.Builtin);
                VariableCollection.DeclareVariable("__doc__", strType, VariableSource.Builtin);
                VariableCollection.DeclareVariable("__func__", objType, VariableSource.Builtin);
                VariableCollection.DeclareVariable("__globals__", dictType, VariableSource.Builtin);
            }
            else if (Node is ClassDefinition)
            {
                VariableCollection.DeclareVariable("__self__", objType, VariableSource.Builtin);
            }
        }
コード例 #2
0
        private void DeclareBuiltinVariables()
        {
            if (Module.ModuleType != ModuleType.User)
            {
                return;
            }

            var boolType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Bool);
            var strType  = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Str);
            var listType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.List);
            var dictType = Module.Interpreter.GetBuiltinType(BuiltinTypeId.Dict);

            VariableCollection.DeclareVariable("__debug__", boolType, VariableSource.Builtin, LocationInfo.Empty);
            VariableCollection.DeclareVariable("__doc__", strType, VariableSource.Builtin, LocationInfo.Empty);
            VariableCollection.DeclareVariable("__file__", strType, VariableSource.Builtin, LocationInfo.Empty);
            VariableCollection.DeclareVariable("__name__", strType, VariableSource.Builtin, LocationInfo.Empty);
            VariableCollection.DeclareVariable("__package__", strType, VariableSource.Builtin, LocationInfo.Empty);
            VariableCollection.DeclareVariable("__path__", listType, VariableSource.Builtin, LocationInfo.Empty);
            VariableCollection.DeclareVariable("__dict__", dictType, VariableSource.Builtin, LocationInfo.Empty);
        }
コード例 #3
0
 public void DeclareVariable(string name, IMember value, VariableSource source, Location location = default)
 => VariableCollection.DeclareVariable(name, value, source, location);
コード例 #4
0
 internal void ReplaceVariable(IVariable v)
 {
     VariableCollection.RemoveVariable(v.Name);
     VariableCollection.DeclareVariable(v.Name, v.Value, v.Source, v.Location);
 }