¿Cómo escribir el patrón de visitante para un árbol de sintaxis abstracta en C #?

Tengo que escribir un patrón de visitante para navegar el AST. ¿Alguien puede decirme más cómo podría empezar a escribirlo? Por lo que yo entiendo, cada Nodo en AST tendría un método visit () (?) Que de alguna manera sería llamado (¿desde dónde?). Eso concluye mi entendimiento. Para simplificar todo, supongamos que tengo nodos Root, Expression, Number, Op y el árbol tiene este aspecto:

      Root
        |
       Op(+)
      /   \
     /     \
 Number(5)  \
             Op(*)
             /   \
            /     \
           /       \
       Number(2)   Number(444)

Respuestas a la pregunta(1)

Su respuesta a la pregunta