absyntax/visitor.cc
changeset 417 d48f53715f77
parent 350 2c3c4dc34979
child 680 df783da3ebe2
equal deleted inserted replaced
416:0c2ef191b22a 417:d48f53715f77
    71 null_visitor_c::~null_visitor_c(void) {return;}
    71 null_visitor_c::~null_visitor_c(void) {return;}
    72 
    72 
    73 #define SYM_LIST(class_name_c)	\
    73 #define SYM_LIST(class_name_c)	\
    74   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    74   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    75 
    75 
    76 #define SYM_TOKEN(class_name_c)	\
    76 #define SYM_TOKEN(class_name_c, ...)	\
    77   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    77   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    78 
    78 
    79 #define SYM_REF0(class_name_c)	\
    79 #define SYM_REF0(class_name_c, ...)	\
    80   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    80   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    81 
    81 
    82 #define SYM_REF1(class_name_c, ref1)	\
    82 #define SYM_REF1(class_name_c, ref1, ...)	\
    83   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    83   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    84 
    84 
    85 #define SYM_REF2(class_name_c, ref1, ref2, ...)	\
    85 #define SYM_REF2(class_name_c, ref1, ref2, ...)	\
    86   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    86   void *null_visitor_c::visit(class_name_c *symbol) {return NULL;}
    87 
    87 
   134 
   134 
   135 
   135 
   136 #define SYM_LIST(class_name_c)	\
   136 #define SYM_LIST(class_name_c)	\
   137   void *iterator_visitor_c::visit(class_name_c *symbol) {return visit_list(symbol);}
   137   void *iterator_visitor_c::visit(class_name_c *symbol) {return visit_list(symbol);}
   138 
   138 
   139 #define SYM_TOKEN(class_name_c)	\
   139 #define SYM_TOKEN(class_name_c, ...)	\
   140   void *iterator_visitor_c::visit(class_name_c *symbol) {return NULL;}
   140   void *iterator_visitor_c::visit(class_name_c *symbol) {return NULL;}
   141 
   141 
   142 #define SYM_REF0(class_name_c)	\
   142 #define SYM_REF0(class_name_c, ...)	\
   143   void *iterator_visitor_c::visit(class_name_c *symbol) {return NULL;}
   143   void *iterator_visitor_c::visit(class_name_c *symbol) {return NULL;}
   144 
   144 
   145 #define SYM_REF1(class_name_c, ref1)			\
   145 #define SYM_REF1(class_name_c, ref1, ...)			\
   146 void *iterator_visitor_c::visit(class_name_c *symbol) {	\
   146 void *iterator_visitor_c::visit(class_name_c *symbol) {	\
   147   if (symbol->ref1!=NULL) symbol->ref1->accept(*this);	\
   147   if (symbol->ref1!=NULL) symbol->ref1->accept(*this);	\
   148   return NULL;						\
   148   return NULL;						\
   149 }
   149 }
   150 
   150 
   236 
   236 
   237 
   237 
   238 #define SYM_LIST(class_name_c)	\
   238 #define SYM_LIST(class_name_c)	\
   239   void *search_visitor_c::visit(class_name_c *symbol) {return visit_list(symbol);}
   239   void *search_visitor_c::visit(class_name_c *symbol) {return visit_list(symbol);}
   240 
   240 
   241 #define SYM_TOKEN(class_name_c)	\
   241 #define SYM_TOKEN(class_name_c, ...)	\
   242   void *search_visitor_c::visit(class_name_c *symbol) {return NULL;}
   242   void *search_visitor_c::visit(class_name_c *symbol) {return NULL;}
   243 
   243 
   244 #define SYM_REF0(class_name_c)	\
   244 #define SYM_REF0(class_name_c, ...)	\
   245   void *search_visitor_c::visit(class_name_c *symbol) {return NULL;}
   245   void *search_visitor_c::visit(class_name_c *symbol) {return NULL;}
   246 
   246 
   247 #define SYM_REF1(class_name_c, ref1)				\
   247 #define SYM_REF1(class_name_c, ref1, ...)				\
   248 void *search_visitor_c::visit(class_name_c *symbol) {		\
   248 void *search_visitor_c::visit(class_name_c *symbol) {		\
   249   if (symbol->ref1) return symbol->ref1->accept(*this);		\
   249   if (symbol->ref1) return symbol->ref1->accept(*this);		\
   250   return NULL;							\
   250   return NULL;							\
   251 }
   251 }
   252 
   252