--- trunk/OOPSE/libBASS/BASSyacc.y 2004/01/19 16:08:21 957 +++ trunk/OOPSE/libBASS/BASSyacc.y 2004/01/29 23:01:17 998 @@ -20,11 +20,12 @@ %token IDENTIFIER %token QUOTED_STRING +%token LIST_STRING %type stmt %type stmt_list %type assignment -%type member +%type members %type constraint %type orientation %type position @@ -88,7 +89,7 @@ stmt: stmt: assignment { $$ = $1; } - | member { $$ = $1; } + | members { $$ = $1; } | constraint { $$ = $1; } | orientation { $$ = $1; } | position { $$ = $1; } @@ -106,58 +107,24 @@ member: { $$ = assign_s( $1, $3 ); } ; -member: - MEMBERS '(' INTEGER ',' INTEGER ')' ';' - { $$ = members_2( $3, $5 ); } - | MEMBERS '(' INTEGER ',' INTEGER ',' INTEGER ')' ';' - { $$ = members_3( $3, $5, $7 ); } - | MEMBERS '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')' ';' - { $$ = members_4( $3, $5, $7, $9 ); } +members: + MEMBERS LIST_STRING ';' + { $$ = members( $2 ); } ; constraint: - CONSTRAINT '(' INTEGER ')' ';' - { $$ = constraint( (double)$3 ); } - | CONSTRAINT '(' DOUBLE ')' ';' - { $$ = constraint( $3 ); } + CONSTRAINT LIST_STRING ';' + { $$ = constraint( $2 ); } ; orientation: - ORIENTATION '(' DOUBLE ',' DOUBLE ',' DOUBLE ')' ';' - { $$ = orientation( $3, $5, $7 ); } - | ORIENTATION '(' INTEGER ',' DOUBLE ',' DOUBLE ')' ';' - { $$ = orientation( (double)$3, $5, $7 ); } - | ORIENTATION '(' DOUBLE ',' INTEGER ',' DOUBLE ')' ';' - { $$ = orientation( $3, (double)$5, $7 ); } - | ORIENTATION '(' DOUBLE ',' DOUBLE ',' INTEGER ')' ';' - { $$ = orientation( $3, $5, (double)$7 ); } - | ORIENTATION '(' INTEGER ',' INTEGER ',' INTEGER ')' ';' - { $$ = orientation( (double)$3, (double)$5, (double)$7 ); } - | ORIENTATION '(' DOUBLE ',' INTEGER ',' INTEGER ')' ';' - { $$ = orientation( $3, (double)$5, (double)$7 ); } - | ORIENTATION '(' INTEGER ',' DOUBLE ',' INTEGER ')' ';' - { $$ = orientation( (double)$3, $5, (double)$7 ); } - | ORIENTATION '(' INTEGER ',' INTEGER ',' DOUBLE ')' ';' - { $$ = orientation( (double)$3, (double)$5, $7 ); } + ORIENTATION LIST_STRING ';' + { $$ = orientation( $2 ); } ; position: - POSITION '(' DOUBLE ',' DOUBLE ',' DOUBLE ')' ';' - { $$ = position( $3, $5, $7 ); } - | POSITION '(' INTEGER ',' DOUBLE ',' DOUBLE ')' ';' - { $$ = position( (double)$3, $5, $7 ); } - | POSITION '(' DOUBLE ',' INTEGER ',' DOUBLE ')' ';' - { $$ = position( $3, (double)$5, $7 ); } - | POSITION '(' DOUBLE ',' DOUBLE ',' INTEGER ')' ';' - { $$ = position( $3, $5, (double)$7 ); } - | POSITION '(' INTEGER ',' INTEGER ',' INTEGER ')' ';' - { $$ = position( (double)$3, (double)$5, (double)$7 ); } - | POSITION '(' DOUBLE ',' INTEGER ',' INTEGER ')' ';' - { $$ = position( $3, (double)$5, (double)$7 ); } - | POSITION '(' INTEGER ',' DOUBLE ',' INTEGER ')' ';' - { $$ = position( (double)$3, $5, (double)$7 ); } - | POSITION '(' INTEGER ',' INTEGER ',' DOUBLE ')' ';' - { $$ = position( (double)$3, (double)$5, $7 ); } + POSITION LIST_STRING ';' + { $$ = position( $2 ); } ; block: @@ -205,7 +172,7 @@ rigidbody_block: RIGIDBODY ARRAY_INDEX '{' stmt_list '}' { $$ = rigidbody_blk( $2, $4 ); } ; - + component_block: COMPONENT '{' stmt_list '}' { $$ = component_blk( $3 ); } @@ -224,8 +191,8 @@ int yyerror( char *err_msg ){ int yyerror( char *err_msg ){ - sprintf( painCave.errMsg, "yacc parse error in %s at line %d: %s\n", - yyfile_name->my_name, yylineno, err_msg ); + sprintf( painCave.errMsg, "OOPSE parse error in %s at line %d: %s\n", + yyfile_name->my_name, yylineno + 1, err_msg ); painCave.isFatal = 1; simError(); return 0;