2 // visit.cs: Visitors for parsed dom
4 // Authors: Mike Krüger (mkrueger@novell.com)
5 // Marek Safar (marek.safar@gmail.com)
7 // Dual licensed under the terms of the MIT X11 or GNU GPL
9 // Copyright (c) 2010 Novell, Inc (http://www.novell.com)
10 // Copyright 2011 Xamarin Inc
17 public abstract class StructuralVisitor
19 public virtual void Visit (MemberCore member)
21 Console.WriteLine ("unknown member type: " + member.GetType ());
24 void VisitTypeContainer (TypeContainer tc)
26 //foreach (var member in tc.OrderedAllMembers) {
27 // member.Accept (this);
31 public virtual void Visit (ModuleContainer module)
33 VisitTypeContainer (module);
36 public virtual void Visit (NamespaceContainer ns)
38 VisitTypeContainer (ns);
41 public virtual void Visit (Class c)
43 VisitTypeContainer (c);
46 public virtual void Visit (Struct s)
48 VisitTypeContainer (s);
52 public virtual void Visit (Interface i)
54 VisitTypeContainer (i);
57 public virtual void Visit (Delegate d)
61 public virtual void Visit (Enum e)
63 VisitTypeContainer (e);
66 public virtual void Visit (FixedField f)
70 public virtual void Visit (Const c)
74 public virtual void Visit (Field f)
78 public virtual void Visit (Operator o)
82 public virtual void Visit (Indexer i)
86 public virtual void Visit (Method m)
90 public virtual void Visit (Property p)
94 public virtual void Visit (Constructor c)
98 public virtual void Visit (Destructor d)
102 public virtual void Visit (EventField e)
105 public virtual void Visit (EventProperty ep)
109 public virtual void Visit (EnumMember em)
113 public virtual object Visit (Statement stmt)
115 Console.WriteLine ("unknown statement:" + stmt);
119 public virtual object Visit (BlockVariableDeclaration blockVariableDeclaration)
124 public virtual object Visit (BlockConstantDeclaration blockConstantDeclaration)
129 public virtual object Visit (EmptyStatement emptyStatement)
134 public virtual object Visit (EmptyExpressionStatement emptyExpressionStatement)
139 public virtual object Visit (EmptyExpression emptyExpression)
144 public virtual object Visit (ErrorExpression errorExpression)
149 public virtual object Visit (If ifStatement)
155 public virtual object Visit (Do doStatement)
160 public virtual object Visit (While whileStatement)
165 public virtual object Visit (For forStatement)
170 public virtual object Visit (StatementExpression statementExpression)
175 public virtual object Visit (StatementErrorExpression errorStatement)
180 public virtual object Visit (Return returnStatement)
185 public virtual object Visit (Goto gotoStatement)
190 public virtual object Visit (LabeledStatement labeledStatement)
195 public virtual object Visit (GotoDefault gotoDefault)
200 public virtual object Visit (GotoCase gotoCase)
205 public virtual object Visit (Throw throwStatement)
210 public virtual object Visit (Break breakStatement)
215 public virtual object Visit (Continue continueStatement)
220 public virtual object Visit (Block blockStatement)
225 public virtual object Visit (Switch switchStatement)
230 public virtual object Visit (StatementList statementList)
235 public virtual object Visit (Lock lockStatement)
240 public virtual object Visit (Unchecked uncheckedStatement)
245 public virtual object Visit (Checked checkedStatement)
250 public virtual object Visit (Unsafe unsafeStatement)
256 public virtual object Visit (Fixed fixedStatement)
262 public virtual object Visit (TryFinally tryFinallyStatement)
267 public virtual object Visit (TryCatch tryCatchStatement)
272 public virtual object Visit (Using usingStatement)
277 public virtual object Visit (Foreach foreachStatement)
282 public virtual object Visit (Yield yieldStatement)
287 public virtual object Visit (YieldBreak yieldBreakStatement)
292 public virtual object Visit (Expression expression)
294 Console.WriteLine ("Visit unknown expression:" + expression);
298 public virtual object Visit (MemberAccess memberAccess)
303 public virtual object Visit (QualifiedAliasMember qualifiedAliasMember)
308 public virtual object Visit (LocalVariableReference localVariableReference)
313 public virtual object Visit (Constant constant)
318 public virtual object Visit (BooleanExpression booleanExpression)
323 public virtual object Visit (SimpleName simpleName)
328 public virtual object Visit (ParenthesizedExpression parenthesizedExpression)
333 public virtual object Visit (Unary unaryExpression)
338 public virtual object Visit (UnaryMutator unaryMutatorExpression)
344 public virtual object Visit (Indirection indirectionExpression)
349 public virtual object Visit (Is isExpression)
354 public virtual object Visit (As asExpression)
359 public virtual object Visit (Cast castExpression)
364 public virtual object Visit (ComposedCast composedCast)
369 public virtual object Visit (DefaultValueExpression defaultValueExpression)
374 public virtual object Visit (DefaultParameterValueExpression defaultParameterValueExpression)
379 public virtual object Visit (Binary binaryExpression)
384 public virtual object Visit (Nullable.NullCoalescingOperator nullCoalescingOperator)
389 public virtual object Visit (Conditional conditionalExpression)
394 public virtual object Visit (Invocation invocationExpression)
399 public virtual object Visit (New newExpression)
404 public virtual object Visit (NewAnonymousType newAnonymousType)
409 public virtual object Visit (NewInitialize newInitializeExpression)
414 public virtual object Visit (ArrayCreation arrayCreationExpression)
419 public virtual object Visit (This thisExpression)
424 public virtual object Visit (ArglistAccess argListAccessExpression)
429 public virtual object Visit (Arglist argListExpression)
434 public virtual object Visit (TypeOf typeOfExpression)
439 public virtual object Visit (SizeOf sizeOfExpression)
444 public virtual object Visit (CheckedExpr checkedExpression)
449 public virtual object Visit (UnCheckedExpr uncheckedExpression)
454 public virtual object Visit (ElementAccess elementAccessExpression)
459 public virtual object Visit (BaseThis baseAccessExpression)
464 public virtual object Visit (StackAlloc stackAllocExpression)
469 public virtual object Visit (SimpleAssign simpleAssign)
474 public virtual object Visit (CompoundAssign compoundAssign)
479 public virtual object Visit (TypeExpression typeExpression)
484 public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression)
489 public virtual object Visit (LambdaExpression lambdaExpression)
494 public virtual object Visit (ConstInitializer constInitializer)
499 public virtual object Visit (ArrayInitializer arrayInitializer)
504 public virtual object Visit (Linq.QueryExpression queryExpression)
509 public virtual object Visit (Linq.QueryStartClause queryExpression)
514 public virtual object Visit (Linq.SelectMany selectMany)
519 public virtual object Visit (Linq.Select select)
524 public virtual object Visit (Linq.GroupBy groupBy)
529 public virtual object Visit (Linq.Let let)
534 public virtual object Visit (Linq.Where where)
539 public virtual object Visit (Linq.Join join)
544 public virtual object Visit (Linq.GroupJoin groupJoin)
549 public virtual object Visit (Linq.OrderByAscending orderByAscending)
554 public virtual object Visit (Linq.OrderByDescending orderByDescending)
559 public virtual object Visit (Linq.ThenByAscending thenByAscending)
564 public virtual object Visit (Linq.ThenByDescending thenByDescending)
569 // undocumented expressions
570 public virtual object Visit (RefValueExpr refValueExpr)
575 public virtual object Visit (RefTypeExpr refTypeExpr)
580 public virtual object Visit (MakeRefExpr makeRefExpr)
585 public virtual object Visit (Await awaitExpr)