public void SaveToDat(string path)
        {
            DatBuilder datBuilder = new DatBuilder(this);
            DatFile    datFile    = datBuilder.GetDatFile();

            datFile.Save(path);
        }
        public void Generate(AnalyzeResult options)
        {
            SymbolUpdatingVisitor symbolUpdatingVisitor = new SymbolUpdatingVisitor();

            symbolUpdatingVisitor.VisitTree(options.AbstractSyntaxTree);

            AssemblyBuildingVisitor assemblyBuildingVisitor = new AssemblyBuildingVisitor(options.SymbolTable);

            assemblyBuildingVisitor.VisitTree(options.AbstractSyntaxTree);

            if (_generateOutputUnits)
            {
                foreach (string filesContent in options.FilesContents)
                {
                    _ouBuilder.ParseText(filesContent);
                }

                _ouBuilder.SaveOutputUnits(_outputPathOuDir);
            }

            DatBuilder datBuilder = new DatBuilder(options.SymbolTable, options.SymbolsWithInstructions);

            DatFile = datBuilder.GetDatFile();
            DatFile.Save(_outputPathDat);
        }