| 1 |
|
|
| 2 |
|
/* define some general tokens */ |
| 3 |
|
|
| 4 |
< |
%token MOLECULE ATOM BOND BEND TORSION POSITION MEMBERS MEMBER CONSTRAINT |
| 4 |
> |
%token MOLECULE ATOM BOND BEND TORSION POSITION MEMBERS CONSTRAINT |
| 5 |
|
%token COMPONENT START_INDEX DEFINED ORIENTATION ZCONSTRAINT RIGIDBODY |
| 6 |
|
|
| 7 |
|
/* more advanced tokens */ |
| 20 |
|
|
| 21 |
|
%token <s_ptr> IDENTIFIER |
| 22 |
|
%token <s_ptr> QUOTED_STRING |
| 23 |
+ |
%token <s_ptr> LIST_STRING |
| 24 |
|
|
| 25 |
|
%type <node_ptr> stmt |
| 26 |
|
%type <node_ptr> stmt_list |
| 38 |
|
%type <node_ptr> component_block |
| 39 |
|
%type <node_ptr> zconstraint_block |
| 40 |
|
%type <node_ptr> rigidbody_block |
| 40 |
– |
%type <node_ptr> member_block |
| 41 |
|
|
| 42 |
|
|
| 43 |
|
%{ |
| 108 |
|
; |
| 109 |
|
|
| 110 |
|
members: |
| 111 |
< |
MEMBERS '(' INTEGER ',' INTEGER ')' ';' |
| 112 |
< |
{ $$ = members_2( $3, $5 ); } |
| 113 |
< |
| MEMBERS '(' INTEGER ',' INTEGER ',' INTEGER ')' ';' |
| 114 |
< |
{ $$ = members_3( $3, $5, $7 ); } |
| 115 |
< |
| MEMBERS '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')' ';' |
| 116 |
< |
{ $$ = members_4( $3, $5, $7, $9 ); } |
| 111 |
> |
MEMBERS LIST_STRING ';' |
| 112 |
> |
{ $$ = members( $2 ); } |
| 113 |
|
; |
| 114 |
|
|
| 115 |
|
constraint: |
| 116 |
< |
CONSTRAINT '(' INTEGER ')' ';' |
| 117 |
< |
{ $$ = constraint( (double)$3 ); } |
| 122 |
< |
| CONSTRAINT '(' DOUBLE ')' ';' |
| 123 |
< |
{ $$ = constraint( $3 ); } |
| 116 |
> |
CONSTRAINT LIST_STRING ';' |
| 117 |
> |
{ $$ = constraint( $2 ); } |
| 118 |
|
; |
| 119 |
|
|
| 120 |
|
orientation: |
| 121 |
< |
ORIENTATION '(' DOUBLE ',' DOUBLE ',' DOUBLE ')' ';' |
| 122 |
< |
{ $$ = orientation( $3, $5, $7 ); } |
| 129 |
< |
| ORIENTATION '(' INTEGER ',' DOUBLE ',' DOUBLE ')' ';' |
| 130 |
< |
{ $$ = orientation( (double)$3, $5, $7 ); } |
| 131 |
< |
| ORIENTATION '(' DOUBLE ',' INTEGER ',' DOUBLE ')' ';' |
| 132 |
< |
{ $$ = orientation( $3, (double)$5, $7 ); } |
| 133 |
< |
| ORIENTATION '(' DOUBLE ',' DOUBLE ',' INTEGER ')' ';' |
| 134 |
< |
{ $$ = orientation( $3, $5, (double)$7 ); } |
| 135 |
< |
| ORIENTATION '(' INTEGER ',' INTEGER ',' INTEGER ')' ';' |
| 136 |
< |
{ $$ = orientation( (double)$3, (double)$5, (double)$7 ); } |
| 137 |
< |
| ORIENTATION '(' DOUBLE ',' INTEGER ',' INTEGER ')' ';' |
| 138 |
< |
{ $$ = orientation( $3, (double)$5, (double)$7 ); } |
| 139 |
< |
| ORIENTATION '(' INTEGER ',' DOUBLE ',' INTEGER ')' ';' |
| 140 |
< |
{ $$ = orientation( (double)$3, $5, (double)$7 ); } |
| 141 |
< |
| ORIENTATION '(' INTEGER ',' INTEGER ',' DOUBLE ')' ';' |
| 142 |
< |
{ $$ = orientation( (double)$3, (double)$5, $7 ); } |
| 121 |
> |
ORIENTATION LIST_STRING ';' |
| 122 |
> |
{ $$ = orientation( $2 ); } |
| 123 |
|
; |
| 124 |
|
|
| 125 |
|
position: |
| 126 |
< |
POSITION '(' DOUBLE ',' DOUBLE ',' DOUBLE ')' ';' |
| 127 |
< |
{ $$ = position( $3, $5, $7 ); } |
| 148 |
< |
| POSITION '(' INTEGER ',' DOUBLE ',' DOUBLE ')' ';' |
| 149 |
< |
{ $$ = position( (double)$3, $5, $7 ); } |
| 150 |
< |
| POSITION '(' DOUBLE ',' INTEGER ',' DOUBLE ')' ';' |
| 151 |
< |
{ $$ = position( $3, (double)$5, $7 ); } |
| 152 |
< |
| POSITION '(' DOUBLE ',' DOUBLE ',' INTEGER ')' ';' |
| 153 |
< |
{ $$ = position( $3, $5, (double)$7 ); } |
| 154 |
< |
| POSITION '(' INTEGER ',' INTEGER ',' INTEGER ')' ';' |
| 155 |
< |
{ $$ = position( (double)$3, (double)$5, (double)$7 ); } |
| 156 |
< |
| POSITION '(' DOUBLE ',' INTEGER ',' INTEGER ')' ';' |
| 157 |
< |
{ $$ = position( $3, (double)$5, (double)$7 ); } |
| 158 |
< |
| POSITION '(' INTEGER ',' DOUBLE ',' INTEGER ')' ';' |
| 159 |
< |
{ $$ = position( (double)$3, $5, (double)$7 ); } |
| 160 |
< |
| POSITION '(' INTEGER ',' INTEGER ',' DOUBLE ')' ';' |
| 161 |
< |
{ $$ = position( (double)$3, (double)$5, $7 ); } |
| 126 |
> |
POSITION LIST_STRING ';' |
| 127 |
> |
{ $$ = position( $2 ); } |
| 128 |
|
; |
| 129 |
|
|
| 130 |
|
block: |
| 135 |
|
| torsion_block { $$ = $1; } |
| 136 |
|
| zconstraint_block { $$ = $1; } |
| 137 |
|
| rigidbody_block { $$ = $1; } |
| 172 |
– |
| member_block { $$ = $1; } |
| 138 |
|
| component_block { $$ = $1; } |
| 139 |
|
; |
| 140 |
|
|
| 172 |
|
RIGIDBODY ARRAY_INDEX '{' stmt_list '}' |
| 173 |
|
{ $$ = rigidbody_blk( $2, $4 ); } |
| 174 |
|
; |
| 175 |
< |
|
| 211 |
< |
member_block: |
| 212 |
< |
MEMBER ARRAY_INDEX '{' stmt_list '}' |
| 213 |
< |
{ $$ = member_blk( $2, $4 ); } |
| 214 |
< |
; |
| 215 |
< |
|
| 175 |
> |
|
| 176 |
|
component_block: |
| 177 |
|
COMPONENT '{' stmt_list '}' |
| 178 |
|
{ $$ = component_blk( $3 ); } |
| 191 |
|
|
| 192 |
|
int yyerror( char *err_msg ){ |
| 193 |
|
|
| 194 |
< |
sprintf( painCave.errMsg, "yacc parse error in %s at line %d: %s\n", |
| 195 |
< |
yyfile_name->my_name, yylineno, err_msg ); |
| 194 |
> |
sprintf( painCave.errMsg, "OOPSE parse error in %s at line %d: %s\n", |
| 195 |
> |
yyfile_name->my_name, yylineno + 1, err_msg ); |
| 196 |
|
painCave.isFatal = 1; |
| 197 |
|
simError(); |
| 198 |
|
return 0; |