version 1.6, 2000/08/07 20:47:29
|
version 1.8, 2000/10/06 20:54:45
|
Line 105 f_expr : block
|
Line 105 f_expr : block
|
|
|
block : block F_PLUS term { $$ = symbols_op($1, $3, ADD_op); } |
block : block F_PLUS term { $$ = symbols_op($1, $3, ADD_op); } |
| block F_MINUS term { $$ = symbols_op($1, $3, SUB_op); } |
| block F_MINUS term { $$ = symbols_op($1, $3, SUB_op); } |
|
| F_MINUS term { $$ = $2; |
|
switch($2->s_type) { |
|
case I_VAR: $$ = (Symbol *)capa_malloc(sizeof(Symbol),1); |
|
$$->s_type = I_CONSTANT; |
|
case I_CONSTANT: $$->s_int = - $2->s_int; break; |
|
case R_VAR: $$ = (Symbol *)capa_malloc(sizeof(Symbol),1); |
|
$$->s_type = R_CONSTANT; |
|
case R_CONSTANT: $$->s_real = (-1.0)*($2->s_real); |
|
break; |
|
case S_VAR: |
|
case S_CONSTANT: break; |
|
default: break; |
|
} |
|
} |
| term { $$ = $1; } |
| term { $$ = $1; } |
| F_ERROR { FormulaParseOK = 0; FMLDBUG_PR1("[F_ERROR]\n"); return 0;} |
| F_ERROR { FormulaParseOK = 0; FMLDBUG_PR1("[F_ERROR]\n"); return 0;} |
| error { FormulaParseOK = 0; FMLDBUG_PR1("[ERROR]\n"); return 0; } |
| error { FormulaParseOK = 0; FMLDBUG_PR1("[ERROR]\n"); return 0; } |
Line 148 basic_item : F_ID F_LPAR F_RPAR
|
Line 162 basic_item : F_ID F_LPAR F_RPAR
|
$$ = do_function(tmp, $3->s_argc, $3->s_argp); |
$$ = do_function(tmp, $3->s_argc, $3->s_argp); |
capa_mfree(FuncStack[Func_idx].s_name); |
capa_mfree(FuncStack[Func_idx].s_name); |
free_arglist($3->s_argp); |
free_arglist($3->s_argp); |
|
$3->s_argp=NULL; |
} |
} |
} |
} |
| V_ID { FMLDBUG_PR3("[V %s = %.16g] ",$1->s_name, $1->s_real); |
| V_ID { FMLDBUG_PR3("[V %s = %.16g] ",$1->s_name, $1->s_real); |
$$ = $1; |
$$ = $1; |
} |
} |
| F_MINUS basic_item { $$ = $2; |
|
switch($2->s_type) { |
|
case I_VAR: $$ = (Symbol *)capa_malloc(sizeof(Symbol),1); |
|
$$->s_type = I_CONSTANT; |
|
case I_CONSTANT: $$->s_int = - $2->s_int; break; |
|
case R_VAR: $$ = (Symbol *)capa_malloc(sizeof(Symbol),1); |
|
$$->s_type = R_CONSTANT; |
|
case R_CONSTANT: $$->s_real = (-1.0)*($2->s_real); |
|
break; |
|
case S_VAR: |
|
case S_CONSTANT: break; |
|
default: break; |
|
} |
|
} |
|
| F_PLUS basic_item { $$ = $2; } |
| F_PLUS basic_item { $$ = $2; } |
| F_NUMBER { FMLDBUG_PR2("[F %.16g] ",$1->s_real); |
| F_NUMBER { FMLDBUG_PR2("[F %.16g] ",$1->s_real); |
$$ = $1; |
$$ = $1; |