Jak napisać wzorzec gościa dla abstrakcyjnego drzewa składni w C #?

Muszę napisać wzór gościa, aby poruszać się po AST. Czy ktoś może mi powiedzieć więcej, jak zacznę pisać? O ile rozumiem, każdy węzeł w AST miałby metodę visit () (?), Która w jakiś sposób zostałaby wywołana (skąd?). To kończy moje zrozumienie. Aby uprościć wszystko, załóżmy, że mam węzły Root, Expression, Number, Op i drzewo wygląda tak:

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

questionAnswers(1)

yourAnswerToTheQuestion