version 1.1.1.1, 1999/09/28 21:26:21
|
version 1.7, 2000/08/23 16:55:12
|
Line 1
|
Line 1
|
|
/* formula parser |
|
Copyright (C) 1992-2000 Michigan State University |
|
|
|
The CAPA system is free software; you can redistribute it and/or |
|
modify it under the terms of the GNU General Public License as |
|
published by the Free Software Foundation; either version 2 of the |
|
License, or (at your option) any later version. |
|
|
|
The CAPA system is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
General Public License for more details. |
|
|
|
You should have received a copy of the GNU General Public |
|
License along with the CAPA system; see the file COPYING. If not, |
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
Boston, MA 02111-1307, USA. |
|
|
|
As a special exception, you have permission to link this program |
|
with the TtH/TtM library and distribute executables, as long as you |
|
follow the requirements of the GNU GPL in regard to all of the |
|
software in the executable aside from TtH/TtM. |
|
*/ |
|
|
/* ====================================================== */ |
/* ====================================================== */ |
/* capaFormula.y created by Isaac Tsai @ Feb 1999 */ |
/* capaFormula.y created by Isaac Tsai @ Feb 1999 */ |
/* copyrighted by Isaac Tsai 1999 */ |
|
/* TODO: checking user inputs 2/27/99 IT */ |
/* TODO: checking user inputs 2/27/99 IT */ |
/* ====================================================== */ |
/* ====================================================== */ |
%{ |
%{ |
Line 12
|
Line 34
|
#include "capaParser.h" /* _symbol structure def */ |
#include "capaParser.h" /* _symbol structure def */ |
#include "capaCommon.h" |
#include "capaCommon.h" |
#include "capaFunction.h" |
#include "capaFunction.h" |
|
#ifdef YYSTYPE |
|
#undef YYSTYPE |
|
#endif |
|
#define YYSTYPE Symbol_p |
#include "capaToken.h" |
#include "capaToken.h" |
|
|
#ifdef __hpux |
#ifdef __hpux |
Line 36
|
Line 62
|
#define IDIV_op 5 |
#define IDIV_op 5 |
#define NOT_DEFINED_op 9 |
#define NOT_DEFINED_op 9 |
|
|
#ifdef YYSTYPE |
|
#undef YYSTYPE |
|
#endif |
|
#define YYSTYPE Symbol_p |
|
|
|
/* =============================================================== */ |
/* =============================================================== */ |
|
|
extern int Func_idx; |
extern int Func_idx; |
extern Symbol FuncStack[MAX_FUNC_NEST]; |
extern Symbol FuncStack[MAX_FUNC_NEST]; |
|
void fml_error(char *msg); |
double FormulaVal; |
double FormulaVal; |
int FormulaParseOK=1; |
int FormulaParseOK=1; |
|
|
Line 126 basic_item : F_ID F_LPAR F_RPAR
|
Line 148 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); |
Line 194 f_symbol_pow(ap,bp) Symbol *ap; Symbol *
|
Line 217 f_symbol_pow(ap,bp) Symbol *ap; Symbol *
|
case S_CONSTANT: |
case S_CONSTANT: |
default: error = 1; break; |
default: error = 1; break; |
} |
} |
|
if ((!(((double)((int)b)) == b)) && (a < 0.0)) { |
|
error = 1; |
|
} |
if (!error) { |
if (!error) { |
cp = (Symbol *)capa_malloc(sizeof(Symbol),1); |
cp = (Symbol *)capa_malloc(sizeof(Symbol),1); |
cp->s_type = R_CONSTANT; |
cp->s_type = R_CONSTANT; |