--- 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 */