/*********************************************************************** * * * This software is part of the ast package * * Copyright (c) 1982-2010 AT&T Intellectual Property * * and is licensed under the * * Common Public License, Version 1.0 * * by AT&T Intellectual Property * * * * A copy of the License is available at * * http://www.opensource.org/licenses/cpl1.0.txt * * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * * * * Information and Software Systems Research * * AT&T Research * * Florham Park NJ * * * * David Korn * * * ***********************************************************************/ #pragma prototyped /* * data for string evaluator library */ #include #include "FEATURE/options" #include "streval.h" const unsigned char strval_precedence[35] = /* opcode precedence,assignment */ { /* DEFAULT */ MAXPREC|NOASSIGN, /* DONE */ 0|NOASSIGN|RASSOC, /* NEQ */ 10|NOASSIGN, /* NOT */ MAXPREC|NOASSIGN, /* MOD */ 14, /* ANDAND */ 6|NOASSIGN|SEQPOINT, /* AND */ 9|NOFLOAT, /* LPAREN */ MAXPREC|NOASSIGN|SEQPOINT, /* RPAREN */ 1|NOASSIGN|RASSOC|SEQPOINT, /* POW */ 14|NOASSIGN|RASSOC, /* TIMES */ 14, /* PLUSPLUS */ 15|NOASSIGN|NOFLOAT|SEQPOINT, /* PLUS */ 13, /* COMMA */ 1|NOASSIGN|SEQPOINT, /* MINUSMINUS */ 15|NOASSIGN|NOFLOAT|SEQPOINT, /* MINUS */ 13, /* DIV */ 14, /* LSHIFT */ 12|NOFLOAT, /* LE */ 11|NOASSIGN, /* LT */ 11|NOASSIGN, /* EQ */ 10|NOASSIGN, /* ASSIGNMENT */ 2|RASSOC, /* COLON */ 0|NOASSIGN, /* RSHIFT */ 12|NOFLOAT, /* GE */ 11|NOASSIGN, /* GT */ 11|NOASSIGN, /* QCOLON */ 3|NOASSIGN|SEQPOINT, /* QUEST */ 3|NOASSIGN|SEQPOINT|RASSOC, /* XOR */ 8|NOFLOAT, /* OROR */ 5|NOASSIGN|SEQPOINT, /* OR */ 7|NOFLOAT, /* DEFAULT */ MAXPREC|NOASSIGN, /* DEFAULT */ MAXPREC|NOASSIGN, /* DEFAULT */ MAXPREC|NOASSIGN, /* DEFAULT */ MAXPREC|NOASSIGN }; /* * This is for arithmetic expressions */ const char strval_states[64] = { A_EOF, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, 0, 0, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, 0, A_NOT, 0, A_REG, A_REG, A_MOD, A_AND, A_LIT, A_LPAR, A_RPAR, A_TIMES,A_PLUS, A_COMMA,A_MINUS,A_DOT, A_DIV, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_COLON,A_REG, A_LT, A_ASSIGN,A_GT, A_QUEST }; const char e_argcount[] = "%s: function has wrong number of arguments"; const char e_badnum[] = "%s: bad number"; const char e_moretokens[] = "%s: more tokens expected"; const char e_paren[] = "%s: unbalanced parenthesis"; const char e_badcolon[] = "%s: invalid use of :"; const char e_divzero[] = "%s: divide by zero"; const char e_synbad[] = "%s: arithmetic syntax error"; const char e_notlvalue[] = "%s: assignment requires lvalue"; const char e_recursive[] = "%s: recursion too deep"; const char e_questcolon[] = "%s: ':' expected for '?' operator"; const char e_function[] = "%s: unknown function"; const char e_incompatible[] = "%s: invalid floating point operation"; const char e_overflow[] = "%s: overflow exception"; const char e_domain[] = "%s: domain exception"; const char e_singularity[] = "%s: singularity exception"; const char e_charconst[] = "%s: invalid character constant"; #include "FEATURE/math"