⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prettyprintvisitor.cs

📁 c#源代码
💻 CS
📖 第 1 页 / 共 4 页
字号:
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			if (foreachStatement.EmbeddedStatement is BlockStatement) {
				Visit((BlockStatement)foreachStatement.EmbeddedStatement, false);
			} else {
				foreachStatement.EmbeddedStatement.AcceptVisitor(this, data);
			}
			--outputFormatter.IndentationLevel;
			return null;
		}
		
		public override object Visit(WhileStatement whileStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.While);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			whileStatement.Condition.AcceptVisitor(this, data);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			if (whileStatement.EmbeddedStatement is BlockStatement) {
				Visit((BlockStatement)whileStatement.EmbeddedStatement, false);
			} else {
				whileStatement.EmbeddedStatement.AcceptVisitor(this, data);
			}
			--outputFormatter.IndentationLevel;
			return null;
		}
		
		public override object Visit(DoWhileStatement doWhileStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Do);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			if (doWhileStatement.EmbeddedStatement is BlockStatement) {
				Visit((BlockStatement)doWhileStatement.EmbeddedStatement, false);
			} else {
				doWhileStatement.EmbeddedStatement.AcceptVisitor(this, data);
			}
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.While);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			doWhileStatement.Condition.AcceptVisitor(this, data);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(BreakStatement breakStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Break);
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(ContinueStatement continueStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Continue);
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(CheckedStatement checkedStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Checked);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			checkedStatement.Block.AcceptChildren(this, false);
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(UncheckedStatement uncheckedStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Unchecked);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			uncheckedStatement.Block.AcceptVisitor(this, false);
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(FixedStatement fixedStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Fixed);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			Visit(fixedStatement.TypeReference, data);
			outputFormatter.Space();
			AppendCommaSeparatedList(fixedStatement.PointerDeclarators);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			if (fixedStatement.EmbeddedStatement is BlockStatement) {
				Visit((BlockStatement)fixedStatement.EmbeddedStatement, false);
			} else {
				fixedStatement.EmbeddedStatement.AcceptVisitor(this, data);
			}
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(GotoCaseStatement gotoCaseStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Goto);
			outputFormatter.Space();
			if (gotoCaseStatement.IsDefaultCase) {
				outputFormatter.PrintToken(Tokens.Default);
			} else {
				outputFormatter.PrintToken(Tokens.Case);
				outputFormatter.Space();
				gotoCaseStatement.CaseExpression.AcceptVisitor(this, data);
			}
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(GotoStatement gotoStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Goto);
			outputFormatter.Space();
			outputFormatter.PrintIdentifier(gotoStatement.Label);
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(IfElseStatement ifElseStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.If);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			ifElseStatement.Condition.AcceptVisitor(this,data);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			ifElseStatement.EmbeddedStatement.AcceptVisitor(this,data);
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Else);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			ifElseStatement.EmbeddedElseStatement.AcceptVisitor(this,data);
			--outputFormatter.IndentationLevel;
			return null;
		}
		
		public override object Visit(IfStatement ifStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.If);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			ifStatement.Condition.AcceptVisitor(this,data);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.Space();
			++outputFormatter.IndentationLevel;
			ifStatement.EmbeddedStatement.AcceptVisitor(this,data);
			--outputFormatter.IndentationLevel;
			return null;
		}
		
		public override object Visit(LabelStatement labelStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintIdentifier(labelStatement.Label);
			outputFormatter.PrintToken(Tokens.Colon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(LockStatement lockStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Lock);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			lockStatement.LockExpression.AcceptVisitor(this, data);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			
			++outputFormatter.IndentationLevel;
			lockStatement.EmbeddedStatement.AcceptVisitor(this, data);
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(ReturnStatement returnStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Return);
			if (returnStatement.ReturnExpression != null) {
				outputFormatter.Space();
				returnStatement.ReturnExpression.AcceptVisitor(this, data);
			}
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(SwitchStatement switchStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Switch);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			switchStatement.SwitchExpression.AcceptVisitor(this, data);
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			++outputFormatter.IndentationLevel;
			foreach (SwitchSection section in switchStatement.SwitchSections) {
				for (int i = 0; i < section.SwitchLabels.Count; ++i) {
					Expression label = (Expression)section.SwitchLabels[i];
					if (label == null) {
						outputFormatter.Indent();
						outputFormatter.PrintToken(Tokens.Default);
						outputFormatter.PrintToken(Tokens.Colon);
						outputFormatter.NewLine();
						continue;
					}
					
					outputFormatter.Indent();
					outputFormatter.PrintToken(Tokens.Case);
					outputFormatter.Space();
					label.AcceptVisitor(this, data);
					outputFormatter.PrintToken(Tokens.Colon);
					outputFormatter.NewLine();
				}
				
				++outputFormatter.IndentationLevel;
				section.AcceptChildren(this, data);
				--outputFormatter.IndentationLevel;
			}
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(ThrowStatement throwStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Throw);
			if (throwStatement.ThrowExpression != null) {
				outputFormatter.Space();
				throwStatement.ThrowExpression.AcceptVisitor(this, data);
			}
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(TryCatchStatement tryCatchStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Try);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			
			++outputFormatter.IndentationLevel;
			tryCatchStatement.StatementBlock.AcceptChildren(this, data);
			--outputFormatter.IndentationLevel;
			
			if (tryCatchStatement.CatchClauses != null) {
//				int generated = 0;
				foreach (CatchClause catchClause in tryCatchStatement.CatchClauses) {
					outputFormatter.Indent();
					outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
					outputFormatter.Space();
					outputFormatter.PrintToken(Tokens.Catch);
					outputFormatter.Space();
					if (catchClause.Type == null) {
					} else {
						outputFormatter.PrintToken(Tokens.OpenParenthesis);
						outputFormatter.PrintIdentifier(catchClause.Type);
						if (catchClause.VariableName != null) {
							outputFormatter.Space();
							outputFormatter.PrintIdentifier(catchClause.VariableName);
						}
						outputFormatter.PrintToken(Tokens.CloseParenthesis);
					}
					outputFormatter.Space();
					outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
					outputFormatter.NewLine();
					++outputFormatter.IndentationLevel;
					catchClause.StatementBlock.AcceptChildren(this, data);
					--outputFormatter.IndentationLevel;
				}
			}
			
			if (tryCatchStatement.FinallyBlock != null) {
				outputFormatter.Indent();
				outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
				outputFormatter.Space();
				outputFormatter.PrintToken(Tokens.Finally);
				outputFormatter.Space();
				outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
				outputFormatter.NewLine();
				++outputFormatter.IndentationLevel;
				tryCatchStatement.FinallyBlock.AcceptChildren(this, data);
				--outputFormatter.IndentationLevel;
			}
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(UsingStatement usingStatement, object data)
		{
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.Using);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenParenthesis);
			outputFormatter.DoIndent = false;
			outputFormatter.DoNewLine = false;
			outputFormatter.EmitSemicolon = false;
			
			usingStatement.UsingStmnt.AcceptVisitor(this,data);
			outputFormatter.DoIndent = true;
			outputFormatter.DoNewLine = true;
			outputFormatter.EmitSemicolon = true;
			
			outputFormatter.PrintToken(Tokens.CloseParenthesis);
			outputFormatter.Space();
			outputFormatter.PrintToken(Tokens.OpenCurlyBrace);
			outputFormatter.NewLine();
			
			++outputFormatter.IndentationLevel;
			usingStatement.EmbeddedStatement.AcceptVisitor(this,data);
			--outputFormatter.IndentationLevel;
			outputFormatter.Indent();
			outputFormatter.PrintToken(Tokens.CloseCurlyBrace);
			outputFormatter.NewLine();
			return null;
		}
		
		public override object Visit(LocalVariableDeclaration localVariableDeclaration, object data)
		{
//			Console.WriteLine(localVariableDeclaration);
			outputFormatter.Indent();
			VisitModifier(localVariableDeclaration.Modifier);
			Visit(localVariableDeclaration.Type, data);
			outputFormatter.Space();
			this.AppendCommaSeparatedList(localVariableDeclaration.Variables);
			outputFormatter.PrintToken(Tokens.Semicolon);
			outputFormatter.NewLine();
			return null;
		}
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -