absyntax/visitor.hh
changeset 350 2c3c4dc34979
parent 279 c0453b7f99df
child 680 df783da3ebe2
equal deleted inserted replaced
341:ba80c3ceb6fb 350:2c3c4dc34979
    76 
    76 
    77 #include "absyntax.hh"
    77 #include "absyntax.hh"
    78 
    78 
    79 
    79 
    80 
    80 
    81 #define SYM_LIST(class_name_c)	\
    81 #define SYM_LIST(class_name_c, ...)	\
    82   virtual void *visit(class_name_c *symbol) = 0;
    82   virtual void *visit(class_name_c *symbol) = 0;
    83 
    83 
    84 #define SYM_TOKEN(class_name_c)	\
    84 #define SYM_TOKEN(class_name_c, ...)	\
    85   virtual void *visit(class_name_c *symbol) = 0;
    85   virtual void *visit(class_name_c *symbol) = 0;
    86 
    86 
    87 #define SYM_REF0(class_name_c)	\
    87 #define SYM_REF0(class_name_c, ...)	\
    88   virtual void *visit(class_name_c *symbol) = 0;
    88   virtual void *visit(class_name_c *symbol) = 0;
    89 
    89 
    90 #define SYM_REF1(class_name_c, ref1)		\
    90 #define SYM_REF1(class_name_c, ref1, ...)		\
    91   virtual void *visit(class_name_c *symbol) = 0;
    91   virtual void *visit(class_name_c *symbol) = 0;
    92 
    92 
    93 #define SYM_REF2(class_name_c, ref1, ref2)	\
    93 #define SYM_REF2(class_name_c, ref1, ref2, ...)	\
    94   virtual void *visit(class_name_c *symbol) = 0;
    94   virtual void *visit(class_name_c *symbol) = 0;
    95 
    95 
    96 #define SYM_REF3(class_name_c, ref1, ref2, ref3)	\
    96 #define SYM_REF3(class_name_c, ref1, ref2, ref3, ...)	\
    97   virtual void *visit(class_name_c *symbol) = 0;
    97   virtual void *visit(class_name_c *symbol) = 0;
    98 
    98 
    99 #define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4)	\
    99 #define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4, ...)	\
   100   virtual void *visit(class_name_c *symbol) = 0;
   100   virtual void *visit(class_name_c *symbol) = 0;
   101 
   101 
   102 #define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5)		\
   102 #define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5, ...)		\
   103   virtual void *visit(class_name_c *symbol) = 0;
   103   virtual void *visit(class_name_c *symbol) = 0;
   104 
   104 
   105 #define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6)	\
   105 #define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6, ...)	\
   106   virtual void *visit(class_name_c *symbol) = 0;
   106   virtual void *visit(class_name_c *symbol) = 0;
   107 
   107 
   108 class visitor_c {
   108 class visitor_c {
   109   public:
   109   public:
   110   #include "absyntax.def"
   110   #include "absyntax.def"
   125 
   125 
   126 
   126 
   127 
   127 
   128 
   128 
   129 
   129 
   130 #define SYM_LIST(class_name_c)	\
   130 #define SYM_LIST(class_name_c, ...)	\
   131   virtual void *visit(class_name_c *symbol);
   131   virtual void *visit(class_name_c *symbol);
   132 
   132 
   133 #define SYM_TOKEN(class_name_c)	\
   133 #define SYM_TOKEN(class_name_c, ...)	\
   134   virtual void *visit(class_name_c *symbol);
   134   virtual void *visit(class_name_c *symbol);
   135 
   135 
   136 #define SYM_REF0(class_name_c)	\
   136 #define SYM_REF0(class_name_c, ...)	\
   137   virtual void *visit(class_name_c *symbol);
   137   virtual void *visit(class_name_c *symbol);
   138 
   138 
   139 #define SYM_REF1(class_name_c, ref1)		\
   139 #define SYM_REF1(class_name_c, ref1, ...)		\
   140   virtual void *visit(class_name_c *symbol);
   140   virtual void *visit(class_name_c *symbol);
   141 
   141 
   142 #define SYM_REF2(class_name_c, ref1, ref2)	\
   142 #define SYM_REF2(class_name_c, ref1, ref2, ...)	\
   143   virtual void *visit(class_name_c *symbol);
   143   virtual void *visit(class_name_c *symbol);
   144 
   144 
   145 #define SYM_REF3(class_name_c, ref1, ref2, ref3)	\
   145 #define SYM_REF3(class_name_c, ref1, ref2, ref3, ...)	\
   146   virtual void *visit(class_name_c *symbol);
   146   virtual void *visit(class_name_c *symbol);
   147 
   147 
   148 #define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4)	\
   148 #define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4, ...)	\
   149   virtual void *visit(class_name_c *symbol);
   149   virtual void *visit(class_name_c *symbol);
   150 
   150 
   151 #define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5)		\
   151 #define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5, ...)		\
   152   virtual void *visit(class_name_c *symbol);
   152   virtual void *visit(class_name_c *symbol);
   153 
   153 
   154 #define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6)	\
   154 #define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6, ...)	\
   155   virtual void *visit(class_name_c *symbol);
   155   virtual void *visit(class_name_c *symbol);
   156 
   156 
   157 
   157 
   158 
   158 
   159 
   159