Пример #1
0
        static bool TryCompile(
            string input,
            out Type type,
            out IEnumerable <Message> messages,
            string programName = DefaultProgramName,
            string outputPath  = null)
        {
            var isSuccess = TryAnalyze(
                input,
                out string _,
                out ProgramNode program,
                out IEnumerable <Message> analysisMessages);

            messages = new List <Message>(analysisMessages);

            if (!isSuccess)
            {
                type = null;
                return(false);
            }

            // TODO split into different methods?
            if (outputPath == null)
            {
                type = ILEmitter.CreateType(program, programName);
            }
            else
            {
                type = null;
                ILEmitter.CreateAssembly(program, programName, outputPath);
            }

            return(true);
        }