public void write_c_module(c_module _c_module)
		{
			write_compilation_unit(_c_module);
			if (_c_module.defs == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_c_module.defs.visit(this);
			}
			if (_c_module.used_units == null)
			{
				bw.Write((byte)0);
			}
			else
			{
				bw.Write((byte)1);
				_c_module.used_units.visit(this);
			}
		}
Example #2
0
 public override void visit(c_module _c_module)
 {
     throw new NotImplementedException();
 }
		public void visit(c_module _c_module)
		{
			bw.Write((Int16)161);
			write_c_module(_c_module);
		}
        public override void visit(c_module _c_module)
        {
            //Assembly _as = System.Reflection.Assembly.LoadFrom(get_assembly_path("mscorlib.dll",_c_module.file_name));
            System.Reflection.Assembly _as = System.Reflection.Assembly.LoadFrom(get_assembly_path("mscorlib.dll",_c_module.file_name));
            PascalABCCompiler.NetHelper.NetHelper.init_namespaces(_as);
            //add_standart_types_simple();
            //List<Scope> netScopes = new List<Scope>();
            //PascalABCCompiler.NetHelper.NetScope ns=new PascalABCCompiler.NetHelper.NetScope(unl,_as,tcst);
            if (_c_module.compiler_directives != null)
            foreach (PascalABCCompiler.SyntaxTree.compiler_directive dir in _c_module.compiler_directives)
            {
                if (dir.Name.text == "reference")
                {
                    try
                    {
                		//System.Reflection.Assembly assm = System.Reflection.Assembly.LoadFrom(get_assembly_path(dir.Directive.text,_c_module.file_name));
                    	System.Reflection.Assembly assm = PascalABCCompiler.NetHelper.NetHelper.LoadAssembly(get_assembly_path(dir.Directive.text,_c_module.file_name));
                		PascalABCCompiler.NetHelper.NetHelper.init_namespaces(assm);
                    }
                    catch (Exception e)
                    {
                    	
                    }
                }
            }
            cur_scope = new InterfaceUnitScope(new SymInfo("", SymbolKind.Block,"module"),null);
            doc = new document(_c_module.file_name);
            cur_scope.loc = get_location(_c_module);
            entry_scope = cur_scope;
            
            add_system_unit();
            if (_c_module.used_units != null)
            {
                (cur_scope as InterfaceUnitScope).uses_source_range = get_location(_c_module.used_units);
                foreach (unit_or_namespace s in _c_module.used_units.units)
                {
                    try
                    {
                        string str = "";
                        for (int i = 0; i < s.name.idents.Count; i++)
                        {
                            str += s.name.idents[i].name;
                            NamespaceScope ns_scope = null;
                            if (i == 0)
                            {
                                if (PascalABCCompiler.NetHelper.NetHelper.IsNetNamespace(str))
                                {
                                    ns_scope = new NamespaceScope(str);
                                    cur_scope.AddName(str, ns_scope);
                                    if (s.name.idents.Count == 1) cur_scope.AddUsedUnit(ns_scope);
                                }
                                else
                                {
                                    string unit_name = CodeCompletionController.comp.FindSourceFileName(str);
                                    if (unit_name == null)
                                    {
                                        unit_name = Path.Combine(System.IO.Path.GetDirectoryName(_c_module.file_name), str) + System.IO.Path.GetExtension(_c_module.file_name);
                                        if (!System.IO.File.Exists(unit_name)) unit_name = null;
                                    }
                                    if (unit_name != null)
                                    {
                                        DomConverter dc = CodeCompletionController.comp_modules[unit_name] as DomConverter;
                                        if (dc == null /*|| CodeCompletionController.recomp_files[unit_name] != null*/)
                                        {
                                            dc = new CodeCompletionController().CompileAllIfNeed(unit_name);
                                        }
                                        if (dc.stv != null)
                                        {
                                            cur_scope.AddUsedUnit(dc.stv.entry_scope);
                                            cur_scope.AddName(str, dc.stv.entry_scope);
                                        }
                                    }
                                }
                            }
                            if (i < s.name.idents.Count - 1) str += ".";
                            if (i == s.name.idents.Count - 1 && i > 0) cur_scope.AddUsedUnit(new NamespaceScope(str));
                        }
                        unl.AddElement(new PascalABCCompiler.TreeRealization.using_namespace(str));
                    }
                    catch (Exception e)
                    {

                    }
                }
            }
           
            
			//PascalABCCompiler.TreeRealization.common_type_node ctn = new ;
			if (_c_module.defs != null)
			foreach (declaration decl in _c_module.defs.defs)
            {
				decl.visit(this);
            }
			
        }
		public void read_c_module(c_module _c_module)
		{
			read_compilation_unit(_c_module);
			_c_module.defs = _read_node() as declarations;
			_c_module.used_units = _read_node() as uses_list;
		}
		public void visit(c_module _c_module)
		{
			read_c_module(_c_module);
		}
Example #7
0
 public override void visit(c_module node)
 {
     prepare_node(node.defs, "defs");
 }
Example #8
0
 public override void visit(c_module node)
 {
     //text = "LanguageId:" + node.Language.ToString();
 }