onilink_

ast visitor pattern

Mar 28th, 2020
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. class AstExpression;
  2. class AstCall;
  3. class AstBinaryExpression;
  4. class AstUnaryExpression;
  5. class AstValueFloat;
  6. class AstValueInt;
  7. class AstVariable;
  8.  
  9. struct VisitorAst
  10. {
  11.     virtual ~VisitorAst();
  12.    
  13.     virtual void visit(AstExpression&) = 0;
  14.     virtual void visit(AstCall&) = 0;
  15.     virtual void visit(AstBinaryExpression&) = 0;
  16.     virtual void visit(AstUnaryExpression&) = 0;
  17.     virtual void visit(AstValueFloat&) = 0;
  18.     virtual void visit(AstValueInt&) = 0;
  19.     virtual void visit(AstVariable&) = 0;
  20. };
  21.  
  22.  
  23. struct StringifyAst:
  24.     public VisitorAst
  25. {
  26.     std::string str;
  27.    
  28.     void visit(AstExpression&) override {}
  29.     void visit(AstCall&) override {}
  30.     void visit(AstBinaryExpression&) override;
  31.     void visit(AstUnaryExpression&) override;
  32.     void visit(AstValueFloat&) override;
  33.     void visit(AstValueInt&) override;
  34.     void visit(AstVariable&) override;
  35. };
Advertisement
Add Comment
Please, Sign In to add comment