--- trunk/src/mdParser/MDTreeParser.g 2012/08/22 02:28:28 1782 +++ trunk/src/mdParser/MDTreeParser.g 2014/04/05 20:56:01 1979 @@ -114,6 +114,7 @@ moleculestatement : assignment | rigidbodyblock | cutoffgroupblock | fragmentblock + | constraintblock ; atomblock @@ -211,10 +212,12 @@ inversionstatement inversionstatement { int icent; + vector ivec; InversionStamp* currInversionStamp = static_cast(blockStack.top()); } : assignment | #(CENTER icent=intConst) {currInversionStamp->setCenter(icent);} + | #(SATELLITES ivec=inttuple) {currInversionStamp->setSatellites(ivec);} ; rigidbodyblock @@ -272,7 +275,24 @@ fragmentstatement : assignment fragmentstatement : assignment ; + +constraintblock : #(CONSTRAINT {ConstraintStamp* currConstraintStamp = new ConstraintStamp(); blockStack.push(currConstraintStamp);} + (constraintstatement)* + ENDBLOCK ) { + blockStack.pop(); + MoleculeStamp* currMoleculeStamp = static_cast(blockStack.top()); + currMoleculeStamp->addConstraintStamp(currConstraintStamp); + } + ; +constraintstatement +{ + vector ivec; + ConstraintStamp* currConstraintStamp = static_cast(blockStack.top()); +} + : assignment + | #(MEMBERS ivec=inttuple) {currConstraintStamp->setMembers(ivec);} + ; doubleNumberTuple returns [vector dvec]