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