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