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
14 using System.Diagnostics;
18 public abstract class StructuralVisitor
20 public virtual void Visit (MemberCore member)
22 Debug.Fail ("unknown member type: " + member.GetType ());
25 void VisitTypeContainer (TypeContainer tc)
27 foreach (var container in tc.Containers) {
28 container.Accept (this);
32 void VisitTypeContainer (TypeDefinition tc)
34 foreach (var member in tc.Members) {
39 public virtual void Visit (ModuleContainer module)
41 VisitTypeContainer (module);
44 public virtual void Visit (UsingNamespace un)
48 public virtual void Visit (UsingAliasNamespace uan)
52 public virtual void Visit (UsingExternAlias uea)
56 public virtual void Visit (NamespaceContainer ns)
58 VisitTypeContainer (ns);
61 public virtual void Visit (CompilationSourceFile csf)
63 VisitTypeContainer (csf);
66 public virtual void Visit (Class c)
68 VisitTypeContainer (c);
71 public virtual void Visit (Struct s)
73 VisitTypeContainer (s);
77 public virtual void Visit (Interface i)
79 VisitTypeContainer (i);
82 public virtual void Visit (Delegate d)
86 public virtual void Visit (Enum e)
88 VisitTypeContainer (e);
91 public virtual void Visit (FixedField f)
95 public virtual void Visit (Const c)
99 public virtual void Visit (Field f)
103 public virtual void Visit (Operator o)
107 public virtual void Visit (Indexer i)
111 public virtual void Visit (Method m)
115 public virtual void Visit (Property p)
119 public virtual void Visit (Constructor c)
123 public virtual void Visit (Destructor d)
127 public virtual void Visit (EventField e)
130 public virtual void Visit (EventProperty ep)
134 public virtual void Visit (EnumMember em)
138 public virtual object Visit (Statement stmt)
140 Debug.Fail ("unknown statement:" + stmt);
144 public virtual object Visit (BlockVariable blockVariableDeclaration)
149 public virtual object Visit (BlockConstant blockConstantDeclaration)
154 public virtual object Visit (EmptyStatement emptyStatement)
159 public virtual object Visit (EmptyExpressionStatement emptyExpressionStatement)
164 public virtual object Visit (EmptyExpression emptyExpression)
169 public virtual object Visit (ErrorExpression errorExpression)
174 public virtual object Visit (If ifStatement)
180 public virtual object Visit (Do doStatement)
185 public virtual object Visit (While whileStatement)
190 public virtual object Visit (For forStatement)
195 public virtual object Visit (StatementExpression statementExpression)
200 public virtual object Visit (StatementErrorExpression errorStatement)
205 public virtual object Visit (Return returnStatement)
210 public virtual object Visit (Goto gotoStatement)
215 public virtual object Visit (LabeledStatement labeledStatement)
220 public virtual object Visit (SwitchLabel switchLabel)
225 public virtual object Visit (GotoDefault gotoDefault)
230 public virtual object Visit (GotoCase gotoCase)
235 public virtual object Visit (Throw throwStatement)
240 public virtual object Visit (Break breakStatement)
245 public virtual object Visit (Continue continueStatement)
250 public virtual object Visit (Block blockStatement)
255 public virtual object Visit (Switch switchStatement)
260 public virtual object Visit (StatementList statementList)
265 public virtual object Visit (Lock lockStatement)
270 public virtual object Visit (Unchecked uncheckedStatement)
275 public virtual object Visit (Checked checkedStatement)
280 public virtual object Visit (Unsafe unsafeStatement)
286 public virtual object Visit (Fixed fixedStatement)
292 public virtual object Visit (TryFinally tryFinallyStatement)
297 public virtual object Visit (TryCatch tryCatchStatement)
302 public virtual object Visit (Using usingStatement)
307 public virtual object Visit (Foreach foreachStatement)
312 public virtual object Visit (Yield yieldStatement)
317 public virtual object Visit (YieldBreak yieldBreakStatement)
322 public virtual object Visit (Expression expression)
324 Debug.Fail ("Visit unknown expression:" + expression);
328 public virtual object Visit (MemberAccess memberAccess)
333 public virtual object Visit (QualifiedAliasMember qualifiedAliasMember)
338 public virtual object Visit (LocalVariableReference localVariableReference)
343 public virtual object Visit (Constant constant)
348 public virtual object Visit (BooleanExpression booleanExpression)
353 public virtual object Visit (SimpleName simpleName)
358 public virtual object Visit (ParenthesizedExpression parenthesizedExpression)
363 public virtual object Visit (Unary unaryExpression)
368 public virtual object Visit (UnaryMutator unaryMutatorExpression)
374 public virtual object Visit (Indirection indirectionExpression)
379 public virtual object Visit (Is isExpression)
384 public virtual object Visit (As asExpression)
389 public virtual object Visit (Cast castExpression)
394 public virtual object Visit (ComposedCast composedCast)
399 public virtual object Visit (DefaultValueExpression defaultValueExpression)
404 public virtual object Visit (DefaultParameterValueExpression defaultParameterValueExpression)
409 public virtual object Visit (Binary binaryExpression)
414 public virtual object Visit (Nullable.NullCoalescingOperator nullCoalescingOperator)
419 public virtual object Visit (Conditional conditionalExpression)
424 public virtual object Visit (Invocation invocationExpression)
429 public virtual object Visit (New newExpression)
434 public virtual object Visit (NewAnonymousType newAnonymousType)
439 public virtual object Visit (NewInitialize newInitializeExpression)
444 public virtual object Visit (ArrayCreation arrayCreationExpression)
449 public virtual object Visit (This thisExpression)
454 public virtual object Visit (ArglistAccess argListAccessExpression)
459 public virtual object Visit (Arglist argListExpression)
464 public virtual object Visit (TypeOf typeOfExpression)
469 public virtual object Visit (SizeOf sizeOfExpression)
474 public virtual object Visit (CheckedExpr checkedExpression)
479 public virtual object Visit (UnCheckedExpr uncheckedExpression)
484 public virtual object Visit (ElementAccess elementAccessExpression)
489 public virtual object Visit (BaseThis baseAccessExpression)
494 public virtual object Visit (StackAlloc stackAllocExpression)
499 public virtual object Visit (SimpleAssign simpleAssign)
504 public virtual object Visit (CompoundAssign compoundAssign)
509 public virtual object Visit (TypeExpression typeExpression)
514 public virtual object Visit (AnonymousMethodExpression anonymousMethodExpression)
519 public virtual object Visit (LambdaExpression lambdaExpression)
524 public virtual object Visit (ConstInitializer constInitializer)
529 public virtual object Visit (ArrayInitializer arrayInitializer)
534 public virtual object Visit (Linq.QueryExpression queryExpression)
539 public virtual object Visit (Linq.QueryStartClause queryExpression)
544 public virtual object Visit (Linq.SelectMany selectMany)
549 public virtual object Visit (Linq.Select select)
554 public virtual object Visit (Linq.GroupBy groupBy)
559 public virtual object Visit (Linq.Let let)
564 public virtual object Visit (Linq.Where where)
569 public virtual object Visit (Linq.Join join)
574 public virtual object Visit (Linq.GroupJoin groupJoin)
579 public virtual object Visit (Linq.OrderByAscending orderByAscending)
584 public virtual object Visit (Linq.OrderByDescending orderByDescending)
589 public virtual object Visit (Linq.ThenByAscending thenByAscending)
594 public virtual object Visit (Linq.ThenByDescending thenByDescending)
599 // undocumented expressions
600 public virtual object Visit (RefValueExpr refValueExpr)
605 public virtual object Visit (RefTypeExpr refTypeExpr)
610 public virtual object Visit (MakeRefExpr makeRefExpr)
615 public virtual object Visit (Await awaitExpr)