ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/mdParser/MDTreeParser.cpp
Revision: 3430
Committed: Fri Jul 4 20:54:29 2008 UTC (16 years, 9 months ago) by cli2
File size: 37470 byte(s)
Log Message:
Changes required for Inversions and Base Atom types.  This will
break OOPSE badly for a few days or so...

File Contents

# Content
1 /* $ANTLR 2.7.4: "MDTreeParser.g" -> "MDTreeParser.cpp"$ */
2 #include "MDTreeParser.hpp"
3 #include <antlr/Token.hpp>
4 #include <antlr/AST.hpp>
5 #include <antlr/NoViableAltException.hpp>
6 #include <antlr/MismatchedTokenException.hpp>
7 #include <antlr/SemanticException.hpp>
8 #include <antlr/BitSet.hpp>
9 #line 1 "MDTreeParser.g"
10 #line 11 "MDTreeParser.cpp"
11 MDTreeParser::MDTreeParser()
12 : ANTLR_USE_NAMESPACE(antlr)TreeParser() {
13 }
14
15 void MDTreeParser::mdfile(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
16 ANTLR_USE_NAMESPACE(antlr)RefAST mdfile_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
17
18 try { // for error handling
19 { // ( ... )*
20 for (;;) {
21 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
22 _t = ASTNULL;
23 if ((_tokenSet_0.member(_t->getType()))) {
24 statement(_t);
25 _t = _retTree;
26 }
27 else {
28 goto _loop3;
29 }
30
31 }
32 _loop3:;
33 } // ( ... )*
34 #line 34 "MDTreeParser.g"
35 blockStack.top()->validate(); blockStack.pop();
36 #line 37 "MDTreeParser.cpp"
37 }
38 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
39 reportError(ex);
40 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
41 _t = _t->getNextSibling();
42 }
43 _retTree = _t;
44 }
45
46 void MDTreeParser::statement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
47 ANTLR_USE_NAMESPACE(antlr)RefAST statement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
48
49 try { // for error handling
50 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
51 _t = ASTNULL;
52 switch ( _t->getType()) {
53 case ASSIGNEQUAL:
54 {
55 assignment(_t);
56 _t = _retTree;
57 break;
58 }
59 case COMPONENT:
60 {
61 componentblock(_t);
62 _t = _retTree;
63 break;
64 }
65 case MOLECULE:
66 {
67 moleculeblock(_t);
68 _t = _retTree;
69 break;
70 }
71 case ZCONSTRAINT:
72 {
73 zconstraintblock(_t);
74 _t = _retTree;
75 break;
76 }
77 default:
78 {
79 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
80 }
81 }
82 }
83 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
84 reportError(ex);
85 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
86 _t = _t->getNextSibling();
87 }
88 _retTree = _t;
89 }
90
91 void MDTreeParser::assignment(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
92 ANTLR_USE_NAMESPACE(antlr)RefAST assignment_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
93 ANTLR_USE_NAMESPACE(antlr)RefAST id = ANTLR_USE_NAMESPACE(antlr)nullAST;
94
95 try { // for error handling
96 ANTLR_USE_NAMESPACE(antlr)RefAST __t6 = _t;
97 ANTLR_USE_NAMESPACE(antlr)RefAST tmp1_AST_in = _t;
98 match(_t,ASSIGNEQUAL);
99 _t = _t->getFirstChild();
100 id = _t;
101 match(_t,ID);
102 _t = _t->getNextSibling();
103 constant(_t,id);
104 _t = _retTree;
105 _t = __t6;
106 _t = _t->getNextSibling();
107 }
108 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
109 reportError(ex);
110 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
111 _t = _t->getNextSibling();
112 }
113 _retTree = _t;
114 }
115
116 void MDTreeParser::componentblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
117 ANTLR_USE_NAMESPACE(antlr)RefAST componentblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
118
119 try { // for error handling
120 ANTLR_USE_NAMESPACE(antlr)RefAST __t9 = _t;
121 ANTLR_USE_NAMESPACE(antlr)RefAST tmp2_AST_in = _t;
122 match(_t,COMPONENT);
123 _t = _t->getFirstChild();
124 #line 62 "MDTreeParser.g"
125 Component* currComponet = new Component(); blockStack.push(currComponet);
126 #line 127 "MDTreeParser.cpp"
127 { // ( ... )*
128 for (;;) {
129 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
130 _t = ASTNULL;
131 if ((_t->getType() == ASSIGNEQUAL)) {
132 assignment(_t);
133 _t = _retTree;
134 }
135 else {
136 goto _loop11;
137 }
138
139 }
140 _loop11:;
141 } // ( ... )*
142 ANTLR_USE_NAMESPACE(antlr)RefAST tmp3_AST_in = _t;
143 match(_t,ENDBLOCK);
144 _t = _t->getNextSibling();
145 _t = __t9;
146 _t = _t->getNextSibling();
147 #line 64 "MDTreeParser.g"
148 blockStack.top()->validate();blockStack.pop(); currConf->addComponent(currComponet);
149 #line 150 "MDTreeParser.cpp"
150 }
151 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
152 reportError(ex);
153 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
154 _t = _t->getNextSibling();
155 }
156 _retTree = _t;
157 }
158
159 void MDTreeParser::moleculeblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
160 ANTLR_USE_NAMESPACE(antlr)RefAST moleculeblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
161
162 try { // for error handling
163 ANTLR_USE_NAMESPACE(antlr)RefAST __t17 = _t;
164 ANTLR_USE_NAMESPACE(antlr)RefAST tmp4_AST_in = _t;
165 match(_t,MOLECULE);
166 _t = _t->getFirstChild();
167 #line 72 "MDTreeParser.g"
168 MoleculeStamp* currMoleculeStamp = new MoleculeStamp(); blockStack.push(currMoleculeStamp);
169 #line 170 "MDTreeParser.cpp"
170 { // ( ... )*
171 for (;;) {
172 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
173 _t = ASTNULL;
174 if ((_tokenSet_1.member(_t->getType()))) {
175 moleculestatement(_t);
176 _t = _retTree;
177 }
178 else {
179 goto _loop19;
180 }
181
182 }
183 _loop19:;
184 } // ( ... )*
185 ANTLR_USE_NAMESPACE(antlr)RefAST tmp5_AST_in = _t;
186 match(_t,ENDBLOCK);
187 _t = _t->getNextSibling();
188 _t = __t17;
189 _t = _t->getNextSibling();
190 #line 74 "MDTreeParser.g"
191 blockStack.top()->validate(); blockStack.pop(); currConf->addMoleculeStamp(currMoleculeStamp);
192 #line 193 "MDTreeParser.cpp"
193 }
194 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
195 reportError(ex);
196 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
197 _t = _t->getNextSibling();
198 }
199 _retTree = _t;
200 }
201
202 void MDTreeParser::zconstraintblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
203 ANTLR_USE_NAMESPACE(antlr)RefAST zconstraintblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
204
205 try { // for error handling
206 ANTLR_USE_NAMESPACE(antlr)RefAST __t13 = _t;
207 ANTLR_USE_NAMESPACE(antlr)RefAST tmp6_AST_in = _t;
208 match(_t,ZCONSTRAINT);
209 _t = _t->getFirstChild();
210 #line 67 "MDTreeParser.g"
211 ZConsStamp* currZConsStamp = new ZConsStamp(); blockStack.push(currZConsStamp);
212 #line 213 "MDTreeParser.cpp"
213 { // ( ... )*
214 for (;;) {
215 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
216 _t = ASTNULL;
217 if ((_t->getType() == ASSIGNEQUAL)) {
218 assignment(_t);
219 _t = _retTree;
220 }
221 else {
222 goto _loop15;
223 }
224
225 }
226 _loop15:;
227 } // ( ... )*
228 ANTLR_USE_NAMESPACE(antlr)RefAST tmp7_AST_in = _t;
229 match(_t,ENDBLOCK);
230 _t = _t->getNextSibling();
231 _t = __t13;
232 _t = _t->getNextSibling();
233 #line 69 "MDTreeParser.g"
234 blockStack.top()->validate();blockStack.pop(); currConf->addZConsStamp(currZConsStamp);
235 #line 236 "MDTreeParser.cpp"
236 }
237 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
238 reportError(ex);
239 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
240 _t = _t->getNextSibling();
241 }
242 _retTree = _t;
243 }
244
245 void MDTreeParser::constant(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
246 ANTLR_USE_NAMESPACE(antlr)RefAST id
247 ) {
248 ANTLR_USE_NAMESPACE(antlr)RefAST constant_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
249 ANTLR_USE_NAMESPACE(antlr)RefAST str1 = ANTLR_USE_NAMESPACE(antlr)nullAST;
250 ANTLR_USE_NAMESPACE(antlr)RefAST str2 = ANTLR_USE_NAMESPACE(antlr)nullAST;
251 #line 47 "MDTreeParser.g"
252
253 int ival;
254 RealType dval;
255
256 #line 257 "MDTreeParser.cpp"
257
258 try { // for error handling
259 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
260 _t = ASTNULL;
261 switch ( _t->getType()) {
262 case NUM_INT:
263 case NUM_LONG:
264 {
265 ival=intConst(_t);
266 _t = _retTree;
267 #line 52 "MDTreeParser.g"
268 blockStack.top()->assign(id->getText(), ival);
269 #line 270 "MDTreeParser.cpp"
270 break;
271 }
272 case NUM_FLOAT:
273 case NUM_DOUBLE:
274 {
275 dval=floatConst(_t);
276 _t = _retTree;
277 #line 53 "MDTreeParser.g"
278 blockStack.top()->assign(id->getText(), dval);
279 #line 280 "MDTreeParser.cpp"
280 break;
281 }
282 case ID:
283 {
284 str1 = _t;
285 match(_t,ID);
286 _t = _t->getNextSibling();
287 #line 54 "MDTreeParser.g"
288 blockStack.top()->assign(id->getText(), str1->getText());
289 #line 290 "MDTreeParser.cpp"
290 break;
291 }
292 case StringLiteral:
293 {
294 str2 = _t;
295 match(_t,StringLiteral);
296 _t = _t->getNextSibling();
297 #line 55 "MDTreeParser.g"
298 std::string s = str2->getText();
299 s = s.substr(1, s.length()-2);
300 blockStack.top()->assign(id->getText(),s);
301
302 #line 303 "MDTreeParser.cpp"
303 break;
304 }
305 default:
306 {
307 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
308 }
309 }
310 }
311 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
312 reportError(ex);
313 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
314 _t = _t->getNextSibling();
315 }
316 _retTree = _t;
317 }
318
319 int MDTreeParser::intConst(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
320 #line 262 "MDTreeParser.g"
321 int ival;
322 #line 323 "MDTreeParser.cpp"
323 ANTLR_USE_NAMESPACE(antlr)RefAST intConst_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
324 ANTLR_USE_NAMESPACE(antlr)RefAST i1 = ANTLR_USE_NAMESPACE(antlr)nullAST;
325 ANTLR_USE_NAMESPACE(antlr)RefAST i2 = ANTLR_USE_NAMESPACE(antlr)nullAST;
326
327 try { // for error handling
328 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
329 _t = ASTNULL;
330 switch ( _t->getType()) {
331 case NUM_INT:
332 {
333 i1 = _t;
334 match(_t,NUM_INT);
335 _t = _t->getNextSibling();
336 #line 263 "MDTreeParser.g"
337 ival = lexi_cast<int>(i1->getText());
338 #line 339 "MDTreeParser.cpp"
339 break;
340 }
341 case NUM_LONG:
342 {
343 i2 = _t;
344 match(_t,NUM_LONG);
345 _t = _t->getNextSibling();
346 #line 264 "MDTreeParser.g"
347 ival = lexi_cast<int>(i2->getText());
348 #line 349 "MDTreeParser.cpp"
349 break;
350 }
351 default:
352 {
353 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
354 }
355 }
356 }
357 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
358 reportError(ex);
359 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
360 _t = _t->getNextSibling();
361 }
362 _retTree = _t;
363 return ival;
364 }
365
366 RealType MDTreeParser::floatConst(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
367 #line 276 "MDTreeParser.g"
368 RealType dval;
369 #line 370 "MDTreeParser.cpp"
370 ANTLR_USE_NAMESPACE(antlr)RefAST floatConst_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
371 ANTLR_USE_NAMESPACE(antlr)RefAST d1 = ANTLR_USE_NAMESPACE(antlr)nullAST;
372 ANTLR_USE_NAMESPACE(antlr)RefAST d2 = ANTLR_USE_NAMESPACE(antlr)nullAST;
373
374 try { // for error handling
375 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
376 _t = ASTNULL;
377 switch ( _t->getType()) {
378 case NUM_FLOAT:
379 {
380 d1 = _t;
381 match(_t,NUM_FLOAT);
382 _t = _t->getNextSibling();
383 #line 277 "MDTreeParser.g"
384 dval = lexi_cast<RealType>(d1->getText());
385 #line 386 "MDTreeParser.cpp"
386 break;
387 }
388 case NUM_DOUBLE:
389 {
390 d2 = _t;
391 match(_t,NUM_DOUBLE);
392 _t = _t->getNextSibling();
393 #line 278 "MDTreeParser.g"
394 dval = lexi_cast<RealType>(d2->getText());
395 #line 396 "MDTreeParser.cpp"
396 break;
397 }
398 default:
399 {
400 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
401 }
402 }
403 }
404 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
405 reportError(ex);
406 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
407 _t = _t->getNextSibling();
408 }
409 _retTree = _t;
410 return dval;
411 }
412
413 void MDTreeParser::moleculestatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
414 ANTLR_USE_NAMESPACE(antlr)RefAST moleculestatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
415
416 try { // for error handling
417 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
418 _t = ASTNULL;
419 switch ( _t->getType()) {
420 case ASSIGNEQUAL:
421 {
422 assignment(_t);
423 _t = _retTree;
424 break;
425 }
426 case ATOM:
427 {
428 atomblock(_t);
429 _t = _retTree;
430 break;
431 }
432 case BOND:
433 {
434 bondblock(_t);
435 _t = _retTree;
436 break;
437 }
438 case BEND:
439 {
440 bendblock(_t);
441 _t = _retTree;
442 break;
443 }
444 case TORSION:
445 {
446 torsionblock(_t);
447 _t = _retTree;
448 break;
449 }
450 case INVERSION:
451 {
452 inversionblock(_t);
453 _t = _retTree;
454 break;
455 }
456 case RIGIDBODY:
457 {
458 rigidbodyblock(_t);
459 _t = _retTree;
460 break;
461 }
462 case CUTOFFGROUP:
463 {
464 cutoffgroupblock(_t);
465 _t = _retTree;
466 break;
467 }
468 case FRAGMENT:
469 {
470 fragmentblock(_t);
471 _t = _retTree;
472 break;
473 }
474 default:
475 {
476 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
477 }
478 }
479 }
480 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
481 reportError(ex);
482 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
483 _t = _t->getNextSibling();
484 }
485 _retTree = _t;
486 }
487
488 void MDTreeParser::atomblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
489 ANTLR_USE_NAMESPACE(antlr)RefAST atomblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
490 #line 88 "MDTreeParser.g"
491
492 int index;
493
494 #line 495 "MDTreeParser.cpp"
495
496 try { // for error handling
497 ANTLR_USE_NAMESPACE(antlr)RefAST __t22 = _t;
498 ANTLR_USE_NAMESPACE(antlr)RefAST tmp8_AST_in = _t;
499 match(_t,ATOM);
500 _t = _t->getFirstChild();
501 index=intConst(_t);
502 _t = _retTree;
503 #line 92 "MDTreeParser.g"
504 AtomStamp* currAtomStamp = new AtomStamp(index); blockStack.push(currAtomStamp);
505 #line 506 "MDTreeParser.cpp"
506 { // ( ... )*
507 for (;;) {
508 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
509 _t = ASTNULL;
510 if ((_t->getType() == POSITION || _t->getType() == ORIENTATION || _t->getType() == ASSIGNEQUAL)) {
511 atomstatement(_t);
512 _t = _retTree;
513 }
514 else {
515 goto _loop24;
516 }
517
518 }
519 _loop24:;
520 } // ( ... )*
521 ANTLR_USE_NAMESPACE(antlr)RefAST tmp9_AST_in = _t;
522 match(_t,ENDBLOCK);
523 _t = _t->getNextSibling();
524 _t = __t22;
525 _t = _t->getNextSibling();
526 #line 94 "MDTreeParser.g"
527
528 blockStack.top()->validate();
529 blockStack.pop();
530 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
531 currMoleculeStamp->addAtomStamp(currAtomStamp);
532
533 #line 534 "MDTreeParser.cpp"
534 }
535 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
536 reportError(ex);
537 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
538 _t = _t->getNextSibling();
539 }
540 _retTree = _t;
541 }
542
543 void MDTreeParser::bondblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
544 ANTLR_USE_NAMESPACE(antlr)RefAST bondblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
545
546 try { // for error handling
547 ANTLR_USE_NAMESPACE(antlr)RefAST __t29 = _t;
548 ANTLR_USE_NAMESPACE(antlr)RefAST tmp10_AST_in = _t;
549 match(_t,BOND);
550 _t = _t->getFirstChild();
551 #line 114 "MDTreeParser.g"
552 BondStamp* currBondStamp = new BondStamp(); blockStack.push(currBondStamp);
553 #line 554 "MDTreeParser.cpp"
554 { // ( ... )*
555 for (;;) {
556 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
557 _t = ASTNULL;
558 if ((_t->getType() == MEMBERS || _t->getType() == ASSIGNEQUAL)) {
559 bondstatement(_t);
560 _t = _retTree;
561 }
562 else {
563 goto _loop31;
564 }
565
566 }
567 _loop31:;
568 } // ( ... )*
569 ANTLR_USE_NAMESPACE(antlr)RefAST tmp11_AST_in = _t;
570 match(_t,ENDBLOCK);
571 _t = _t->getNextSibling();
572 _t = __t29;
573 _t = _t->getNextSibling();
574 #line 116 "MDTreeParser.g"
575
576 blockStack.pop();
577 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
578 currMoleculeStamp->addBondStamp(currBondStamp);
579
580 #line 581 "MDTreeParser.cpp"
581 }
582 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
583 reportError(ex);
584 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
585 _t = _t->getNextSibling();
586 }
587 _retTree = _t;
588 }
589
590 void MDTreeParser::bendblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
591 ANTLR_USE_NAMESPACE(antlr)RefAST bendblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
592
593 try { // for error handling
594 ANTLR_USE_NAMESPACE(antlr)RefAST __t35 = _t;
595 ANTLR_USE_NAMESPACE(antlr)RefAST tmp12_AST_in = _t;
596 match(_t,BEND);
597 _t = _t->getFirstChild();
598 #line 132 "MDTreeParser.g"
599 BendStamp* currBendStamp = new BendStamp(); blockStack.push(currBendStamp);
600 #line 601 "MDTreeParser.cpp"
601 { // ( ... )*
602 for (;;) {
603 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
604 _t = ASTNULL;
605 if ((_t->getType() == MEMBERS || _t->getType() == ASSIGNEQUAL)) {
606 bendstatement(_t);
607 _t = _retTree;
608 }
609 else {
610 goto _loop37;
611 }
612
613 }
614 _loop37:;
615 } // ( ... )*
616 ANTLR_USE_NAMESPACE(antlr)RefAST tmp13_AST_in = _t;
617 match(_t,ENDBLOCK);
618 _t = _t->getNextSibling();
619 _t = __t35;
620 _t = _t->getNextSibling();
621 #line 134 "MDTreeParser.g"
622
623 blockStack.top()->validate();
624 blockStack.pop();
625 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
626 currMoleculeStamp->addBendStamp(currBendStamp);
627
628 #line 629 "MDTreeParser.cpp"
629 }
630 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
631 reportError(ex);
632 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
633 _t = _t->getNextSibling();
634 }
635 _retTree = _t;
636 }
637
638 void MDTreeParser::torsionblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
639 ANTLR_USE_NAMESPACE(antlr)RefAST torsionblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
640
641 try { // for error handling
642 ANTLR_USE_NAMESPACE(antlr)RefAST __t41 = _t;
643 ANTLR_USE_NAMESPACE(antlr)RefAST tmp14_AST_in = _t;
644 match(_t,TORSION);
645 _t = _t->getFirstChild();
646 #line 151 "MDTreeParser.g"
647 TorsionStamp* currTorsionStamp = new TorsionStamp(); blockStack.push(currTorsionStamp);
648 #line 649 "MDTreeParser.cpp"
649 { // ( ... )*
650 for (;;) {
651 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
652 _t = ASTNULL;
653 if ((_t->getType() == MEMBERS || _t->getType() == ASSIGNEQUAL)) {
654 torsionstatement(_t);
655 _t = _retTree;
656 }
657 else {
658 goto _loop43;
659 }
660
661 }
662 _loop43:;
663 } // ( ... )*
664 ANTLR_USE_NAMESPACE(antlr)RefAST tmp15_AST_in = _t;
665 match(_t,ENDBLOCK);
666 _t = _t->getNextSibling();
667 _t = __t41;
668 _t = _t->getNextSibling();
669 #line 153 "MDTreeParser.g"
670
671 blockStack.top()->validate();
672 blockStack.pop();
673 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
674 currMoleculeStamp->addTorsionStamp(currTorsionStamp);
675
676 #line 677 "MDTreeParser.cpp"
677 }
678 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
679 reportError(ex);
680 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
681 _t = _t->getNextSibling();
682 }
683 _retTree = _t;
684 }
685
686 void MDTreeParser::inversionblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
687 ANTLR_USE_NAMESPACE(antlr)RefAST inversionblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
688
689 try { // for error handling
690 ANTLR_USE_NAMESPACE(antlr)RefAST __t47 = _t;
691 ANTLR_USE_NAMESPACE(antlr)RefAST tmp16_AST_in = _t;
692 match(_t,INVERSION);
693 _t = _t->getFirstChild();
694 #line 170 "MDTreeParser.g"
695 InversionStamp* currInversionStamp = new InversionStamp(); blockStack.push(currInversionStamp);
696 #line 697 "MDTreeParser.cpp"
697 { // ( ... )*
698 for (;;) {
699 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
700 _t = ASTNULL;
701 if ((_t->getType() == CENTER || _t->getType() == ASSIGNEQUAL)) {
702 inversionstatement(_t);
703 _t = _retTree;
704 }
705 else {
706 goto _loop49;
707 }
708
709 }
710 _loop49:;
711 } // ( ... )*
712 ANTLR_USE_NAMESPACE(antlr)RefAST tmp17_AST_in = _t;
713 match(_t,ENDBLOCK);
714 _t = _t->getNextSibling();
715 _t = __t47;
716 _t = _t->getNextSibling();
717 #line 172 "MDTreeParser.g"
718
719 blockStack.top()->validate();
720 blockStack.pop();
721 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
722 currMoleculeStamp->addInversionStamp(currInversionStamp);
723
724 #line 725 "MDTreeParser.cpp"
725 }
726 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
727 reportError(ex);
728 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
729 _t = _t->getNextSibling();
730 }
731 _retTree = _t;
732 }
733
734 void MDTreeParser::rigidbodyblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
735 ANTLR_USE_NAMESPACE(antlr)RefAST rigidbodyblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
736 #line 189 "MDTreeParser.g"
737
738 int index;
739
740 #line 741 "MDTreeParser.cpp"
741
742 try { // for error handling
743 ANTLR_USE_NAMESPACE(antlr)RefAST __t53 = _t;
744 ANTLR_USE_NAMESPACE(antlr)RefAST tmp18_AST_in = _t;
745 match(_t,RIGIDBODY);
746 _t = _t->getFirstChild();
747 index=intConst(_t);
748 _t = _retTree;
749 #line 193 "MDTreeParser.g"
750 RigidBodyStamp* currRigidBodyStamp = new RigidBodyStamp(index); blockStack.push(currRigidBodyStamp);
751 #line 752 "MDTreeParser.cpp"
752 { // ( ... )*
753 for (;;) {
754 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
755 _t = ASTNULL;
756 if ((_t->getType() == MEMBERS || _t->getType() == ASSIGNEQUAL)) {
757 rigidbodystatement(_t);
758 _t = _retTree;
759 }
760 else {
761 goto _loop55;
762 }
763
764 }
765 _loop55:;
766 } // ( ... )*
767 ANTLR_USE_NAMESPACE(antlr)RefAST tmp19_AST_in = _t;
768 match(_t,ENDBLOCK);
769 _t = _t->getNextSibling();
770 _t = __t53;
771 _t = _t->getNextSibling();
772 #line 195 "MDTreeParser.g"
773
774 blockStack.top()->validate();
775 blockStack.pop();
776 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
777 currMoleculeStamp->addRigidBodyStamp(currRigidBodyStamp);
778
779 #line 780 "MDTreeParser.cpp"
780 }
781 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
782 reportError(ex);
783 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
784 _t = _t->getNextSibling();
785 }
786 _retTree = _t;
787 }
788
789 void MDTreeParser::cutoffgroupblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
790 ANTLR_USE_NAMESPACE(antlr)RefAST cutoffgroupblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
791
792 try { // for error handling
793 ANTLR_USE_NAMESPACE(antlr)RefAST __t59 = _t;
794 ANTLR_USE_NAMESPACE(antlr)RefAST tmp20_AST_in = _t;
795 match(_t,CUTOFFGROUP);
796 _t = _t->getFirstChild();
797 #line 212 "MDTreeParser.g"
798 CutoffGroupStamp* currCutoffGroupStamp = new CutoffGroupStamp(); blockStack.push(currCutoffGroupStamp);
799 #line 800 "MDTreeParser.cpp"
800 { // ( ... )*
801 for (;;) {
802 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
803 _t = ASTNULL;
804 if ((_t->getType() == MEMBERS || _t->getType() == ASSIGNEQUAL)) {
805 cutoffgroupstatement(_t);
806 _t = _retTree;
807 }
808 else {
809 goto _loop61;
810 }
811
812 }
813 _loop61:;
814 } // ( ... )*
815 ANTLR_USE_NAMESPACE(antlr)RefAST tmp21_AST_in = _t;
816 match(_t,ENDBLOCK);
817 _t = _t->getNextSibling();
818 _t = __t59;
819 _t = _t->getNextSibling();
820 #line 214 "MDTreeParser.g"
821
822 blockStack.top()->validate();
823 blockStack.pop();
824 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
825 currMoleculeStamp->addCutoffGroupStamp(currCutoffGroupStamp);
826
827 #line 828 "MDTreeParser.cpp"
828 }
829 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
830 reportError(ex);
831 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
832 _t = _t->getNextSibling();
833 }
834 _retTree = _t;
835 }
836
837 void MDTreeParser::fragmentblock(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
838 ANTLR_USE_NAMESPACE(antlr)RefAST fragmentblock_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
839 #line 231 "MDTreeParser.g"
840 int ival;
841 #line 842 "MDTreeParser.cpp"
842
843 try { // for error handling
844 ANTLR_USE_NAMESPACE(antlr)RefAST __t65 = _t;
845 ANTLR_USE_NAMESPACE(antlr)RefAST tmp22_AST_in = _t;
846 match(_t,FRAGMENT);
847 _t = _t->getFirstChild();
848 ival=intConst(_t);
849 _t = _retTree;
850 #line 232 "MDTreeParser.g"
851 FragmentStamp* currFragmentStamp = new FragmentStamp(ival); blockStack.push(currFragmentStamp);
852 #line 853 "MDTreeParser.cpp"
853 { // ( ... )*
854 for (;;) {
855 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
856 _t = ASTNULL;
857 if ((_t->getType() == ASSIGNEQUAL)) {
858 fragmentstatement(_t);
859 _t = _retTree;
860 }
861 else {
862 goto _loop67;
863 }
864
865 }
866 _loop67:;
867 } // ( ... )*
868 ANTLR_USE_NAMESPACE(antlr)RefAST tmp23_AST_in = _t;
869 match(_t,ENDBLOCK);
870 _t = _t->getNextSibling();
871 _t = __t65;
872 _t = _t->getNextSibling();
873 #line 234 "MDTreeParser.g"
874
875 blockStack.top()->validate();
876 blockStack.pop();
877 MoleculeStamp* currMoleculeStamp = static_cast<MoleculeStamp*>(blockStack.top());
878 currMoleculeStamp->addFragmentStamp(currFragmentStamp);
879
880 #line 881 "MDTreeParser.cpp"
881 }
882 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
883 reportError(ex);
884 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
885 _t = _t->getNextSibling();
886 }
887 _retTree = _t;
888 }
889
890 void MDTreeParser::atomstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
891 ANTLR_USE_NAMESPACE(antlr)RefAST atomstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
892 #line 102 "MDTreeParser.g"
893
894 vector<RealType> dvec;
895 AtomStamp* currAtomStamp = static_cast<AtomStamp*>(blockStack.top());
896
897
898 #line 899 "MDTreeParser.cpp"
899
900 try { // for error handling
901 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
902 _t = ASTNULL;
903 switch ( _t->getType()) {
904 case ASSIGNEQUAL:
905 {
906 assignment(_t);
907 _t = _retTree;
908 break;
909 }
910 case POSITION:
911 {
912 ANTLR_USE_NAMESPACE(antlr)RefAST __t26 = _t;
913 ANTLR_USE_NAMESPACE(antlr)RefAST tmp24_AST_in = _t;
914 match(_t,POSITION);
915 _t = _t->getFirstChild();
916 dvec=doubleNumberTuple(_t);
917 _t = _retTree;
918 _t = __t26;
919 _t = _t->getNextSibling();
920 #line 109 "MDTreeParser.g"
921 currAtomStamp->setPosition(dvec);
922 #line 923 "MDTreeParser.cpp"
923 break;
924 }
925 case ORIENTATION:
926 {
927 ANTLR_USE_NAMESPACE(antlr)RefAST __t27 = _t;
928 ANTLR_USE_NAMESPACE(antlr)RefAST tmp25_AST_in = _t;
929 match(_t,ORIENTATION);
930 _t = _t->getFirstChild();
931 dvec=doubleNumberTuple(_t);
932 _t = _retTree;
933 _t = __t27;
934 _t = _t->getNextSibling();
935 #line 110 "MDTreeParser.g"
936 currAtomStamp->setOrientation(dvec);
937 #line 938 "MDTreeParser.cpp"
938 break;
939 }
940 default:
941 {
942 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
943 }
944 }
945 }
946 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
947 reportError(ex);
948 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
949 _t = _t->getNextSibling();
950 }
951 _retTree = _t;
952 }
953
954 vector<RealType> MDTreeParser::doubleNumberTuple(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
955 #line 247 "MDTreeParser.g"
956 vector<RealType> dvec;
957 #line 958 "MDTreeParser.cpp"
958 ANTLR_USE_NAMESPACE(antlr)RefAST doubleNumberTuple_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
959 #line 247 "MDTreeParser.g"
960
961 RealType dval;
962
963 #line 964 "MDTreeParser.cpp"
964
965 try { // for error handling
966 { // ( ... )+
967 int _cnt71=0;
968 for (;;) {
969 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
970 _t = ASTNULL;
971 if (((_t->getType() >= NUM_INT && _t->getType() <= NUM_DOUBLE))) {
972 dval=doubleNumber(_t);
973 _t = _retTree;
974 #line 251 "MDTreeParser.g"
975 dvec.push_back(dval);
976 #line 977 "MDTreeParser.cpp"
977 }
978 else {
979 if ( _cnt71>=1 ) { goto _loop71; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);}
980 }
981
982 _cnt71++;
983 }
984 _loop71:;
985 } // ( ... )+
986 }
987 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
988 reportError(ex);
989 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
990 _t = _t->getNextSibling();
991 }
992 _retTree = _t;
993 return dvec;
994 }
995
996 void MDTreeParser::bondstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
997 ANTLR_USE_NAMESPACE(antlr)RefAST bondstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
998 #line 123 "MDTreeParser.g"
999
1000 vector<int> ivec;
1001 BondStamp* currBondStamp = static_cast<BondStamp*>(blockStack.top());
1002
1003 #line 1004 "MDTreeParser.cpp"
1004
1005 try { // for error handling
1006 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1007 _t = ASTNULL;
1008 switch ( _t->getType()) {
1009 case ASSIGNEQUAL:
1010 {
1011 assignment(_t);
1012 _t = _retTree;
1013 break;
1014 }
1015 case MEMBERS:
1016 {
1017 ANTLR_USE_NAMESPACE(antlr)RefAST __t33 = _t;
1018 ANTLR_USE_NAMESPACE(antlr)RefAST tmp26_AST_in = _t;
1019 match(_t,MEMBERS);
1020 _t = _t->getFirstChild();
1021 ivec=inttuple(_t);
1022 _t = _retTree;
1023 _t = __t33;
1024 _t = _t->getNextSibling();
1025 #line 129 "MDTreeParser.g"
1026 currBondStamp->setMembers(ivec);
1027 #line 1028 "MDTreeParser.cpp"
1028 break;
1029 }
1030 default:
1031 {
1032 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1033 }
1034 }
1035 }
1036 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1037 reportError(ex);
1038 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1039 _t = _t->getNextSibling();
1040 }
1041 _retTree = _t;
1042 }
1043
1044 vector<int> MDTreeParser::inttuple(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1045 #line 254 "MDTreeParser.g"
1046 vector<int> ivec;
1047 #line 1048 "MDTreeParser.cpp"
1048 ANTLR_USE_NAMESPACE(antlr)RefAST inttuple_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1049 #line 254 "MDTreeParser.g"
1050
1051 int ival;
1052
1053 #line 1054 "MDTreeParser.cpp"
1054
1055 try { // for error handling
1056 { // ( ... )+
1057 int _cnt74=0;
1058 for (;;) {
1059 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1060 _t = ASTNULL;
1061 if ((_t->getType() == NUM_INT || _t->getType() == NUM_LONG)) {
1062 ival=intConst(_t);
1063 _t = _retTree;
1064 #line 258 "MDTreeParser.g"
1065 ivec.push_back(ival);
1066 #line 1067 "MDTreeParser.cpp"
1067 }
1068 else {
1069 if ( _cnt74>=1 ) { goto _loop74; } else {throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);}
1070 }
1071
1072 _cnt74++;
1073 }
1074 _loop74:;
1075 } // ( ... )+
1076 }
1077 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1078 reportError(ex);
1079 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1080 _t = _t->getNextSibling();
1081 }
1082 _retTree = _t;
1083 return ivec;
1084 }
1085
1086 void MDTreeParser::bendstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1087 ANTLR_USE_NAMESPACE(antlr)RefAST bendstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1088 #line 142 "MDTreeParser.g"
1089
1090 vector<int> ivec;
1091 BendStamp* currBendStamp = static_cast<BendStamp*>(blockStack.top());
1092
1093 #line 1094 "MDTreeParser.cpp"
1094
1095 try { // for error handling
1096 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1097 _t = ASTNULL;
1098 switch ( _t->getType()) {
1099 case ASSIGNEQUAL:
1100 {
1101 assignment(_t);
1102 _t = _retTree;
1103 break;
1104 }
1105 case MEMBERS:
1106 {
1107 ANTLR_USE_NAMESPACE(antlr)RefAST __t39 = _t;
1108 ANTLR_USE_NAMESPACE(antlr)RefAST tmp27_AST_in = _t;
1109 match(_t,MEMBERS);
1110 _t = _t->getFirstChild();
1111 ivec=inttuple(_t);
1112 _t = _retTree;
1113 _t = __t39;
1114 _t = _t->getNextSibling();
1115 #line 148 "MDTreeParser.g"
1116 currBendStamp->setMembers(ivec);
1117 #line 1118 "MDTreeParser.cpp"
1118 break;
1119 }
1120 default:
1121 {
1122 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1123 }
1124 }
1125 }
1126 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1127 reportError(ex);
1128 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1129 _t = _t->getNextSibling();
1130 }
1131 _retTree = _t;
1132 }
1133
1134 void MDTreeParser::torsionstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1135 ANTLR_USE_NAMESPACE(antlr)RefAST torsionstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1136 #line 161 "MDTreeParser.g"
1137
1138 vector<int> ivec;
1139 TorsionStamp* currTorsionStamp = static_cast<TorsionStamp*>(blockStack.top());
1140
1141 #line 1142 "MDTreeParser.cpp"
1142
1143 try { // for error handling
1144 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1145 _t = ASTNULL;
1146 switch ( _t->getType()) {
1147 case ASSIGNEQUAL:
1148 {
1149 assignment(_t);
1150 _t = _retTree;
1151 break;
1152 }
1153 case MEMBERS:
1154 {
1155 ANTLR_USE_NAMESPACE(antlr)RefAST __t45 = _t;
1156 ANTLR_USE_NAMESPACE(antlr)RefAST tmp28_AST_in = _t;
1157 match(_t,MEMBERS);
1158 _t = _t->getFirstChild();
1159 ivec=inttuple(_t);
1160 _t = _retTree;
1161 _t = __t45;
1162 _t = _t->getNextSibling();
1163 #line 167 "MDTreeParser.g"
1164 currTorsionStamp->setMembers(ivec);
1165 #line 1166 "MDTreeParser.cpp"
1166 break;
1167 }
1168 default:
1169 {
1170 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1171 }
1172 }
1173 }
1174 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1175 reportError(ex);
1176 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1177 _t = _t->getNextSibling();
1178 }
1179 _retTree = _t;
1180 }
1181
1182 void MDTreeParser::inversionstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1183 ANTLR_USE_NAMESPACE(antlr)RefAST inversionstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1184 #line 180 "MDTreeParser.g"
1185
1186 int icent;
1187 InversionStamp* currInversionStamp = static_cast<InversionStamp*>(blockStack.top());
1188
1189 #line 1190 "MDTreeParser.cpp"
1190
1191 try { // for error handling
1192 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1193 _t = ASTNULL;
1194 switch ( _t->getType()) {
1195 case ASSIGNEQUAL:
1196 {
1197 assignment(_t);
1198 _t = _retTree;
1199 break;
1200 }
1201 case CENTER:
1202 {
1203 ANTLR_USE_NAMESPACE(antlr)RefAST __t51 = _t;
1204 ANTLR_USE_NAMESPACE(antlr)RefAST tmp29_AST_in = _t;
1205 match(_t,CENTER);
1206 _t = _t->getFirstChild();
1207 icent=intConst(_t);
1208 _t = _retTree;
1209 _t = __t51;
1210 _t = _t->getNextSibling();
1211 #line 186 "MDTreeParser.g"
1212 currInversionStamp->setCenter(icent);
1213 #line 1214 "MDTreeParser.cpp"
1214 break;
1215 }
1216 default:
1217 {
1218 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1219 }
1220 }
1221 }
1222 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1223 reportError(ex);
1224 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1225 _t = _t->getNextSibling();
1226 }
1227 _retTree = _t;
1228 }
1229
1230 void MDTreeParser::rigidbodystatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1231 ANTLR_USE_NAMESPACE(antlr)RefAST rigidbodystatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1232 #line 203 "MDTreeParser.g"
1233
1234 vector<int> ivec;
1235 RigidBodyStamp* currRigidBodyStamp = static_cast<RigidBodyStamp*>(blockStack.top());
1236
1237 #line 1238 "MDTreeParser.cpp"
1238
1239 try { // for error handling
1240 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1241 _t = ASTNULL;
1242 switch ( _t->getType()) {
1243 case ASSIGNEQUAL:
1244 {
1245 assignment(_t);
1246 _t = _retTree;
1247 break;
1248 }
1249 case MEMBERS:
1250 {
1251 ANTLR_USE_NAMESPACE(antlr)RefAST __t57 = _t;
1252 ANTLR_USE_NAMESPACE(antlr)RefAST tmp30_AST_in = _t;
1253 match(_t,MEMBERS);
1254 _t = _t->getFirstChild();
1255 ivec=inttuple(_t);
1256 _t = _retTree;
1257 _t = __t57;
1258 _t = _t->getNextSibling();
1259 #line 209 "MDTreeParser.g"
1260 currRigidBodyStamp->setMembers(ivec);
1261 #line 1262 "MDTreeParser.cpp"
1262 break;
1263 }
1264 default:
1265 {
1266 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1267 }
1268 }
1269 }
1270 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1271 reportError(ex);
1272 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1273 _t = _t->getNextSibling();
1274 }
1275 _retTree = _t;
1276 }
1277
1278 void MDTreeParser::cutoffgroupstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1279 ANTLR_USE_NAMESPACE(antlr)RefAST cutoffgroupstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1280 #line 222 "MDTreeParser.g"
1281
1282 vector<int> ivec;
1283 CutoffGroupStamp* currCutoffGroupStamp = static_cast<CutoffGroupStamp*>(blockStack.top());
1284
1285 #line 1286 "MDTreeParser.cpp"
1286
1287 try { // for error handling
1288 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1289 _t = ASTNULL;
1290 switch ( _t->getType()) {
1291 case ASSIGNEQUAL:
1292 {
1293 assignment(_t);
1294 _t = _retTree;
1295 break;
1296 }
1297 case MEMBERS:
1298 {
1299 ANTLR_USE_NAMESPACE(antlr)RefAST __t63 = _t;
1300 ANTLR_USE_NAMESPACE(antlr)RefAST tmp31_AST_in = _t;
1301 match(_t,MEMBERS);
1302 _t = _t->getFirstChild();
1303 ivec=inttuple(_t);
1304 _t = _retTree;
1305 _t = __t63;
1306 _t = _t->getNextSibling();
1307 #line 228 "MDTreeParser.g"
1308 currCutoffGroupStamp->setMembers(ivec);
1309 #line 1310 "MDTreeParser.cpp"
1310 break;
1311 }
1312 default:
1313 {
1314 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1315 }
1316 }
1317 }
1318 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1319 reportError(ex);
1320 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1321 _t = _t->getNextSibling();
1322 }
1323 _retTree = _t;
1324 }
1325
1326 void MDTreeParser::fragmentstatement(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1327 ANTLR_USE_NAMESPACE(antlr)RefAST fragmentstatement_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1328
1329 try { // for error handling
1330 assignment(_t);
1331 _t = _retTree;
1332 }
1333 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1334 reportError(ex);
1335 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1336 _t = _t->getNextSibling();
1337 }
1338 _retTree = _t;
1339 }
1340
1341 RealType MDTreeParser::doubleNumber(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
1342 #line 268 "MDTreeParser.g"
1343 RealType dval;
1344 #line 1345 "MDTreeParser.cpp"
1345 ANTLR_USE_NAMESPACE(antlr)RefAST doubleNumber_AST_in = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1346 ANTLR_USE_NAMESPACE(antlr)RefAST ic = ANTLR_USE_NAMESPACE(antlr)nullAST;
1347 ANTLR_USE_NAMESPACE(antlr)RefAST fc = ANTLR_USE_NAMESPACE(antlr)nullAST;
1348
1349 try { // for error handling
1350 if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
1351 _t = ASTNULL;
1352 switch ( _t->getType()) {
1353 case NUM_INT:
1354 case NUM_LONG:
1355 {
1356 ic = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1357 intConst(_t);
1358 _t = _retTree;
1359 #line 270 "MDTreeParser.g"
1360 dval = lexi_cast<RealType>(ic->getText());
1361 #line 1362 "MDTreeParser.cpp"
1362 break;
1363 }
1364 case NUM_FLOAT:
1365 case NUM_DOUBLE:
1366 {
1367 fc = (_t == ASTNULL) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
1368 floatConst(_t);
1369 _t = _retTree;
1370 #line 271 "MDTreeParser.g"
1371 dval = lexi_cast<RealType>(fc->getText());
1372 #line 1373 "MDTreeParser.cpp"
1373 break;
1374 }
1375 default:
1376 {
1377 throw ANTLR_USE_NAMESPACE(antlr)NoViableAltException(_t);
1378 }
1379 }
1380 }
1381 catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
1382 reportError(ex);
1383 if ( _t != ANTLR_USE_NAMESPACE(antlr)nullAST )
1384 _t = _t->getNextSibling();
1385 }
1386 _retTree = _t;
1387 return dval;
1388 }
1389
1390 void MDTreeParser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& )
1391 {
1392 }
1393 const char* MDTreeParser::tokenNames[] = {
1394 "<0>",
1395 "EOF",
1396 "<2>",
1397 "NULL_TREE_LOOKAHEAD",
1398 "\"component\"",
1399 "\"molecule\"",
1400 "\"zconstraint\"",
1401 "\"atom\"",
1402 "\"bond\"",
1403 "\"bend\"",
1404 "\"torsion\"",
1405 "\"inversion\"",
1406 "\"rigidBody\"",
1407 "\"cutoffGroup\"",
1408 "\"fragment\"",
1409 "\"members\"",
1410 "\"center\"",
1411 "\"position\"",
1412 "\"orientation\"",
1413 "ENDBLOCK",
1414 "ID",
1415 "ASSIGNEQUAL",
1416 "SEMICOLON",
1417 "StringLiteral",
1418 "LCURLY",
1419 "RCURLY",
1420 "LBRACKET",
1421 "RBRACKET",
1422 "LPAREN",
1423 "RPAREN",
1424 "COMMA",
1425 "NUM_INT",
1426 "NUM_LONG",
1427 "NUM_FLOAT",
1428 "NUM_DOUBLE",
1429 "DOT",
1430 "COLON",
1431 "QUESTIONMARK",
1432 "Whitespace",
1433 "Comment",
1434 "CPPComment",
1435 "a line directive",
1436 "LineDirective",
1437 "Space",
1438 "CharLiteral",
1439 "EndOfLine",
1440 "Escape",
1441 "Vocabulary",
1442 "Digit",
1443 "Decimal",
1444 "HEX_DIGIT",
1445 "EXPONENT",
1446 "FLOAT_SUFFIX",
1447 0
1448 };
1449
1450 const unsigned long MDTreeParser::_tokenSet_0_data_[] = { 2097264UL, 0UL, 0UL, 0UL };
1451 // "component" "molecule" "zconstraint" ASSIGNEQUAL
1452 const ANTLR_USE_NAMESPACE(antlr)BitSet MDTreeParser::_tokenSet_0(_tokenSet_0_data_,4);
1453 const unsigned long MDTreeParser::_tokenSet_1_data_[] = { 2129792UL, 0UL, 0UL, 0UL };
1454 // "atom" "bond" "bend" "torsion" "inversion" "rigidBody" "cutoffGroup"
1455 // "fragment" ASSIGNEQUAL
1456 const ANTLR_USE_NAMESPACE(antlr)BitSet MDTreeParser::_tokenSet_1(_tokenSet_1_data_,4);
1457
1458