absyntax/visitor.hh
changeset 680 df783da3ebe2
parent 350 2c3c4dc34979
--- a/absyntax/visitor.hh	Tue Oct 16 18:23:16 2012 +0100
+++ b/absyntax/visitor.hh	Tue Oct 16 18:56:03 2012 +0100
@@ -78,32 +78,15 @@
 
 
 
-#define SYM_LIST(class_name_c, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_TOKEN(class_name_c, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF0(class_name_c, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF1(class_name_c, ref1, ...)		\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF2(class_name_c, ref1, ref2, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF3(class_name_c, ref1, ref2, ref3, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5, ...)		\
-  virtual void *visit(class_name_c *symbol) = 0;
-
-#define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6, ...)	\
-  virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_LIST(class_name_c, ...)                                             virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_TOKEN(class_name_c, ...)                                            virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF0(class_name_c, ...)                                             virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF1(class_name_c, ref1, ...)                                       virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF2(class_name_c, ref1, ref2, ...)                                 virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF3(class_name_c, ref1, ref2, ref3, ...)                           virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4, ...)                     virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5, ...)               virtual void *visit(class_name_c *symbol) = 0;
+#define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6, ...)         virtual void *visit(class_name_c *symbol) = 0;
 
 class visitor_c {
   public:
@@ -127,32 +110,15 @@
 
 
 
-#define SYM_LIST(class_name_c, ...)	\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_TOKEN(class_name_c, ...)	\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF0(class_name_c, ...)	\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF1(class_name_c, ref1, ...)		\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF2(class_name_c, ref1, ref2, ...)	\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF3(class_name_c, ref1, ref2, ref3, ...)	\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4, ...)	\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5, ...)		\
-  virtual void *visit(class_name_c *symbol);
-
-#define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6, ...)	\
-  virtual void *visit(class_name_c *symbol);
+#define SYM_LIST(class_name_c, ...)                                             virtual void *visit(class_name_c *symbol);
+#define SYM_TOKEN(class_name_c, ...)                                            virtual void *visit(class_name_c *symbol);
+#define SYM_REF0(class_name_c, ...)                                             virtual void *visit(class_name_c *symbol);
+#define SYM_REF1(class_name_c, ref1, ...)                                       virtual void *visit(class_name_c *symbol);
+#define SYM_REF2(class_name_c, ref1, ref2, ...)                                 virtual void *visit(class_name_c *symbol);
+#define SYM_REF3(class_name_c, ref1, ref2, ref3, ...)                           virtual void *visit(class_name_c *symbol);
+#define SYM_REF4(class_name_c, ref1, ref2, ref3, ref4, ...)                     virtual void *visit(class_name_c *symbol);
+#define SYM_REF5(class_name_c, ref1, ref2, ref3, ref4, ref5, ...)               virtual void *visit(class_name_c *symbol);
+#define SYM_REF6(class_name_c, ref1, ref2, ref3, ref4, ref5, ref6, ...)         virtual void *visit(class_name_c *symbol);
 
 
 
@@ -167,6 +133,21 @@
 
 
 
+
+
+class fcall_visitor_c: public visitor_c {
+  public:
+  virtual void fcall(symbol_c *symbol) = 0;
+
+  public:
+  #include "absyntax.def"
+
+//   virtual ~fcall_visitor_c(void);
+};
+
+
+
+
 class iterator_visitor_c: public visitor_c {
   protected:
   void *visit_list(list_c *list);
@@ -178,6 +159,24 @@
 };
 
 
+
+
+
+class fcall_iterator_visitor_c: public iterator_visitor_c {
+  public:
+  virtual void prefix_fcall(symbol_c *symbol);
+  virtual void suffix_fcall(symbol_c *symbol);
+
+  public:
+  #include "absyntax.def"
+
+  virtual ~fcall_iterator_visitor_c(void);
+};
+
+
+
+
+
 class search_visitor_c: public visitor_c {
   protected:
   void *visit_list(list_c *list);
@@ -199,4 +198,11 @@
 #undef SYM_REF5
 #undef SYM_REF6
 
+
+
+
+
+
+
+
 #endif /*  _VISITOR_HH */