ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/mdParser/MDParser.g
(Generate patch)

Comparing trunk/src/mdParser/MDParser.g (file contents):
Revision 848 by gezelter, Wed Jan 11 23:06:08 2006 UTC vs.
Revision 2046 by gezelter, Tue Dec 2 22:11:04 2014 UTC

# Line 25 | Line 25 | tokens
25  
26   tokens
27   {
28 <  COMPONENT   = "component";
29 <  MOLECULE    = "molecule";
30 <  ZCONSTRAINT = "zconstraint";
31 <  ATOM        = "atom";
32 <  BOND        = "bond";
33 <  BEND        = "bend";
34 <  TORSION     = "torsion";
35 <  RIGIDBODY   = "rigidBody";
36 <  CUTOFFGROUP = "cutoffGroup";
37 <  FRAGMENT    = "fragment";
38 <  MEMBERS     = "members";
39 <  POSITION    = "position";
40 <  ORIENTATION = "orientation";
28 >  COMPONENT         = "component";
29 >  MOLECULE          = "molecule";
30 >  ZCONSTRAINT       = "zconstraint";
31 >  RESTRAINT         = "restraint";
32 >  ATOM              = "atom";
33 >  BOND              = "bond";
34 >  BEND              = "bend";
35 >  TORSION           = "torsion";
36 >  INVERSION         = "inversion";
37 >  RIGIDBODY         = "rigidBody";
38 >  CUTOFFGROUP       = "cutoffGroup";
39 >  CONSTRAINT        = "constraint";
40 >  DISTANCE          = "distance";
41 >  FRAGMENT          = "fragment";
42 >  MEMBERS           = "members";
43 >  CENTER            = "center";
44 >  SATELLITES        = "satellites";
45 >  POSITION          = "position";
46 >  ORIENTATION       = "orientation";
47 >  FLUCQ             = "flucQ";
48 >  RNEMD             = "RNEMD";
49 >  MINIMIZER         = "minimizer";
50 >  FIXED             = "Fixed";
51 >  HARMONIC          = "Harmonic";
52 >  CUBIC             = "Cubic";
53 >  QUARTIC           = "Quartic";
54 >  POLYNOMIAL        = "Polynomial";
55 >  MORSE             = "Morse";
56 >  GHOSTBEND         = "GhostBend";
57 >  UREYBRADLEY       = "UreyBradley";
58 >  COSINE            = "Cosine";
59 >  GHOSTTORSION      = "GhostTorsion";
60 >  CHARMM            = "Charmm";
61 >  OPLS              = "Opls";
62 >  TRAPPE            = "Trappe";
63 >  AMBERIMPROPER     = "AmberImproper";
64 >  IMPROPERCOSINE    = "ImproperCosine";
65 >  CENTRALATOMHEIGHT = "CentralAtomHeight";
66 >  DREIDING          = "Dreiding";
67 >  CHARGE            = "charge";
68    ENDBLOCK;
69   }
70  
# Line 46 | Line 73 | statement : assignment
73          ;
74  
75   statement : assignment
76 <          | componentblock
77 <          | moleculeblock
78 <          | zconstraintblock
79 <          ;
80 <            
76 >    | componentblock
77 >    | moleculeblock
78 >    | zconstraintblock
79 >    | restraintblock
80 >    | flucqblock
81 >    | rnemdblock
82 >    | minimizerblock
83 >    ;
84 >
85   assignment  : ID ASSIGNEQUAL^ constant SEMICOLON!
86              ;
87              
88   constant    : intConst
89 <                                                | floatConst
89 >                        | floatConst
90 >            | vectorConst
91              | ID
92              | StringLiteral
93              ;
# Line 65 | Line 97 | zconstraintblock  : ZCONSTRAINT^ LCURLY! (assignment)*
97      
98   zconstraintblock  : ZCONSTRAINT^ LCURLY! (assignment)* RCURLY {#RCURLY->setType(ENDBLOCK);}
99                    ;
100 +
101 + restraintblock  : RESTRAINT^ LCURLY! (assignment)* RCURLY {#RCURLY->setType(ENDBLOCK);}
102 +                  ;
103 +
104 + flucqblock  : FLUCQ^ LCURLY! (assignment)* RCURLY {#RCURLY->setType(ENDBLOCK);}
105 +    ;
106 +
107 + rnemdblock  : RNEMD^ LCURLY! (assignment)* RCURLY {#RCURLY->setType(ENDBLOCK);}
108 +    ;
109 +
110 + minimizerblock  : MINIMIZER^ LCURLY! (assignment)* RCURLY {#RCURLY->setType(ENDBLOCK);}
111 +    ;
112    
113   moleculeblock : MOLECULE^ LCURLY! (moleculestatement)*  RCURLY {#RCURLY->setType(ENDBLOCK);}
114                ;
# Line 74 | Line 118 | moleculestatement : assignment
118                    | bondblock
119                    | bendblock
120                    | torsionblock
121 +                  | inversionblock
122                    | rigidbodyblock
123                    | cutoffgroupblock
124                    | fragmentblock
125 +                  | constraintblock
126                    ;
127  
128   atomblock : ATOM^ LBRACKET! intConst RBRACKET! LCURLY! (atomstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
129            ;
130  
131   atomstatement : assignment
132 <              | POSITION^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
133 <              | ORIENTATION^  LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
134 <              ;
132 >    | POSITION^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
133 >    | ORIENTATION^  LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
134 >    | CHARGE^ LPAREN! floatConst RPAREN! SEMICOLON!
135 >    ;
136  
137                        
138   bondblock : BOND^ (LBRACKET! intConst! RBRACKET!)?  LCURLY!(bondstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
139            ;
140  
141   bondstatement : assignment
142 <              | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
143 <              ;
142 >    | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
143 >    | FIXED^ LPAREN! floatConst RPAREN! SEMICOLON!
144 >    | HARMONIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
145 >    | CUBIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
146 >    | QUARTIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
147 >    | POLYNOMIAL^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
148 >    | MORSE^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!        
149 >    ;
150  
151   bendblock : BEND^ (LBRACKET! intConst! RBRACKET!)? LCURLY!  (bendstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
152            ;
153  
154   bendstatement : assignment
155 <              | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
156 <              ;
155 >    | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
156 >    | HARMONIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
157 >    | GHOSTBEND^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
158 >    | UREYBRADLEY^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
159 >    | CUBIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
160 >    | QUARTIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
161 >    | POLYNOMIAL^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
162 >    | COSINE^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!            
163 >    ;
164  
165   torsionblock  : TORSION^ (LBRACKET! intConst! RBRACKET!)?  LCURLY!(torsionstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
166            ;
167  
168   torsionstatement  : assignment
169 <              | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
170 <              ;
169 >    | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
170 >    | GHOSTTORSION^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
171 >    | CUBIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
172 >    | QUARTIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
173 >    | POLYNOMIAL^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
174 >    | CHARMM^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
175 >    | OPLS^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
176 >    | TRAPPE^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
177 >    | HARMONIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
178 >    ;
179  
180 + inversionblock  : INVERSION^ (LBRACKET! intConst! RBRACKET!)?  LCURLY!(inversionstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
181 +    ;
182 +
183 + inversionstatement  : assignment
184 +    | CENTER^ LPAREN! intConst RPAREN! SEMICOLON!
185 +    | SATELLITES^ LPAREN! inttuple RPAREN! SEMICOLON!
186 +    | AMBERIMPROPER^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
187 +    | IMPROPERCOSINE^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
188 +    | HARMONIC^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
189 +    | CENTRALATOMHEIGHT^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
190 +    | DREIDING^ LPAREN! doubleNumberTuple RPAREN! SEMICOLON!
191 +    ;
192 +
193   rigidbodyblock  : RIGIDBODY^  LBRACKET! intConst RBRACKET! LCURLY!(rigidbodystatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
194                  ;
195  
196   rigidbodystatement  : assignment
197 <              | MEMBERS^ LPAREN!  inttuple  RPAREN! SEMICOLON!
198 <              ;
197 >    | MEMBERS^ LPAREN!  inttuple  RPAREN! SEMICOLON!
198 >    ;
199  
200   cutoffgroupblock  : CUTOFFGROUP^ (LBRACKET! intConst! RBRACKET!)? LCURLY! (cutoffgroupstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
201 <                  ;
201 >    ;
202  
203   cutoffgroupstatement  : assignment
204 <              | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
205 <              ;
204 >    | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
205 >    ;
206  
207   fragmentblock : FRAGMENT^ LBRACKET! intConst RBRACKET! LCURLY! (fragmentstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
208 <              ;
208 >    ;
209  
210   fragmentstatement : assignment
211 <              ;
211 >    ;
212  
213 + constraintblock : CONSTRAINT^ (LBRACKET! intConst! RBRACKET!)?  LCURLY!(constraintstatement)* RCURLY {#RCURLY->setType(ENDBLOCK);}
214 +    ;
215  
216 <              
217 < doubleNumberTuple   : doubleNumber (COMMA! doubleNumber)*
218 <              ;
219 <                          
216 > constraintstatement : assignment
217 >    | MEMBERS^ LPAREN! inttuple RPAREN! SEMICOLON!
218 >    ;
219 >    
220 >
221 > doubleNumberTuple   : doubleNumber (COMMA! doubleNumber)*
222 >    ;
223 >
224   inttuple      : intConst (COMMA! intConst)*
225 <              ;
226 <              
225 >    ;
226 >
227   protected
228   intConst
229 <        :  NUM_INT | NUM_LONG
230 <        ;
229 >    :
230 >        NUM_INT | NUM_LONG
231 >    ;
232  
233   protected
234 < doubleNumber  :  
235 <                (intConst | floatConst)
236 <              ;
234 > doubleNumber
235 >    :
236 >    (intConst | floatConst)
237 >    ;
238                
239   protected
240   floatConst
241 <        :
242 <          NUM_FLOAT | NUM_DOUBLE
243 <        ;
241 >   :
242 >   NUM_FLOAT | NUM_DOUBLE
243 >   ;
244 >
245 >
246 > /*
247 > protected
248 > vectorConst
249 >    :
250 >        LPAREN^ doubleNumber COMMA doubleNumber COMMA doubleNumber RPAREN
251 >    ;
252 > */
253  
254 + protected
255 + vectorConst
256 +    :
257 +        LPAREN^ doubleNumberTuple RPAREN
258 +    ;
259  
260  
261   class MDLexer extends Lexer;
# Line 257 | Line 360 | LineDirective
360    }
361      ("line")?  // this would be for if the directive started "#line"
362      (Space)+
363 <    n:Decimal { setLine(oopse::lexi_cast<int>(n->getText()) - 1); }
363 >    n:Decimal { setLine(OpenMD::lexi_cast<int>(n->getText()) - 1); }
364      (Space)+
365      (sl:StringLiteral) {std::string filename = sl->getText().substr(1,sl->getText().length()-2); observer->notify(filename);}
366      ((Space)+ Decimal)* // To support cpp flags (GNU)

Comparing trunk/src/mdParser/MDParser.g (property svn:keywords):
Revision 848 by gezelter, Wed Jan 11 23:06:08 2006 UTC vs.
Revision 2046 by gezelter, Tue Dec 2 22:11:04 2014 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines