public override object Visit(Do doStatement) { var result = new DoWhileStatement(); var location = LocationsBag.GetLocations(doStatement); result.AddChild(new CSharpTokenNode(Convert(doStatement.loc), DoWhileStatement.DoKeywordRole), DoWhileStatement.DoKeywordRole); if (doStatement.Statement != null) result.AddChild((Statement)doStatement.Statement.Accept(this), Roles.EmbeddedStatement); if (location != null) result.AddChild(new CSharpTokenNode(Convert(location [0]), DoWhileStatement.WhileKeywordRole), DoWhileStatement.WhileKeywordRole); if (location != null && location.Count > 1) result.AddChild(new CSharpTokenNode(Convert(location [1]), Roles.LPar), Roles.LPar); if (doStatement.expr != null) result.AddChild((Expression)doStatement.expr.Accept(this), Roles.Condition); if (location != null && location.Count > 2) { result.AddChild(new CSharpTokenNode(Convert(location [2]), Roles.RPar), Roles.RPar); if (location.Count > 3) result.AddChild(new CSharpTokenNode(Convert(location [3]), Roles.Semicolon), Roles.Semicolon); } return result; }
public override object Visit (Do doStatement) { var result = new DoWhileStatement (); var location = LocationsBag.GetLocations (doStatement); result.AddChild (new CSharpTokenNode (Convert (doStatement.loc), "do".Length), DoWhileStatement.DoKeywordRole); result.AddChild ((MonoDevelop.CSharp.Ast.Statement)doStatement.EmbeddedStatement.Accept (this), WhileStatement.Roles.EmbeddedStatement); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), "while".Length), DoWhileStatement.WhileKeywordRole); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[1]), 1), DoWhileStatement.Roles.LPar); result.AddChild ((MonoDevelop.CSharp.Ast.Expression)doStatement.expr.Accept (this), DoWhileStatement.Roles.Condition); if (location != null) { result.AddChild (new CSharpTokenNode (Convert (location[2]), 1), DoWhileStatement.Roles.RPar); result.AddChild (new CSharpTokenNode (Convert (location[3]), 1), DoWhileStatement.Roles.Semicolon); } return result; }