1da2e3ebdSchin /*********************************************************************** 2da2e3ebdSchin * * 3da2e3ebdSchin * This software is part of the ast package * 4*3e14f97fSRoger A. Faulkner * Copyright (c) 1982-2010 AT&T Intellectual Property * 5da2e3ebdSchin * and is licensed under the * 6da2e3ebdSchin * Common Public License, Version 1.0 * 77c2fbfb3SApril Chin * by AT&T Intellectual Property * 8da2e3ebdSchin * * 9da2e3ebdSchin * A copy of the License is available at * 10da2e3ebdSchin * http://www.opensource.org/licenses/cpl1.0.txt * 11da2e3ebdSchin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12da2e3ebdSchin * * 13da2e3ebdSchin * Information and Software Systems Research * 14da2e3ebdSchin * AT&T Research * 15da2e3ebdSchin * Florham Park NJ * 16da2e3ebdSchin * * 17da2e3ebdSchin * David Korn <dgk@research.att.com> * 18da2e3ebdSchin * * 19da2e3ebdSchin ***********************************************************************/ 20da2e3ebdSchin #pragma prototyped 21da2e3ebdSchin /* 22da2e3ebdSchin * data for string evaluator library 23da2e3ebdSchin */ 24da2e3ebdSchin 25da2e3ebdSchin #include <ast_standards.h> 26da2e3ebdSchin #include "FEATURE/options" 27da2e3ebdSchin #include "streval.h" 28da2e3ebdSchin 29da2e3ebdSchin const unsigned char strval_precedence[35] = 30da2e3ebdSchin /* opcode precedence,assignment */ 31da2e3ebdSchin { 32da2e3ebdSchin /* DEFAULT */ MAXPREC|NOASSIGN, 33da2e3ebdSchin /* DONE */ 0|NOASSIGN|RASSOC, 34da2e3ebdSchin /* NEQ */ 10|NOASSIGN, 35da2e3ebdSchin /* NOT */ MAXPREC|NOASSIGN, 36da2e3ebdSchin /* MOD */ 14, 37da2e3ebdSchin /* ANDAND */ 6|NOASSIGN|SEQPOINT, 38da2e3ebdSchin /* AND */ 9|NOFLOAT, 39da2e3ebdSchin /* LPAREN */ MAXPREC|NOASSIGN|SEQPOINT, 40da2e3ebdSchin /* RPAREN */ 1|NOASSIGN|RASSOC|SEQPOINT, 41da2e3ebdSchin /* POW */ 14|NOASSIGN|RASSOC, 42da2e3ebdSchin /* TIMES */ 14, 43da2e3ebdSchin /* PLUSPLUS */ 15|NOASSIGN|NOFLOAT|SEQPOINT, 44da2e3ebdSchin /* PLUS */ 13, 45da2e3ebdSchin /* COMMA */ 1|NOASSIGN|SEQPOINT, 46da2e3ebdSchin /* MINUSMINUS */ 15|NOASSIGN|NOFLOAT|SEQPOINT, 47da2e3ebdSchin /* MINUS */ 13, 48da2e3ebdSchin /* DIV */ 14, 49da2e3ebdSchin /* LSHIFT */ 12|NOFLOAT, 50da2e3ebdSchin /* LE */ 11|NOASSIGN, 51da2e3ebdSchin /* LT */ 11|NOASSIGN, 52da2e3ebdSchin /* EQ */ 10|NOASSIGN, 53da2e3ebdSchin /* ASSIGNMENT */ 2|RASSOC, 54da2e3ebdSchin /* COLON */ 0|NOASSIGN, 55da2e3ebdSchin /* RSHIFT */ 12|NOFLOAT, 56da2e3ebdSchin /* GE */ 11|NOASSIGN, 57da2e3ebdSchin /* GT */ 11|NOASSIGN, 58da2e3ebdSchin /* QCOLON */ 3|NOASSIGN|SEQPOINT, 59da2e3ebdSchin /* QUEST */ 3|NOASSIGN|SEQPOINT|RASSOC, 60da2e3ebdSchin /* XOR */ 8|NOFLOAT, 61da2e3ebdSchin /* OROR */ 5|NOASSIGN|SEQPOINT, 62da2e3ebdSchin /* OR */ 7|NOFLOAT, 63da2e3ebdSchin /* DEFAULT */ MAXPREC|NOASSIGN, 64da2e3ebdSchin /* DEFAULT */ MAXPREC|NOASSIGN, 65da2e3ebdSchin /* DEFAULT */ MAXPREC|NOASSIGN, 66da2e3ebdSchin /* DEFAULT */ MAXPREC|NOASSIGN 67da2e3ebdSchin }; 68da2e3ebdSchin 69da2e3ebdSchin /* 70da2e3ebdSchin * This is for arithmetic expressions 71da2e3ebdSchin */ 72da2e3ebdSchin const char strval_states[64] = 73da2e3ebdSchin { 74da2e3ebdSchin A_EOF, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, 75da2e3ebdSchin A_REG, 0, 0, A_REG, A_REG, A_REG, A_REG, A_REG, 76da2e3ebdSchin A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, 77da2e3ebdSchin A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, A_REG, 78da2e3ebdSchin 79da2e3ebdSchin 0, A_NOT, 0, A_REG, A_REG, A_MOD, A_AND, A_LIT, 80da2e3ebdSchin A_LPAR, A_RPAR, A_TIMES,A_PLUS, A_COMMA,A_MINUS,A_DOT, A_DIV, 81da2e3ebdSchin A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, A_DIG, 82da2e3ebdSchin A_DIG, A_DIG, A_COLON,A_REG, A_LT, A_ASSIGN,A_GT, A_QUEST 83da2e3ebdSchin 84da2e3ebdSchin }; 85da2e3ebdSchin 86da2e3ebdSchin 87da2e3ebdSchin const char e_argcount[] = "%s: function has wrong number of arguments"; 88da2e3ebdSchin const char e_badnum[] = "%s: bad number"; 89da2e3ebdSchin const char e_moretokens[] = "%s: more tokens expected"; 90da2e3ebdSchin const char e_paren[] = "%s: unbalanced parenthesis"; 91da2e3ebdSchin const char e_badcolon[] = "%s: invalid use of :"; 92da2e3ebdSchin const char e_divzero[] = "%s: divide by zero"; 93da2e3ebdSchin const char e_synbad[] = "%s: arithmetic syntax error"; 94da2e3ebdSchin const char e_notlvalue[] = "%s: assignment requires lvalue"; 95da2e3ebdSchin const char e_recursive[] = "%s: recursion too deep"; 96da2e3ebdSchin const char e_questcolon[] = "%s: ':' expected for '?' operator"; 97da2e3ebdSchin const char e_function[] = "%s: unknown function"; 98da2e3ebdSchin const char e_incompatible[] = "%s: invalid floating point operation"; 99da2e3ebdSchin const char e_overflow[] = "%s: overflow exception"; 100da2e3ebdSchin const char e_domain[] = "%s: domain exception"; 101da2e3ebdSchin const char e_singularity[] = "%s: singularity exception"; 102da2e3ebdSchin const char e_charconst[] = "%s: invalid character constant"; 103da2e3ebdSchin 104da2e3ebdSchin #include "FEATURE/math" 105