1 #ifndef TEST2AST_H_HPP_GUARD_
2 #define TEST2AST_H_HPP_GUARD_
3 #include <string>
4 #include <list>
5 #include "test2visitor.h"
6 
7 class node
8 {
9 	public:
~node()10 		virtual ~node() {}
11 		virtual void accept( Visitor * ) const = 0;
12 };
13 
14 class grammar: public node
15 {
16 	public:
grammar()17 		grammar()
18 			{}
~grammar()19 		virtual ~grammar() {}
20 
21 };
22 
23 class grammar_production : public grammar
24 {
25 	public:
grammar_production(production * pNewproduction1)26 		grammar_production(
27 			production* pNewproduction1
28 		)
29 			: grammar()
30 			, m_pproduction1(pNewproduction1)
31 		{}
32 
33 		virtual ~grammar_production();
34 
accept(Visitor * v)35 		void accept( Visitor* v ) const
36 		{
37 			v->visit_grammar_production( this );
38 		}
39 
40 		production* m_pproduction1;
41 };
42 
43 class grammar_grammar_production : public grammar
44 {
45 	public:
grammar_grammar_production(grammar * pNewgrammar1,production * pNewproduction2)46 		grammar_grammar_production(
47 			grammar* pNewgrammar1,
48 			production* pNewproduction2
49 		)
50 			: grammar()
51 			, m_pgrammar1(pNewgrammar1)
52 			, m_pproduction2(pNewproduction2)
53 		{}
54 
55 		virtual ~grammar_grammar_production();
56 
accept(Visitor * v)57 		void accept( Visitor* v ) const
58 		{
59 			v->visit_grammar_grammar_production( this );
60 		}
61 
62 		grammar* m_pgrammar1;
63 		production* m_pproduction2;
64 };
65 
66 class grammar_grammar_COMMENT : public grammar
67 {
68 	public:
grammar_grammar_COMMENT(grammar * pNewgrammar1,std::string * pNewCOMMENT2)69 		grammar_grammar_COMMENT(
70 			grammar* pNewgrammar1,
71 			std::string* pNewCOMMENT2
72 		)
73 			: grammar()
74 			, m_pgrammar1(pNewgrammar1)
75 			, m_pCOMMENT2(pNewCOMMENT2)
76 		{}
77 
78 		virtual ~grammar_grammar_COMMENT();
79 
accept(Visitor * v)80 		void accept( Visitor* v ) const
81 		{
82 			v->visit_grammar_grammar_COMMENT( this );
83 		}
84 
85 		grammar* m_pgrammar1;
86 		std::string* m_pCOMMENT2;
87 };
88 
89 class production : public node
90 {
91 	public:
production(lhs * pNewlhs1,std::list<* > * pNewexpressionListList2,std::string * pNewTERMINATOR3)92 		production(
93 			lhs* pNewlhs1,
94 			std::list< * >* pNewexpressionListList2,
95 			std::string* pNewTERMINATOR3
96 		)
97 			: m_plhs1(pNewlhs1)
98 			, m_pexpressionListList2(pNewexpressionListList2)
99 			, m_pTERMINATOR3(pNewTERMINATOR3)
100 		{}
101 
102 		virtual ~production();
103 
accept(Visitor * v)104 		void accept( Visitor* v ) const
105 		{
106 			v->visit_production( this );
107 		}
108 
109 		lhs* m_plhs1;
110 		std::list< * >* m_pexpressionListList2;
111 		std::string* m_pTERMINATOR3;
112 };
113 
114 class lhs : public node
115 {
116 	public:
lhs(std::string * pNewIDENT1,std::string * pNewSEPARATOR2)117 		lhs(
118 			std::string* pNewIDENT1,
119 			std::string* pNewSEPARATOR2
120 		)
121 			: m_pIDENT1(pNewIDENT1)
122 			, m_pSEPARATOR2(pNewSEPARATOR2)
123 		{}
124 
125 		virtual ~lhs();
126 
accept(Visitor * v)127 		void accept( Visitor* v ) const
128 		{
129 			v->visit_lhs( this );
130 		}
131 
132 		std::string* m_pIDENT1;
133 		std::string* m_pSEPARATOR2;
134 };
135 
136 class expression: public node
137 {
138 	public:
expression()139 		expression()
140 			{}
~expression()141 		virtual ~expression() {}
142 
143 };
144 
145 class expression_base : public expression
146 {
147 	public:
expression_base(base * pNewbase1)148 		expression_base(
149 			base* pNewbase1
150 		)
151 			: expression()
152 			, m_pbase1(pNewbase1)
153 		{}
154 
155 		virtual ~expression_base();
156 
accept(Visitor * v)157 		void accept( Visitor* v ) const
158 		{
159 			v->visit_expression_base( this );
160 		}
161 
162 		base* m_pbase1;
163 };
164 
165 class expression_base_OPT : public expression
166 {
167 	public:
expression_base_OPT(base * pNewbase1,std::string * pNewOPT2)168 		expression_base_OPT(
169 			base* pNewbase1,
170 			std::string* pNewOPT2
171 		)
172 			: expression()
173 			, m_pbase1(pNewbase1)
174 			, m_pOPT2(pNewOPT2)
175 		{}
176 
177 		virtual ~expression_base_OPT();
178 
accept(Visitor * v)179 		void accept( Visitor* v ) const
180 		{
181 			v->visit_expression_base_OPT( this );
182 		}
183 
184 		base* m_pbase1;
185 		std::string* m_pOPT2;
186 };
187 
188 class expression_base_STAR : public expression
189 {
190 	public:
expression_base_STAR(base * pNewbase1,std::string * pNewSTAR2)191 		expression_base_STAR(
192 			base* pNewbase1,
193 			std::string* pNewSTAR2
194 		)
195 			: expression()
196 			, m_pbase1(pNewbase1)
197 			, m_pSTAR2(pNewSTAR2)
198 		{}
199 
200 		virtual ~expression_base_STAR();
201 
accept(Visitor * v)202 		void accept( Visitor* v ) const
203 		{
204 			v->visit_expression_base_STAR( this );
205 		}
206 
207 		base* m_pbase1;
208 		std::string* m_pSTAR2;
209 };
210 
211 class expression_base_PLUS : public expression
212 {
213 	public:
expression_base_PLUS(base * pNewbase1,std::string * pNewPLUS2)214 		expression_base_PLUS(
215 			base* pNewbase1,
216 			std::string* pNewPLUS2
217 		)
218 			: expression()
219 			, m_pbase1(pNewbase1)
220 			, m_pPLUS2(pNewPLUS2)
221 		{}
222 
223 		virtual ~expression_base_PLUS();
224 
accept(Visitor * v)225 		void accept( Visitor* v ) const
226 		{
227 			v->visit_expression_base_PLUS( this );
228 		}
229 
230 		base* m_pbase1;
231 		std::string* m_pPLUS2;
232 };
233 
234 class expression_COMMENT : public expression
235 {
236 	public:
expression_COMMENT(std::string * pNewCOMMENT1)237 		expression_COMMENT(
238 			std::string* pNewCOMMENT1
239 		)
240 			: expression()
241 			, m_pCOMMENT1(pNewCOMMENT1)
242 		{}
243 
244 		virtual ~expression_COMMENT();
245 
accept(Visitor * v)246 		void accept( Visitor* v ) const
247 		{
248 			v->visit_expression_COMMENT( this );
249 		}
250 
251 		std::string* m_pCOMMENT1;
252 };
253 
254 class base: public node
255 {
256 	public:
base()257 		base()
258 			{}
~base()259 		virtual ~base() {}
260 
261 };
262 
263 class base_LITERAL : public base
264 {
265 	public:
base_LITERAL(std::string * pNewLITERAL1)266 		base_LITERAL(
267 			std::string* pNewLITERAL1
268 		)
269 			: base()
270 			, m_pLITERAL1(pNewLITERAL1)
271 		{}
272 
273 		virtual ~base_LITERAL();
274 
accept(Visitor * v)275 		void accept( Visitor* v ) const
276 		{
277 			v->visit_base_LITERAL( this );
278 		}
279 
280 		std::string* m_pLITERAL1;
281 };
282 
283 class base_IDENT : public base
284 {
285 	public:
base_IDENT(std::string * pNewIDENT1)286 		base_IDENT(
287 			std::string* pNewIDENT1
288 		)
289 			: base()
290 			, m_pIDENT1(pNewIDENT1)
291 		{}
292 
293 		virtual ~base_IDENT();
294 
accept(Visitor * v)295 		void accept( Visitor* v ) const
296 		{
297 			v->visit_base_IDENT( this );
298 		}
299 
300 		std::string* m_pIDENT1;
301 };
302 
303 class base_LPAREN_expressionList_RPAREN : public base
304 {
305 	public:
base_LPAREN_expressionList_RPAREN(std::string * pNewLPAREN1,std::list<* > * pNewexpressionList2,std::string * pNewRPAREN3)306 		base_LPAREN_expressionList_RPAREN(
307 			std::string* pNewLPAREN1,
308 			std::list< * >* pNewexpressionList2,
309 			std::string* pNewRPAREN3
310 		)
311 			: base()
312 			, m_pLPAREN1(pNewLPAREN1)
313 			, m_pexpressionList2(pNewexpressionList2)
314 			, m_pRPAREN3(pNewRPAREN3)
315 		{}
316 
317 		virtual ~base_LPAREN_expressionList_RPAREN();
318 
accept(Visitor * v)319 		void accept( Visitor* v ) const
320 		{
321 			v->visit_base_LPAREN_expressionList_RPAREN( this );
322 		}
323 
324 		std::string* m_pLPAREN1;
325 		std::list< * >* m_pexpressionList2;
326 		std::string* m_pRPAREN3;
327 };
328 
329 class base_LPAREN_alternation_RPAREN : public base
330 {
331 	public:
base_LPAREN_alternation_RPAREN(std::string * pNewLPAREN1,alternation * pNewalternation2,std::string * pNewRPAREN3)332 		base_LPAREN_alternation_RPAREN(
333 			std::string* pNewLPAREN1,
334 			alternation* pNewalternation2,
335 			std::string* pNewRPAREN3
336 		)
337 			: base()
338 			, m_pLPAREN1(pNewLPAREN1)
339 			, m_palternation2(pNewalternation2)
340 			, m_pRPAREN3(pNewRPAREN3)
341 		{}
342 
343 		virtual ~base_LPAREN_alternation_RPAREN();
344 
accept(Visitor * v)345 		void accept( Visitor* v ) const
346 		{
347 			v->visit_base_LPAREN_alternation_RPAREN( this );
348 		}
349 
350 		std::string* m_pLPAREN1;
351 		alternation* m_palternation2;
352 		std::string* m_pRPAREN3;
353 };
354 
355 class alternation: public node
356 {
357 	public:
alternation()358 		alternation()
359 			{}
~alternation()360 		virtual ~alternation() {}
361 
362 };
363 
364 class alternation_expression_OR_expression : public alternation
365 {
366 	public:
alternation_expression_OR_expression(expression * pNewexpression1,std::string * pNewOR2,expression * pNewexpression3)367 		alternation_expression_OR_expression(
368 			expression* pNewexpression1,
369 			std::string* pNewOR2,
370 			expression* pNewexpression3
371 		)
372 			: alternation()
373 			, m_pexpression1(pNewexpression1)
374 			, m_pOR2(pNewOR2)
375 			, m_pexpression3(pNewexpression3)
376 		{}
377 
378 		virtual ~alternation_expression_OR_expression();
379 
accept(Visitor * v)380 		void accept( Visitor* v ) const
381 		{
382 			v->visit_alternation_expression_OR_expression( this );
383 		}
384 
385 		expression* m_pexpression1;
386 		std::string* m_pOR2;
387 		expression* m_pexpression3;
388 };
389 
390 class alternation_alternation_OR_expression : public alternation
391 {
392 	public:
alternation_alternation_OR_expression(alternation * pNewalternation1,std::string * pNewOR2,expression * pNewexpression3)393 		alternation_alternation_OR_expression(
394 			alternation* pNewalternation1,
395 			std::string* pNewOR2,
396 			expression* pNewexpression3
397 		)
398 			: alternation()
399 			, m_palternation1(pNewalternation1)
400 			, m_pOR2(pNewOR2)
401 			, m_pexpression3(pNewexpression3)
402 		{}
403 
404 		virtual ~alternation_alternation_OR_expression();
405 
accept(Visitor * v)406 		void accept( Visitor* v ) const
407 		{
408 			v->visit_alternation_alternation_OR_expression( this );
409 		}
410 
411 		alternation* m_palternation1;
412 		std::string* m_pOR2;
413 		expression* m_pexpression3;
414 };
415 
~grammar_production()416 inline grammar_production::~grammar_production()
417 {
418 	delete m_pproduction1;
419 }
420 
~grammar_grammar_production()421 inline grammar_grammar_production::~grammar_grammar_production()
422 {
423 	delete m_pgrammar1;
424 	delete m_pproduction2;
425 }
426 
~grammar_grammar_COMMENT()427 inline grammar_grammar_COMMENT::~grammar_grammar_COMMENT()
428 {
429 	delete m_pgrammar1;
430 	delete m_pCOMMENT2;
431 }
432 
~production()433 inline production::~production()
434 {
435 	delete m_plhs1;
436 	while(!m_pexpressionListList2->empty())
437 	{
438 		delete m_pexpressionListList2->front();
439 		m_pexpressionListList2->pop_front();
440 	}
441 	delete m_pexpressionListList2;
442 	delete m_pTERMINATOR3;
443 }
444 
~lhs()445 inline lhs::~lhs()
446 {
447 	delete m_pIDENT1;
448 	delete m_pSEPARATOR2;
449 }
450 
~expression_base()451 inline expression_base::~expression_base()
452 {
453 	delete m_pbase1;
454 }
455 
~expression_base_OPT()456 inline expression_base_OPT::~expression_base_OPT()
457 {
458 	delete m_pbase1;
459 	delete m_pOPT2;
460 }
461 
~expression_base_STAR()462 inline expression_base_STAR::~expression_base_STAR()
463 {
464 	delete m_pbase1;
465 	delete m_pSTAR2;
466 }
467 
~expression_base_PLUS()468 inline expression_base_PLUS::~expression_base_PLUS()
469 {
470 	delete m_pbase1;
471 	delete m_pPLUS2;
472 }
473 
~expression_COMMENT()474 inline expression_COMMENT::~expression_COMMENT()
475 {
476 	delete m_pCOMMENT1;
477 }
478 
~base_LITERAL()479 inline base_LITERAL::~base_LITERAL()
480 {
481 	delete m_pLITERAL1;
482 }
483 
~base_IDENT()484 inline base_IDENT::~base_IDENT()
485 {
486 	delete m_pIDENT1;
487 }
488 
~base_LPAREN_expressionList_RPAREN()489 inline base_LPAREN_expressionList_RPAREN::~base_LPAREN_expressionList_RPAREN()
490 {
491 	delete m_pLPAREN1;
492 	while(!m_pexpressionList2->empty())
493 	{
494 		delete m_pexpressionList2->front();
495 		m_pexpressionList2->pop_front();
496 	}
497 	delete m_pexpressionList2;
498 	delete m_pRPAREN3;
499 }
500 
~base_LPAREN_alternation_RPAREN()501 inline base_LPAREN_alternation_RPAREN::~base_LPAREN_alternation_RPAREN()
502 {
503 	delete m_pLPAREN1;
504 	delete m_palternation2;
505 	delete m_pRPAREN3;
506 }
507 
~alternation_expression_OR_expression()508 inline alternation_expression_OR_expression::~alternation_expression_OR_expression()
509 {
510 	delete m_pexpression1;
511 	delete m_pOR2;
512 	delete m_pexpression3;
513 }
514 
~alternation_alternation_OR_expression()515 inline alternation_alternation_OR_expression::~alternation_alternation_OR_expression()
516 {
517 	delete m_palternation1;
518 	delete m_pOR2;
519 	delete m_pexpression3;
520 }
521 
522 #endif
523