streval.h revision 7c2fbfb345896881c631598ee3852ce9ce33fb07
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* Copyright (c) 1982-2008 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * D. G. Korn
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * arithmetic expression evaluator
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* The following only is needed for const */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# define LDBL_LLONG_MAX ((Sfdouble_t)((((Sflong_t)1) << (8*sizeof(Sflong_t)-1)) -1 ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# define LDBL_ULLONG_MAX (2.*((Sfdouble_t)LDBL_LLONG_MAX))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin const char *expr;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintypedef struct _arith_
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned char *code;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin const char *expr;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Sfdouble_t (*fun)(const char**,struct lval*,int,Sfdouble_t);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define ARITH_COMP 04 /* set when compile separate from execute */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define NOASSIGN 0100 /* assignment legal with this operator */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* define error messages */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_moretokens[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_argcount[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_paren[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_badnum[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_badcolon[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_recursive[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_divzero[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_synbad[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_notlvalue[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_function[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_questcolon[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_incompatible[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_domain[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_overflow[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_singularity[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_dict[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern const char e_charconst[];
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/* function code for the convert function */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern Sfdouble_t strval(const char*,char**,Sfdouble_t(*)(const char**,struct lval*,int,Sfdouble_t),int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinextern Arith_t *arith_compile(const char*,char**,Sfdouble_t(*)(const char**,struct lval*,int,Sfdouble_t),int);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif /* !SEQPOINT */