summaryrefslogtreecommitdiff
path: root/usr/src/lib/libshell/common/data/strdata.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libshell/common/data/strdata.c')
-rw-r--r--usr/src/lib/libshell/common/data/strdata.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/usr/src/lib/libshell/common/data/strdata.c b/usr/src/lib/libshell/common/data/strdata.c
new file mode 100644
index 0000000000..57689b68a3
--- /dev/null
+++ b/usr/src/lib/libshell/common/data/strdata.c
@@ -0,0 +1,104 @@
+/***********************************************************************
+* *
+* This software is part of the ast package *
+* Copyright (c) 1982-2007 AT&T Knowledge Ventures *
+* and is licensed under the *
+* Common Public License, Version 1.0 *
+* by AT&T Knowledge Ventures *
+* *
+* 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 <dgk@research.att.com> *
+* *
+***********************************************************************/
+#pragma prototyped
+/*
+ * data for string evaluator library
+ */
+
+#include <ast_standards.h>
+#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"