Example #1
0
        /// <summary>
        /// This class automatically creates a dsl code file on disk, adds it to a project file,
        /// and compiles the project returning a GMacProjectCompiler object holding all this information.
        /// </summary>
        /// <param name="dslCode"></param>
        /// <param name="mainFolder"></param>
        /// <param name="baseFileName"></param>
        /// <returns></returns>
        public static GMacProjectCompiler CompileDslCode(string dslCode, string mainFolder, string baseFileName)
        {
            var compiler = new GMacProjectCompiler();

            if (compiler.SetProgressRunning() == false)
            {
                return(compiler);
            }

            try
            {
                var projectFilePath = Path.Combine(mainFolder, baseFileName + ".gmacproj");

                var codeFilePath = Path.Combine(mainFolder, baseFileName + ".gmac");

                File.WriteAllText(codeFilePath, dslCode, Encoding.Unicode);

                var project = GMacProject.CreateNew(projectFilePath);

                project.AddSourceFile(codeFilePath, Encoding.Unicode);

                project.SaveProjectToXmlFile();

                compiler.Compile(project);
            }
            catch (Exception e)
            {
                compiler.ReportError(e);
            }
            finally
            {
                compiler.SetProgressNotRunning();
            }

            return(compiler);
        }
 internal GMacProjectCodeUnitCompiler(GMacProjectCompiler parentCompiler, ISourceCodeUnit codeUnit, ParseTreeNode rootParseNode)
     : base(parentCompiler, codeUnit, rootParseNode)
 {
 }