ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/BASSyacc.y
(Generate patch)

Comparing trunk/OOPSE/libBASS/BASSyacc.y (file contents):
Revision 378 by mmeineke, Fri Mar 21 17:42:12 2003 UTC vs.
Revision 988 by gezelter, Tue Jan 27 19:37:48 2004 UTC

# Line 1 | Line 1
1  
2   /* define some general tokens */
3  
4 < %token MOLECULE ATOM BOND BEND TORSION POSITION MEMBERS CONSTRAINT
5 < %token COMPONENT START_INDEX DEFINED ORIENTATION
4 > %token MOLECULE ATOM BOND BEND TORSION POSITION MEMBERS MEMBER CONSTRAINT
5 > %token COMPONENT START_INDEX DEFINED ORIENTATION ZCONSTRAINT RIGIDBODY
6  
7   /* more advanced tokens */
8  
# Line 11 | Line 11
11    double d_val;              /* double value  */
12    char * s_ptr;              /* string pointer */
13    struct node_tag* node_ptr; /* pointer to the statement node tree */
14  struct integer_list_tag* il_ptr; /*pointer to a int_list item */
14   }
15  
16   %token <i_val> INTEGER
# Line 25 | Line 24
24   %type <node_ptr> stmt
25   %type <node_ptr> stmt_list
26   %type <node_ptr> assignment
27 < %type <node_ptr> member
27 > %type <node_ptr> members
28   %type <node_ptr> constraint
29   %type <node_ptr> orientation
30   %type <node_ptr> position
# Line 36 | Line 35
35   %type <node_ptr> bend_block
36   %type <node_ptr> torsion_block
37   %type <node_ptr> component_block
38 < %type <node_ptr> start_index
39 <
40 < %type <il_ptr> int_list
38 > %type <node_ptr> zconstraint_block
39 > %type <node_ptr> rigidbody_block
40 > %type <node_ptr> member_block
41  
42  
43   %{
# Line 46 | Line 45
45   #include <stdio.h>
46   #include <string.h>
47  
48 < #include <node_list.h>
49 < #include <make_nodes.h>
50 < #include <parse_tree.h>
51 < #include <simError.h>
48 > #include "node_list.h"
49 > #include "make_nodes.h"
50 > #include "parse_tree.h"
51 > #include "simError.h"
52   #ifdef IS_MPI
53   #define __is_lex__
54 < #include <mpiBASS.h>
54 > #include "mpiBASS.h"
55   #endif
56  
57   extern int yylineno;
# Line 90 | Line 89 | stmt:
89  
90   stmt:
91            assignment            { $$ = $1; }
92 <        | member                { $$ = $1; }
92 >        | members               { $$ = $1; }
93          | constraint            { $$ = $1; }
94          | orientation           { $$ = $1; }
95          | position              { $$ = $1; }
97        | start_index           { $$ = $1; }
96          | block                 { $$ = $1; }
97          ;
98  
# Line 109 | Line 107 | member:
107                                  { $$ = assign_s( $1, $3 ); }
108          ;
109  
110 < member:
110 > members:
111            MEMBERS '(' INTEGER ',' INTEGER ')' ';'
112                                  { $$ = members_2( $3, $5 ); }
113          | MEMBERS '(' INTEGER ',' INTEGER ',' INTEGER ')' ';'
# Line 163 | Line 161 | start_index:
161                                  { $$ = position( (double)$3, (double)$5, $7 ); }
162          ;
163  
166 start_index:
167        START_INDEX int_list ';'
168                                { $$ = start_index( $2 ); }
169        ;
170
164   block:
165            molecule_block        { $$ = $1; }
166          | atom_block            { $$ = $1; }
167          | bond_block            { $$ = $1; }
168          | bend_block            { $$ = $1; }
169          | torsion_block         { $$ = $1; }
170 +        | zconstraint_block     { $$ = $1; }
171 +        | rigidbody_block       { $$ = $1; }
172 +        | member_block          { $$ = $1; }
173          | component_block       { $$ = $1; }
174          ;
175  
# Line 201 | Line 197 | torsion_block:
197          TORSION ARRAY_INDEX '{' stmt_list '}'
198                                  { $$ = torsion_blk( $2, $4 ); }
199          ;
200 +
201 + zconstraint_block:
202 +        ZCONSTRAINT ARRAY_INDEX '{' stmt_list '}'
203 +                                { $$ = zconstraint_blk( $2, $4 ); }
204 +        ;
205 +
206 + rigidbody_block:
207 +        RIGIDBODY ARRAY_INDEX '{' stmt_list '}'
208 +                                { $$ = rigidbody_blk( $2, $4 ); }
209 +        ;
210          
211 + member_block:
212 +        MEMBER ARRAY_INDEX '{' stmt_list '}'
213 +                                { $$ = member_blk( $2, $4 ); }
214 +        ;
215 +        
216   component_block:
217          COMPONENT '{' stmt_list '}'
218                                  { $$ = component_blk( $3 ); }
219          ;
220 <        
220 >
221   stmt_list:
222            stmt                  { $$ = $1; }
223          | stmt_list stmt        {
# Line 216 | Line 227 | int_list:
227                                  }
228          ;
229  
219 int_list:
220          '<' INTEGER           { $$ = il_node( $2 ); }
221        | int_list ',' INTEGER  {
222                                  struct integer_list_tag* temp;
223                                  temp = il_node( $3 );
224                                  $1->next = temp;
225                                  temp->prev = $1;
226                                  $$ = temp;
227                                }
228        | int_list '>'          { $$ = il_top( $1 ); }
229        ;
230
230   %%
231  
232   int yyerror( char *err_msg ){

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines