Esempio n. 1
0
		public static string GenerateText(TypeDeclaration type, OrderedPartCollection<AbstractDynamicCompilationExtension> extensions)
		{
			var unit = new CompilationUnit();

			var namespaces = new HashSet<string>
			{
				typeof (SystemTime).Namespace,
				typeof (AbstractViewGenerator).Namespace,
				typeof (Enumerable).Namespace,
				typeof (IEnumerable<>).Namespace,
				typeof (IEnumerable).Namespace,
				typeof (int).Namespace,
				typeof (LinqOnDynamic).Namespace,
				typeof(Field).Namespace,
			};
			foreach (var extension in extensions)
			{
				foreach (var ns in extension.Value.GetNamespacesToImport())
				{
					namespaces.Add(ns);
				}
			}

			foreach (var ns in namespaces)
			{
				unit.AddChild(new Using(ns));
			}

			unit.AddChild(type);
			var output = new CSharpOutputVisitor();
			unit.AcceptVisitor(output, null);

			return output.Text;
		}
Esempio n. 2
0
		public static string ToText(AbstractNode node)
		{
			var output = new CSharpOutputVisitor();
			node.AcceptVisitor(output, null);

			return output.Text;
		}
Esempio n. 3
0
        public static string ToText(INode node)
        {
            var output = new CSharpOutputVisitor();

            node.AcceptVisitor(output, null);

            return(output.Text);
        }
Esempio n. 4
0
        void CSharpGenerateCodeButtonClick(object sender, EventArgs e)
        {
            StringWriter        w      = new StringWriter();
            CSharpOutputVisitor output = new CSharpOutputVisitor(w, new CSharpFormattingOptions());

            compilationUnit.AcceptVisitor(output, null);
            csharpCodeTextBox.Text = w.ToString();
        }
Esempio n. 5
0
        void CSharpGenerateCodeButtonClick(object sender, EventArgs e)
        {
            var w      = new StringWriter();
            var output = new CSharpOutputVisitor(w, new CSharpFormattingOptions());

            unit.AcceptVisitor(output, null);
            editor.Text = w.ToString();
        }
Esempio n. 6
0
        public override void WriteIdentifier(Identifier identifier)
        {
            if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier))
            {
                output.Write('@');
            }

            var    definition = GetCurrentDefinition();
            string name       = TextWriterTokenWriter.EscapeIdentifier(identifier.Name);

            switch (definition)
            {
            case IType t:
                output.WriteReference(t, name, true);
                return;

            case IMember m:
                output.WriteReference(m, name, true);
                return;
            }

            var member = GetCurrentMemberReference();

            switch (member)
            {
            case IType t:
                output.WriteReference(t, name, false);
                return;

            case IMember m:
                output.WriteReference(m, name, false);
                return;
            }

            var localDefinition = GetCurrentLocalDefinition();

            if (localDefinition != null)
            {
                output.WriteLocalReference(name, localDefinition, isDefinition: true);
                return;
            }

            var localRef = GetCurrentLocalReference();

            if (localRef != null)
            {
                output.WriteLocalReference(name, localRef);
                return;
            }

            if (firstUsingDeclaration && !lastUsingDeclaration)
            {
                output.MarkFoldStart(defaultCollapsed: !settings.ExpandUsingDeclarations);
                firstUsingDeclaration = false;
            }

            output.Write(name);
        }
Esempio n. 7
0
        public static string ToText(AstNode node)
        {
            var stringWriter = new StringWriter();
            var output       = new CSharpOutputVisitor(stringWriter, FormattingOptionsFactory.CreateSharpDevelop());

            node.AcceptVisitor(output);

            return(stringWriter.GetStringBuilder().ToString());
        }
        public static IDictionary <AstNode, ISegment> WriteNode(StringWriter writer, AstNode node, CSharpFormattingOptions policy, BotTimeICSharpCode.AvalonEdit.TextEditorOptions options)
        {
            var formatter = new SegmentTrackingOutputFormatter(writer);
            //formatter.IndentationString = options.IndentationString;
            var visitor = new CSharpOutputVisitor(formatter, policy);

            node.AcceptVisitor(visitor);
            return(formatter.Segments);
        }
		public string OutputNode (ProjectDom dom, INode node, string indent)
		{
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor ();
			CSharpFormatter.SetFormatOptions (outputVisitor, dom != null && dom.Project != null ? dom.Project.Policies : null);
			int col = CSharpFormatter.GetColumn (indent, 0, 4);
			outputVisitor.OutputFormatter.IndentationLevel = System.Math.Max (0, col / 4);
			node.AcceptVisitor (outputVisitor, null);
			return outputVisitor.Text;
		}
Esempio n. 10
0
        protected internal string GetCode(INode node)
        {
            CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
            PrettyPrintOptions  options       = (PrettyPrintOptions)outputVisitor.Options;

            options.SpacesAfterComma = false;
            node.AcceptVisitor(outputVisitor, null);
            return(outputVisitor.Text);
        }
		protected string GenerateParams(Type eventType, bool paramNames)
		{
			CSharpOutputVisitor v = new CSharpOutputVisitor();
			MethodDeclaration md = ConvertEventInvokeMethodToNRefactory(CurrentClassPart, eventType, "name");
			if (md != null) {
				v.AppendCommaSeparatedList(md.Parameters);
			}
			return v.Text;
		}
Esempio n. 12
0
 public void rewriteCode_CSharp(CompilationUnit unit, IList<ISpecial> specials)
 {        	
     var outputVisitor  = new CSharpOutputVisitor();    		
     using (SpecialNodesInserter.Install(specials, outputVisitor)) {
         unit.AcceptVisitor(outputVisitor, null);
     }
     //codeTextBox.Text = outputVisitor.Text.Replace("\t", "  ");
     CSharpCode = outputVisitor.Text;
 }
Esempio n. 13
0
        static int Main(string[] args)
        {
            try {
                File.Delete("conversion.log");

                List <string> map = new List <string>()
                {
                    "..\\Controller\\Profiler",
                    "..\\Controller\\Data\\UnmanagedCallTreeNode",
                    "..\\Controller\\structs"
                };

                foreach (string path in map)
                {
                    CSharpParser parser = new CSharpParser();
                                        #if DEBUG
                    parser.CompilerSettings.ConditionalSymbols.Add("DEBUG");
                                        #endif
                    string filePath = path + ".cs";

                    if (File.Exists(filePath))
                    {
                        using (StreamReader reader = new StreamReader(filePath)) {
                            SyntaxTree syntaxTree = parser.Parse(reader, filePath);

                            if (parser.HasErrors)
                            {
                                string message = "Parser errors in file " + filePath + ":\n";
                                foreach (Error error in parser.Errors)
                                {
                                    message += error.Message + "\n";
                                }
                                Console.WriteLine(message);
                                File.WriteAllText(path + "64.cs", message);
                                return(2);
                            }

                            syntaxTree.AcceptVisitor(new Converter());

                            using (StreamWriter writer = new StreamWriter(path + "64.cs")) {
                                CSharpOutputVisitor output = new CSharpOutputVisitor(writer, FormattingOptionsFactory.CreateSharpDevelop());
                                syntaxTree.AcceptVisitor(output);
                            }
                        }
                    }
                }

                return(0);
            } catch (Exception e) {
                try {
                    File.WriteAllText("conversion.log", e.ToString());
                } catch (Exception) {
                    return(-2);
                }
                return(-1);
            }
        }
Esempio n. 14
0
        public override void WriteIdentifier(Identifier identifier, TextTokenType tokenType)
        {
            if (tokenType == TextTokenType.Text)
            {
                tokenType = TextTokenHelper.GetTextTokenType(identifier.AnnotationVT <TextTokenType>() ?? identifier.Annotation <object>());
            }

            if (tokenType != TextTokenType.Keyword && (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)))
            {
                output.Write('@', TextTokenType.Operator);
            }

            var definition = GetCurrentDefinition(identifier);

            if (definition != null)
            {
                output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenType, false);
                return;
            }

            object memberRef = GetCurrentMemberReference();

            if (memberRef != null)
            {
                output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenType);
                return;
            }

            definition = GetCurrentLocalDefinition();
            if (definition != null)
            {
                output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenType);
                return;
            }

            memberRef = GetCurrentLocalReference();
            if (memberRef != null)
            {
                output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenType, true);
                return;
            }

            if (firstUsingDeclaration)
            {
                output.MarkFoldStart(defaultCollapsed: true);
                firstUsingDeclaration = false;
            }

            var s = identifier.Name;

            if (identifier.Annotation <IdentifierFormatted>() == null)
            {
                s = IdentifierEscaper.Escape(s);
            }
            output.Write(s, tokenType);
        }
Esempio n. 15
0
        public void rewriteCode_CSharp(CompilationUnit unit, IList <ISpecial> specials)
        {
            var outputVisitor = new CSharpOutputVisitor();

            using (SpecialNodesInserter.Install(specials, outputVisitor)) {
                unit.AcceptVisitor(outputVisitor, null);
            }
            //codeTextBox.Text = outputVisitor.Text.Replace("\t", "  ");
            CSharpCode = outputVisitor.Text;
        }
Esempio n. 16
0
        string AddInteger <T>(string input, int number) where T : Expression
        {
            Expression e = ParseUtilCSharp.ParseExpression <T>(input);

            e = Expression.AddInteger(e, number);
            CSharpOutputVisitor v = new CSharpOutputVisitor();

            e.AcceptVisitor(v, null);
            return(v.Text);
        }
		void TestProgram(string program)
		{
			IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));
			parser.Parse();
			Assert.AreEqual("", parser.Errors.ErrorOutput);
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
			outputVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
			Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
			Assert.AreEqual(StripWhitespace(program), StripWhitespace(outputVisitor.Text));
		}
        public static IReadOnlyDictionary <AstNode, ISegment> WriteNode(StringWriter writer, AstNode node, CSharpFormattingOptions policy, ITextEditorOptions editorOptions)
        {
            var formatter = new SegmentTrackingOutputFormatter(writer);

            formatter.IndentationString = editorOptions.IndentationString;
            var visitor = new CSharpOutputVisitor(formatter, policy);

            node.AcceptVisitor(visitor);
            return(formatter.Segments);
        }
Esempio n. 19
0
        public override void WriteIdentifier(Identifier identifier)
        {
            if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier))
            {
                output.Write('@');
            }

            var definition = GetCurrentDefinition();

            if (definition != null)
            {
                MemberReference cecil = SymbolToCecil(definition);
                if (cecil != null)
                {
                    output.WriteDefinition(identifier.Name, cecil, false);
                    return;
                }
            }

            var member = GetCurrentMemberReference();

            if (member != null)
            {
                MemberReference cecil = SymbolToCecil(member);
                if (cecil != null)
                {
                    output.WriteReference(identifier.Name, cecil);
                    return;
                }
            }

            var localDefinition = GetCurrentLocalDefinition();

            if (localDefinition != null)
            {
                output.WriteDefinition(identifier.Name, localDefinition);
                return;
            }

            var localRef = GetCurrentLocalReference();

            if (localRef != null)
            {
                output.WriteReference(identifier.Name, localRef, true);
                return;
            }

            if (firstUsingDeclaration)
            {
                output.MarkFoldStart(defaultCollapsed: true);
                firstUsingDeclaration = false;
            }

            output.Write(identifier.Name);
        }
Esempio n. 20
0
        public override void WriteIdentifier(Identifier identifier, TextTokenKind tokenKind)
        {
            if (tokenKind == TextTokenKind.Text)
            {
                tokenKind = TextTokenKindUtils.GetTextTokenType(identifier.AnnotationVT <TextTokenKind>() ?? identifier.Annotation <object>());
            }

            if (tokenKind != TextTokenKind.Keyword && (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)))
            {
                output.Write("@", TextTokenKind.Operator);
            }

            var definition = GetCurrentDefinition(identifier);

            if (definition != null)
            {
                output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenKind, false);
                return;
            }

            object memberRef = GetCurrentMemberReference();

            if (memberRef != null)
            {
                output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenKind);
                return;
            }

            definition = GetCurrentLocalDefinition();
            if (definition != null)
            {
                output.WriteDefinition(IdentifierEscaper.Escape(identifier.Name), definition, tokenKind);
                return;
            }

            memberRef = GetCurrentLocalReference();
            if (memberRef != null)
            {
                output.WriteReference(IdentifierEscaper.Escape(identifier.Name), memberRef, tokenKind, true);
                return;
            }

            if (firstUsingDeclaration)
            {
                firstUsingDeclaration = false;
            }

            var s = identifier.Name;

            if (identifier.Annotation <IdentifierFormatted>() == null)
            {
                s = IdentifierEscaper.Escape(s);
            }
            output.Write(s, tokenKind);
        }
Esempio n. 21
0
        protected string GenerateParams(Type eventType, bool paramNames)
        {
            CSharpOutputVisitor v  = new CSharpOutputVisitor();
            MethodDeclaration   md = ConvertEventInvokeMethodToNRefactory(CurrentClassPart, eventType, "name");

            if (md != null)
            {
                v.AppendCommaSeparatedList(md.Parameters);
            }
            return(v.Text);
        }
        public static string PrettyPrint(this INode code)
        {
            if (code == null)
            {
                return(string.Empty);
            }
            CSharpOutputVisitor csOutVisitor = new CSharpOutputVisitor();

            code.AcceptVisitor(csOutVisitor, null);
            return(csOutVisitor.Text);
        }
		public void TestProgram(string input, string expectedOutput)
		{
			IParser parser = ParserFactory.CreateParser(SupportedLanguage.VBNet, new StringReader(input));
			parser.Parse();
			Assert.AreEqual("", parser.Errors.ErrorOutput);
			parser.CompilationUnit.AcceptVisitor(new VBNetToCSharpConvertVisitor(), null);
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
			outputVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
			Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
			Assert.AreEqual(expectedOutput, outputVisitor.Text);
		}
		protected override string GenerateCode(INode unit, bool installSpecials)
		{
			CSharpOutputVisitor visitor = new CSharpOutputVisitor();
			
			if (installSpecials) {
				SpecialNodesInserter.Install(this.specialsList, visitor);
			}
			
			unit.AcceptVisitor(visitor, null);
			return visitor.Text;
		}
        public string OutputNode(ProjectDom dom, INode node, string indent)
        {
            CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();

            CSharpFormatter.SetFormatOptions(outputVisitor, dom != null && dom.Project != null ? dom.Project.Policies : null);
            int col = CSharpFormatter.GetColumn(indent, 0, 4);

            outputVisitor.OutputFormatter.IndentationLevel = System.Math.Max(0, col / 4);
            node.AcceptVisitor(outputVisitor, null);
            return(outputVisitor.Text);
        }
Esempio n. 26
0
        public String ToCSharp2()
        {
            IOutputAstVisitor outputVisitor = new CSharpOutputVisitor();

            SetPrettyPrintOptions(outputVisitor);

            using (SpecialNodesInserter.Install(specials, outputVisitor)) {
                unit.AcceptVisitor(outputVisitor, null);
            }
            return(outputVisitor.Text);
        }
Esempio n. 27
0
        // Add a value tag
        private void AddValueTag(CSharpOutputVisitor formatter)
        {
            if (valueText.Count == 0)
            {
                formatter.WriteComment(CommentType.Documentation, " <value>To fill.</value>");
                return;
            }

            formatter.WriteComment(CommentType.Documentation, " <value>");
            WriteMultipleDocumentationLine(formatter, ref valueText);
            formatter.WriteComment(CommentType.Documentation, " </value>");
        }
Esempio n. 28
0
        public static string ConvertVBNET2CS(string vbcode)
        {
            var snippetParser = new SnippetParser(SupportedLanguage.VBNet);
            var node          = snippetParser.Parse(vbcode);

            node.AcceptVisitor(new ToVBNetConvertVisitor(), null);
            var csharpOutputVisitor = new CSharpOutputVisitor();

            using (SpecialNodesInserter.Install(snippetParser.Specials, csharpOutputVisitor))
                node.AcceptVisitor(csharpOutputVisitor, null);
            return(csharpOutputVisitor.Text);
        }
Esempio n. 29
0
        public string OutputNode(AstNode node)
        {
            using (var stringWriter = new System.IO.StringWriter()) {
                var formatter = new TextWriterOutputFormatter(stringWriter);
//				formatter.Indentation = indentLevel;
                stringWriter.NewLine = Document.Editor.EolMarker;

                var visitor = new CSharpOutputVisitor(formatter, FormattingOptionsFactory.CreateMono());
                node.AcceptVisitor(visitor);
                return(stringWriter.ToString());
            }
        }
Esempio n. 30
0
        private void FormatDocument_Click(object sender, RoutedEventArgs e)
        {
            CSharpFormattingOptions policy    = FormattingOptionsFactory.CreateAllman();
            CSharpParser            parser    = new CSharpParser();
            SyntaxTree          tree          = parser.Parse(scriptTextBox.Text);
            StringWriter        writer        = new StringWriter();
            CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor(writer, policy);

            outputVisitor.VisitSyntaxTree(tree);

            scriptTextBox.Text = writer.ToString();
        }
		void TestExpression(string expression)
		{
			// SEMICOLON HACK : without a trailing semicolon, parsing expressions does not work correctly
			IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(expression + ";"));
			Expression e = parser.ParseExpression();
			Assert.AreEqual("", parser.Errors.ErrorOutput);
			Assert.IsNotNull(e, "ParseExpression returned null");
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
			e.AcceptVisitor(outputVisitor, null);
			Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
			Assert.AreEqual(StripWhitespace(expression), StripWhitespace(outputVisitor.Text));
		}
 public static CSharpMethodBodyStatistics GetBodyStatistics(this MethodDeclaration declaration)
 {
     using (var writer = new StringWriter()) {
         var visitor = new CSharpOutputVisitor(writer, FormattingOptionsFactory.CreateAllman());
         declaration.AcceptVisitor(visitor);
         var bodyAsString = writer.ToString();
         return(new CSharpMethodBodyStatistics(
                    bodyAsString.Split(new[] { Environment.NewLine }, StringSplitOptions.None).Length,
                    bodyAsString.Length,
                    bodyAsString.GetHashCode()));
     }
 }
Esempio n. 33
0
        private static string GenerateCode(INode unit /*, bool installSpecials*/)
        {
            CSharpOutputVisitor visitor = new CSharpOutputVisitor();

            //			if (installSpecials)
            //			{
            //				SpecialNodesInserter.Install(this.specialsList, visitor);
            //			}

            unit.AcceptVisitor(visitor, null);
            return(visitor.Text);
        }
        void TestProgram(string program)
        {
            IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));

            parser.Parse();
            Assert.AreEqual("", parser.Errors.ErrorOutput);
            CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();

            outputVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
            Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
            Assert.AreEqual(StripWhitespace(program), StripWhitespace(outputVisitor.Text));
        }
Esempio n. 35
0
        private static string GenerateCode(INode unit/*, bool installSpecials*/)
        {
            CSharpOutputVisitor visitor = new CSharpOutputVisitor();

            //			if (installSpecials)
            //			{
            //				SpecialNodesInserter.Install(this.specialsList, visitor);
            //			}

            unit.AcceptVisitor(visitor, null);
            return visitor.Text;
        }
Esempio n. 36
0
        void TestExpression(string expression)
        {
            IParser    parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(expression + ";"));
            Expression e      = parser.ParseExpression();

            Assert.AreEqual("", parser.Errors.ErrorOutput);
            CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();

            e.AcceptVisitor(outputVisitor, null);
            Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
            Assert.AreEqual(StripWhitespace(expression), StripWhitespace(outputVisitor.Text));
        }
 public override void WriteIdentifier(Identifier identifier)
 {
     WriteIndentation();
     if (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier))
     {
         textWriter.Write('@');
         column++;
     }
     textWriter.Write(identifier.Name);
     column         += identifier.Name.Length;
     isAtStartOfLine = false;
 }
Esempio n. 38
0
 public override void WriteIdentifier(Identifier identifier, object data)
 {
     WriteIndentation();
     if (!BoxedTextColor.Keyword.Equals(data) && (identifier.IsVerbatim || CSharpOutputVisitor.IsKeyword(identifier.Name, identifier)))
     {
         textWriter.Write('@');
         column++;
     }
     textWriter.Write(identifier.Name);
     column         += identifier.Name.Length;
     isAtStartOfLine = false;
 }
        protected override string GenerateCode(INode unit, bool installSpecials)
        {
            CSharpOutputVisitor visitor = new CSharpOutputVisitor();

            if (installSpecials)
            {
                SpecialNodesInserter.Install(this.specialsList, visitor);
            }

            unit.AcceptVisitor(visitor, null);
            return(visitor.Text);
        }
Esempio n. 40
0
        static string OutputNode(MonoDevelop.Ide.Gui.Document doc, AstNode node)
        {
            using (var stringWriter = new System.IO.StringWriter()) {
//				formatter.Indentation = indentLevel;
                var formatter = new TextWriterTokenWriter(stringWriter);
                stringWriter.NewLine = doc.Editor.EolMarker;

                var visitor = new CSharpOutputVisitor(formatter, doc.GetFormattingOptions());
                node.AcceptVisitor(visitor);
                return(stringWriter.ToString());
            }
        }
Esempio n. 41
0
        public static string GenerateText(TypeDeclaration type)
        {
            var unit = new CompilationUnit();
            unit.AddChild(new Using(typeof (AbstractViewGenerator).Namespace));
            unit.AddChild(new Using(typeof (Enumerable).Namespace));
            unit.AddChild(new Using(typeof (int).Namespace));
            unit.AddChild(new Using(typeof (LinqOnDynamic).Namespace));
            unit.AddChild(type);

            var output = new CSharpOutputVisitor();
            unit.AcceptVisitor(output, null);

            return output.Text;
        }
		void TestProgram(string program)
		{
			IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(program));
			parser.Parse();
			Assert.AreEqual("", parser.Errors.ErrorOutput);
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
			using (SpecialNodesInserter.Install(parser.Lexer.SpecialTracker.RetrieveSpecials(),
			                                    outputVisitor)) {
				outputVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
			}
			Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
			Assert.AreEqual(program.Replace("\r", ""), outputVisitor.Text.TrimEnd().Replace("\r", ""));
			parser.Dispose();
		}
 public static string csharpCode(this INode iNode)
 {
     try
     {
         var outputVisitor = new CSharpOutputVisitor();
         iNode.AcceptVisitor(outputVisitor, null);
         return outputVisitor.Text;
     }
     catch (Exception ex)
     {
         ex.log("in CSharpSourceCode_ExtensionMethods.csharpCode");
         return "error creating source code for iNode. Error message was: ".format(ex.Message) ;
     }
 }
		public void TestProgram(string input, string expectedOutput)
		{
			IParser parser = ParserFactory.CreateParser(SupportedLanguage.VBNet, new StringReader(input));
			parser.Parse();
			Assert.AreEqual("", parser.Errors.ErrorOutput);
			parser.CompilationUnit.AcceptVisitor(new VBNetConstructsConvertVisitor(), null);
			parser.CompilationUnit.AcceptVisitor(new ToCSharpConvertVisitor(), null);
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
			outputVisitor.Options.IndentationChar = ' ';
			outputVisitor.Options.IndentSize = 2;
			outputVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
			Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
			Assert.AreEqual(expectedOutput.Replace("\r", ""), outputVisitor.Text.Replace("\r", ""));
		}
Esempio n. 45
0
		static int Main(string[] args)
		{
			File.Delete("conversion.log");
			
			try {
				List<string> map = new List<string>()
				{
					"..\\Controller\\Profiler",
					"..\\Controller\\Data\\UnmanagedCallTreeNode",
					"..\\Controller\\structs"
				};

				foreach (string path in map)
				{
					using (IParser parser = ParserFactory.CreateParser(path + ".cs"))
					{
						parser.Parse();

						if (parser.Errors.Count > 0)
						{
							string message = "Parser errors in file " + path + ":\n" + parser.Errors.ErrorOutput;
							Console.WriteLine(message);
							File.WriteAllText(path + "64.cs", message);
							return 2;
						}
						
						var specials = parser.Lexer.SpecialTracker.RetrieveSpecials().Where(item => item is PreprocessingDirective);
						
						parser.CompilationUnit.AcceptVisitor(new Converter(), null);
						CSharpOutputVisitor output = new CSharpOutputVisitor();
						SpecialNodesInserter.Install(specials, output);
						parser.CompilationUnit.AcceptVisitor(output, null);

						if (!File.Exists(path + "64.cs") || File.ReadAllText(path + "64.cs") != output.Text) {
							File.WriteAllText(path + "64.cs", output.Text);
						}
					}
				}

				return 0;
			} catch (Exception e) {
				File.WriteAllText("conversion.log", e.ToString());
				return -1;
			}
		}
		void VB2CS(string input, string expectedOutput)
		{
			SnippetParser parser = new SnippetParser(SupportedLanguage.VBNet);
			INode node = parser.Parse(input);
			// parser.Errors.ErrorOutput contains syntax errors, if any
			Assert.IsNotNull(node);
			Assert.AreEqual("", parser.Errors.ErrorOutput);
			// parser.Specials is the list of comments, preprocessor directives etc.
			PreprocessingDirective.VBToCSharp(parser.Specials);
			// Convert VB.NET constructs to C#:
			node.AcceptVisitor(new VBNetConstructsConvertVisitor(), null);
			node.AcceptVisitor(new ToCSharpConvertVisitor(), null);

			CSharpOutputVisitor output = new CSharpOutputVisitor();
			using (SpecialNodesInserter.Install(parser.Specials, output)) {
				node.AcceptVisitor(output, null);
			}
			// output.Errors.ErrorOutput contains conversion errors/warnings, if any
			// output.Text contains the converted code
			Assert.AreEqual("", output.Errors.ErrorOutput);
			Assert.AreEqual(expectedOutput, output.Text);
		}
        public void Uninternalize(string file)
        {
            using (var parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(File.ReadAllText(file))))
            {
                parser.Parse();
                
                if (parser.Errors.Count > 0)
                {
                    Console.WriteLine(parser.Errors.ErrorOutput);
                    return;
                }

                var specials = parser.Lexer.SpecialTracker.RetrieveSpecials();

                parser.CompilationUnit.AcceptVisitor(new UninternalizerVisitor(), null);

                var visitor = new CSharpOutputVisitor();
                using (SpecialNodesInserter.Install(specials, visitor))
                    parser.CompilationUnit.AcceptVisitor(visitor, null);

                File.WriteAllText(file, visitor.Text);
            }
        }
		public void NestedInterfaceInGenericClass()
		{
			// See SD2-1626
			DefaultProjectContent pc = new DefaultProjectContent();
			pc.ReferencedContents.Add(SharedProjectContentRegistryForTests.Instance.Mscorlib);
			
			DefaultCompilationUnit cu = new DefaultCompilationUnit(pc);
			DefaultClass container = new DefaultClass(cu, "TestClass");
			container.TypeParameters.Add(new DefaultTypeParameter(container, "T", 0));
			
			DefaultClass innerClass = new DefaultClass(cu, container);
			innerClass.FullyQualifiedName = "TestClass.INestedInterface";
			innerClass.ClassType = ClassType.Interface;
			innerClass.TypeParameters.Add(new DefaultTypeParameter(innerClass, "T", 0));
			innerClass.Properties.Add(new DefaultProperty(innerClass, "P") {
			                          	ReturnType = new GenericReturnType(innerClass.TypeParameters[0]),
			                          	CanGet = true
			                          });
			container.InnerClasses.Add(innerClass);
			pc.AddClassToNamespaceList(container);
			
			DefaultClass targetClass = new DefaultClass(cu, "TargetClass");
			List<AbstractNode> nodes = new List<AbstractNode>();
			
			IReturnType interf = new SearchClassReturnType(pc, targetClass, 0, 0, "TestClass.INestedInterface", 1);
			interf = new ConstructedReturnType(interf, new IReturnType[] { SharedProjectContentRegistryForTests.Instance.Mscorlib.GetClass("System.String", 0).DefaultReturnType });
			
			CSharpCodeGenerator codeGen = new CSharpCodeGenerator();
			codeGen.ImplementInterface(nodes, interf, true, targetClass);
			
			Assert.AreEqual(1, nodes.Count);
			CSharpOutputVisitor output = new CSharpOutputVisitor();
			output.Options.IndentationChar = ' ';
			output.Options.IndentSize = 2;
			nodes[0].AcceptVisitor(output, null);
			Assert.AreEqual("string TestClass<string>.INestedInterface.P {\n  get {\n    throw new NotImplementedException();\n  }\n}", output.Text.Replace("\r", "").Trim());
		}
		public override IOutputAstVisitor CreateOutputVisitor()
		{
			CSharpOutputVisitor v = new CSharpOutputVisitor();
			PrettyPrintOptions pOpt = v.Options;
			
			BraceStyle braceStyle;
			if (this.Options.BracesOnSameLine) {
				braceStyle = BraceStyle.EndOfLine;
			} else {
				braceStyle = BraceStyle.NextLine;
			}
			pOpt.StatementBraceStyle = braceStyle;
			pOpt.EventAddBraceStyle = braceStyle;
			pOpt.EventRemoveBraceStyle = braceStyle;
			pOpt.PropertyBraceStyle = braceStyle;
			pOpt.PropertyGetBraceStyle = braceStyle;
			pOpt.PropertySetBraceStyle = braceStyle;
			
			pOpt.IndentationChar = this.Options.IndentString[0];
			pOpt.IndentSize = this.Options.IndentString.Length;
			pOpt.TabSize = this.Options.IndentString.Length;
			
			return v;
		}
Esempio n. 50
0
 public static string GenerateCode(CompilationUnit compilationUnit)
 {
     CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor();
     outputVisitor.VisitCompilationUnit(compilationUnit, null);
     return outputVisitor.Text;
 }
Esempio n. 51
0
		public virtual void PrintPreprocessingDirective(PreprocessingDirective directive, bool forceWriteInPreviousBlock)
		{
			if (!directive.Expression.IsNull) {
				CSharpOutputVisitor visitor = new CSharpOutputVisitor();
				directive.Expression.AcceptVisitor(visitor, null);
				WriteLineInPreviousLine(directive.Cmd + " " + visitor.Text, forceWriteInPreviousBlock);
			} else if (string.IsNullOrEmpty(directive.Arg))
				WriteLineInPreviousLine(directive.Cmd, forceWriteInPreviousBlock);
			else
				WriteLineInPreviousLine(directive.Cmd + " " + directive.Arg, forceWriteInPreviousBlock);
		}
Esempio n. 52
0
		protected NodeOutput OutputNode(int indentLevel, AstNode node, bool startWithNewLine = false)
		{
			var stringWriter = new StringWriter ();
			var formatter = new SegmentTrackingTokenWriter(stringWriter);
			formatter.Indentation = indentLevel;
			formatter.IndentationString = Options.TabsToSpaces ? new string (' ', Options.IndentSize) : "\t";
			stringWriter.NewLine = Options.EolMarker;
			if (startWithNewLine)
				formatter.NewLine ();
			var visitor = new CSharpOutputVisitor (formatter, formattingOptions);
			node.AcceptVisitor (visitor);
			string text = stringWriter.ToString().TrimEnd();
			return new NodeOutput(text, formatter.NewSegments);
		}
Esempio n. 53
0
		string GetFormattedText (PolicyContainer policyParent, string input)
		{
			hasErrors = false;
			if (string.IsNullOrEmpty (input))
				return input;
			
			CSharpOutputVisitor outputVisitor = new CSharpOutputVisitor ();
			SetFormatOptions (outputVisitor, policyParent);
			
			outputVisitor.OutputFormatter.IndentationLevel = startIndentLevel;
			using (ICSharpCode.NRefactory.IParser parser = ParserFactory.CreateParser (SupportedLanguage.CSharp, new StringReader (input))) {
				parser.Parse ();
				hasErrors = parser.Errors.Count != 0;
		//				if (hasErrors)
		//					Console.WriteLine (parser.Errors.ErrorOutput);
				IList<ISpecial> specials = parser.Lexer.SpecialTracker.RetrieveSpecials ();
				if (parser.Errors.Count == 0) {
					using (SpecialNodesInserter.Install (specials, outputVisitor)) {
						parser.CompilationUnit.AcceptVisitor (outputVisitor, null);
					}
					return outputVisitor.Text;
				}
			}
			//			Console.WriteLine ("trying to parse block.");
			using (ICSharpCode.NRefactory.IParser parser = ParserFactory.CreateParser (SupportedLanguage.CSharp, new StringReader (input))) {
				BlockStatement blockStatement = parser.ParseBlock ();
				hasErrors = parser.Errors.Count != 0;
				//				if (hasErrors)
				//					Console.WriteLine (parser.Errors.ErrorOutput);
				IList<ISpecial> specials = parser.Lexer.SpecialTracker.RetrieveSpecials ();
				if (parser.Errors.Count == 0) {
					StringBuilder result = new StringBuilder ();
					using (var inserter = SpecialNodesInserter.Install (specials, outputVisitor)) {
						foreach (ICSharpCode.NRefactory.Ast.INode node in blockStatement.Children) {
							node.AcceptVisitor (outputVisitor, null);
							//							result.AppendLine (outputVisitor.Text);
						}
						if (!outputVisitor.OutputFormatter.LastCharacterIsNewLine)
							outputVisitor.OutputFormatter.NewLine ();
						inserter.Finish ();
						result.AppendLine (outputVisitor.Text);
					}
					return result.ToString ();
				}
			}
			//			Console.WriteLine ("trying to parse expression.");
			using (ICSharpCode.NRefactory.IParser parser = ParserFactory.CreateParser (SupportedLanguage.CSharp, new StringReader (input))) {
				Expression expression = parser.ParseExpression ();
				hasErrors = parser.Errors.Count != 0;
				//				if (hasErrors)
				//					Console.WriteLine (parser.Errors.ErrorOutput);
				IList<ISpecial> specials = parser.Lexer.SpecialTracker.RetrieveSpecials ();
				if (parser.Errors.Count == 0) {
					using (SpecialNodesInserter.Install (specials, outputVisitor)) {
						expression.AcceptVisitor (outputVisitor, null);
					}
					return outputVisitor.Text;
				}
			}
			return input;
		}
Esempio n. 54
0
		public static void SetFormatOptions (CSharpOutputVisitor outputVisitor, PolicyContainer policyParent)
		{
			IEnumerable<string> types = DesktopService.GetMimeTypeInheritanceChain (MimeType);
			TextStylePolicy currentPolicy = policyParent != null ? policyParent.Get<TextStylePolicy> (types) : MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy<TextStylePolicy> (types);
			CSharpFormattingPolicy codePolicy = policyParent != null ? policyParent.Get<CSharpFormattingPolicy> (types) : MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy<CSharpFormattingPolicy> (types);

			outputVisitor.Options.IndentationChar = currentPolicy.TabsToSpaces ? ' ' : '\t';
			outputVisitor.Options.TabSize = currentPolicy.TabWidth;
			outputVisitor.Options.IndentSize = currentPolicy.TabWidth;
			outputVisitor.Options.EolMarker = TextStylePolicy.GetEolMarker(currentPolicy.EolMarker);

			CodeFormatDescription descr = CSharpFormattingPolicyPanel.CodeFormatDescription;
			Type optionType = outputVisitor.Options.GetType ();

			foreach (CodeFormatOption option in descr.AllOptions) {
				KeyValuePair<string, string> val = descr.GetValue (codePolicy, option);
				PropertyInfo info = optionType.GetProperty (option.Name);
				if (info == null) {
					System.Console.WriteLine ("option : " + option.Name + " not found.");
					continue;
				}
				object cval = null;
				if (info.PropertyType.IsEnum) {
					cval = Enum.Parse (info.PropertyType, val.Key);
				} else if (info.PropertyType == typeof(bool)) {
					cval = Convert.ToBoolean (val.Key);
				} else {
					cval = Convert.ChangeType (val.Key, info.PropertyType);
				}
				//System.Console.WriteLine("set " + option.Name + " to " + cval);
				info.SetValue (outputVisitor.Options, cval, null);
			}
		}
Esempio n. 55
0
        private string LinqQueryToImplicitClass()
        {
            var parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(source));
            var block = parser.ParseBlock();

            var visitor = new TransformVisitor();
            block.AcceptVisitor(visitor, null);

            VariableDeclaration variable = GetVariableDeclaration(block);

            Name = variable.Name;

            var type = new TypeDeclaration(Modifiers.Public, new List<AttributeSection>())
            {
                BaseTypes =
                    {
                        new TypeReference("AbstractViewGenerator")
                    },
                Name = Name,
                Type = ClassType.Class
            };

            var ctor = new ConstructorDeclaration(Name,
                                                  Modifiers.Public,
                                                  new List<ParameterDeclarationExpression>(), null);
            type.Children.Add(ctor);
            ctor.Body = new BlockStatement();
            ctor.Body.AddChild(new ExpressionStatement(
                                   new AssignmentExpression(
                                       new MemberReferenceExpression(new ThisReferenceExpression(), "ViewText"),
                                       AssignmentOperatorType.Assign,
                                       new PrimitiveExpression(source, source))));
            ctor.Body.AddChild(new ExpressionStatement(
                                   new AssignmentExpression(
                                       new MemberReferenceExpression(new ThisReferenceExpression(), "ViewDefinition"),
                                       AssignmentOperatorType.Assign,
                                       new LambdaExpression
                                       {
                                           Parameters =
                                               {
                                                   new ParameterDeclarationExpression(new TypeReference("System.Collections.Generic.IEnumerable<"+rootQueryType+">"), rootQueryName)
                                               },
                                           ExpressionBody = variable.Initializer
                                       })));

            var unit = new CompilationUnit();
            unit.AddChild(new Using(typeof(AbstractViewGenerator).Namespace));
            unit.AddChild(new Using(typeof(System.Linq.Enumerable).Namespace));
            unit.AddChild(type);

            var output = new CSharpOutputVisitor();
            unit.AcceptVisitor(output, null);

            return output.Text;
        }
Esempio n. 56
0
 string GetShortType(IType type, CSharpResolver state)
 {
     var builder = new TypeSystemAstBuilder (state);
     var shortType = builder.ConvertType (type);
     using (var w = new System.IO.StringWriter ()) {
         var visitor = new CSharpOutputVisitor (w, FormattingPolicy);
         shortType.AcceptVisitor (visitor, null);
         return w.ToString ();
     }
 }
Esempio n. 57
0
		public static string ToCSharp(this Expression expression)
		{
			var output = new CSharpOutputVisitor();
			expression.AcceptVisitor(output, null);
			return (output.Text);
		}
Esempio n. 58
0
 internal static void Print(AstNode node)
 {
     var v = new CSharpOutputVisitor (Console.Out, new CSharpFormattingOptions ());
     node.AcceptVisitor (v, null);
 }
		// this should use CodeGenerator and build a BlockStatement to work for both C# and VB
		string GetSwitchBodyCode(IReturnType enumType, string indent, CodeGenerator generator)
		{
			if (generator == null)
				return string.Empty;
			
			ParseInformation parseInfo = ParserService.GetParseInformation(this.Editor.FileName);
			var visitor = new CSharpOutputVisitor();
			CodeGenerator.ConvertType(enumType, this.classFinderContext).AcceptVisitor(visitor, null);
			var qualifiedEnumType = visitor.Text;
			StringBuilder sb = new StringBuilder();
			bool first = true;
			foreach (var enumCase in GetEnumCases(enumType)) {
				string qualifiedName = qualifiedEnumType + "." + enumCase.Name;
				sb.AppendLine(string.Format((first ? "" : indent) + "case {0}:", qualifiedName));
				sb.AppendLine(indent + context.Tab);
				sb.AppendLine(indent + context.Tab + "break;");
				first = false;
			}
			sb.AppendLine(indent + "default:");
			sb.Append(string.Format(indent + context.Tab + "throw new Exception(\"Invalid value for {0}\");", enumType.Name));
			return sb.ToString();
		}
 internal static void Print(AstNode node)
 {
     var v = new CSharpOutputVisitor (Console.Out, FormattingOptionsFactory.CreateMono ());
     node.AcceptVisitor (v);
 }