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 |