Exemple #1
0
        /// <summary>
        /// Generate Code
        /// </summary>
        /// <param name="compilationUnit"> Compilation Unit resulting from TypeCobol Parsing</param>
        /// <param name="columns">Columns layout</param>
        public void Generate(CompilationUnit compilationUnit, ColumnsLayout columns = ColumnsLayout.FreeTextFormat)
        {
            //Check if there is any error in diags
            if (compilationUnit.AllDiagnostics().Any(d => d.Info.Severity == Compiler.Diagnostics.Severity.Error))
            {
                AnalyticsWrapper.Telemetry.TrackEvent("[Generation] Diagnostics Detected", EventType.Genration);
                throw new GenerationException("Unable to generate because of error diagnostics", null, null, false, false);
            }

            AnalyticsWrapper.Telemetry.TrackEvent("[Generation] Started", EventType.Genration);

            // STEP 0: Initialize the global values.
            RootNode = compilationUnit.ProgramClassDocumentSnapshot.Root;
            SymTable = compilationUnit.ProgramClassDocumentSnapshot.Root.SymbolTable;
            Layout   = columns;
            //Create the Initial target document.
            CreateTargetDocument();
            // STEP 1: modify tree to adapt it to destination language
            // 1.1 Run the Qualifier action on this node
            Qualifier qualifier = new Qualifier(this, RootNode);

            qualifier.Execute();
            // 1.2 Perform other actions
            Actions.Perform(RootNode);
            // STEP 2: convert tree to destination language code
            TreeToCode();

            AnalyticsWrapper.Telemetry.TrackEvent("[Generation] Ended", EventType.Genration);
        }
Exemple #2
0
        public override void Compare(CompilationUnit compilationUnit, StreamReader reader)
        {
            IList <Diagnostic> diagnostics = compilationUnit.AllDiagnostics();

            StringBuilder sb = new StringBuilder();

            foreach (var diagnostic in diagnostics)
            {
                sb.AppendLine(diagnostic.ToString());
            }

            sb.AppendLine("--- Tokens ---");
            foreach (var tokensLine in compilationUnit.TokensLines)
            {
                sb.AppendLine("---------------------------------");
                sb.AppendLine("_" + tokensLine.SourceText + "_");
                foreach (var sourceToken in tokensLine.SourceTokens)
                {
                    sb.AppendLine("    _" + sourceToken.SourceText + "_    " + sourceToken);
                }
            }

            string result = sb.ToString();

            if (debug)
            {
                Console.WriteLine("\"" + paths.SamplePath + "\" result:\n" + result);
            }
            ParserUtils.CheckWithResultReader(paths.SamplePath, result, reader);
        }
Exemple #3
0
        public override void Compare(CompilationUnit compilationUnit, StreamReader reader)
        {
            IList <Diagnostic>   diagnostics = compilationUnit.AllDiagnostics();
            ProgramClassDocument pcd         = compilationUnit.ProgramClassDocumentSnapshot;

            Compare(pcd.Root.Programs, pcd.Root.Classes, diagnostics, reader);
        }
Exemple #4
0
        public override void Compare(CompilationUnit compilationUnit, StreamReader reader)
        {
            var sortedDiags = compilationUnit.AllDiagnostics().OrderBy(d => d.Line).GetEnumerator();


            //Create result file

            //Read original source file
            StreamReader sourceReader = new StreamReader(new FileStream(paths.SamplePath, FileMode.Open));


            StringBuilder resultBuilder = new StringBuilder();
            int           linePos       = 0;

            Diagnostic nextDiag = sortedDiags.MoveNext() ? sortedDiags.Current : null;

            while (!sourceReader.EndOfStream)
            {
                string line = sourceReader.ReadLine();
                linePos++;


                while (nextDiag != null && nextDiag.Line <= linePos)
                {
                    resultBuilder.Append(nextDiag).Append("\n");
                    nextDiag = sortedDiags.MoveNext() ? sortedDiags.Current : null;
                }
                resultBuilder.Append(line).Append("\n");
            }

            //Print all remaining diags
            while (nextDiag != null)
            {
                resultBuilder.Append(nextDiag).Append("\n");
                nextDiag = sortedDiags.MoveNext() ? sortedDiags.Current : null;
            }


            string result = resultBuilder.ToString();

            if (debug)
            {
                Console.WriteLine("\"" + paths.SamplePath + "\" result:\n" + result);
            }
            ParserUtils.CheckWithResultReader(paths.SamplePath, result, reader);
        }
Exemple #5
0
        public override void Compare(CompilationUnit compilationUnit, StreamReader reader)
        {
            ProgramClassDocument pcd         = compilationUnit.ProgramClassDocumentSnapshot;
            IList <Diagnostic>   diagnostics = compilationUnit.AllDiagnostics();

            StringBuilder sb = new StringBuilder();

            foreach (var diagnostic in diagnostics)
            {
                sb.AppendLine(diagnostic.ToString());
            }

            sb.AppendLine("--- Nodes ---");
            sb.Append(pcd.Root);

            string result = sb.ToString();

            if (debug)
            {
                Console.WriteLine("\"" + paths.SamplePath + "\" result:\n" + result);
            }
            ParserUtils.CheckWithResultReader(paths.SamplePath, result, reader);
        }
Exemple #6
0
 public virtual void Compare(CompilationUnit result, StreamReader reader)
 {
     //Warning by default we only want All codeElementDiagnostics EXCEPT Node Diagnostics
     Compare(result.CodeElementsDocumentSnapshot.CodeElements, result.AllDiagnostics(false), reader);
 }