1da2e3ebdSchin /***********************************************************************
2da2e3ebdSchin *                                                                      *
3da2e3ebdSchin *               This software is part of the ast package               *
4*b30d1939SAndy Fiddaman *          Copyright (c) 1982-2011 AT&T Intellectual Property          *
5da2e3ebdSchin *                      and is licensed under the                       *
6*b30d1939SAndy Fiddaman *                 Eclipse Public License, Version 1.0                  *
77c2fbfb3SApril Chin *                    by AT&T Intellectual Property                     *
8da2e3ebdSchin *                                                                      *
9da2e3ebdSchin *                A copy of the License is available at                 *
10*b30d1939SAndy Fiddaman *          http://www.eclipse.org/org/documents/epl-v10.html           *
11*b30d1939SAndy Fiddaman *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
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