--- trunk/src/mdParser/MDTreeParser.g 2006/05/17 21:51:42 963 +++ branches/development/src/mdParser/MDTreeParser.g 2012/06/06 02:18:54 1746 @@ -4,7 +4,7 @@ using namespace std; #include "io/Globals.hpp" #include "utils/StringUtils.hpp" using namespace std; -using namespace oopse; +using namespace OpenMD; } options { @@ -15,7 +15,7 @@ options options { - k = 3; + k = 1; importVocab = MD; } { @@ -35,12 +35,15 @@ statement : assignment ; statement : assignment - | componentblock - | moleculeblock - | zconstraintblock - ; + | componentblock + | moleculeblock + | zconstraintblock + | restraintblock + | flucqblock + | rnemdblock + | minimizerblock + ; - assignment : #(ASSIGNEQUAL id:ID constant[#id]) //{blockStack.top()->assign(#ID->getText(),);} ; @@ -68,7 +71,28 @@ zconstraintblock : #(ZCONSTRAINT {ZConsStamp* currZCo (assignment)* ENDBLOCK ) {blockStack.top()->validate();blockStack.pop(); currConf->addZConsStamp(currZConsStamp);} ; + +restraintblock : #(RESTRAINT {RestraintStamp* currRestraintStamp = new RestraintStamp(); blockStack.push(currRestraintStamp);} + (assignment)* + ENDBLOCK ) {blockStack.top()->validate();blockStack.pop(); currConf->addRestraintStamp(currRestraintStamp);} + ; +flucqblock : #(FLUCQ {FluctuatingChargeParameters* flucQpars = new FluctuatingChargeParameters(); blockStack.push(flucQpars);} + (assignment)* + ENDBLOCK ) {blockStack.top()->validate();blockStack.pop(); currConf->addFluctuatingChargeParameters(flucQpars);} + ; + +rnemdblock : #(RNEMD {RNEMDParameters* rnemdPars = new RNEMDParameters(); blockStack.push(rnemdPars);} + (assignment)* + ENDBLOCK ) {blockStack.top()->validate();blockStack.pop(); currConf->addRNEMDParameters(rnemdPars);} + ; + +minimizerblock : #(MINIMIZER {MinimizerParameters* minimizerPars = new MinimizerParameters(); blockStack.push(minimizerPars);} + (assignment)* + ENDBLOCK ) {blockStack.top()->validate();blockStack.pop(); currConf->addMinimizerParameters(minimizerPars);} + ; + + moleculeblock : #(MOLECULE {MoleculeStamp* currMoleculeStamp = new MoleculeStamp(); blockStack.push(currMoleculeStamp);} (moleculestatement)* ENDBLOCK ) {blockStack.top()->validate(); blockStack.pop(); currConf->addMoleculeStamp(currMoleculeStamp);} @@ -79,6 +103,7 @@ moleculestatement : assignment | bondblock | bendblock | torsionblock + | inversionblock | rigidbodyblock | cutoffgroupblock | fragmentblock @@ -166,6 +191,25 @@ torsionstatement | #(MEMBERS ivec=inttuple) {currTorsionStamp->setMembers(ivec);} ; +inversionblock : #(INVERSION {InversionStamp* currInversionStamp = new InversionStamp(); blockStack.push(currInversionStamp);} + (inversionstatement)* + ENDBLOCK ) { + blockStack.top()->validate(); + blockStack.pop(); + MoleculeStamp* currMoleculeStamp = static_cast(blockStack.top()); + currMoleculeStamp->addInversionStamp(currInversionStamp); + } + ; + +inversionstatement +{ + int icent; + InversionStamp* currInversionStamp = static_cast(blockStack.top()); +} + : assignment + | #(CENTER icent=intConst) {currInversionStamp->setCenter(icent);} + ; + rigidbodyblock { int index;