na stosie odkładane są obliczone wyniki dla każdego z węzłów reprezentującego operacje matematyczną.

Poniżej zamieszczono przykładowy kod w C++ obrazujący działanie opisanych wizytatorów:

struct Node { Node *Left, *Right;

virtual void Accept( Visitor *v ) = 0;

struct ArgumentNode : public Node { double Argument;

virtual void Accept( Visitor *v )

v->VisitArgumentNode( this );

struct OperatorNode : public Node { char Operator;

virtual void Accept( Visitor *v )

if ( Left != NULL ) Left->Accept( v ); if ( Right != NULL ) Right->Accept( v );

v->VisitOperatorNode( this );

struct Visitor { virtual void VisitArgumentNode( ArgumentNode *n ) = 0; virtual void VisitOperatorNode( OperatorNode *n ) = 0;

struct PostfixPrintVisitor : public Visitor { String Output;

virtual void VisitArgumentNode( ArgumentNode *n )

Output += ToString( n->Argument );

virtual void VisitOperatorNode( OperatorNode *n )

Output += n->Operator;

struct CalculationVisitor : public Visitor { stack<Numeric> NumericStack;

virtual void VisitArgumentNode( ArgumentNode *n )

NumericStack.push( n->Argument );

virtual void VisitOperatorNode( OperatorNode *n )

Numeric b = NumericStack.top(); NumericStack.pop();

Numeric a = NumericStack.top(); NumericStack.pop();

switch ( n->Operator )