You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if !defined (EXPRESSION_H)
#define EXPRESSION_H 1
by each of the next following subexpressions, one per dimension. */
MULTI_SUBSCRIPT,
- /* For Fortran array subscripting (column major style). Like the
- Modula operator, we find that the dimensionality is
- encoded in the operator. This operator is distinct
- from the above one because it uses column-major array
- ordering not row-major. */
- MULTI_F77_SUBSCRIPT,
-
/* The OP_... series take immediate following arguments.
After the arguments come another OP_... (the same one)
so that the grouping can be recognized from the end. */
literal. It is followed by exactly two args that are doubles. */
OP_COMPLEX,
- /* The following OP introduces a F77 substring operator.
- It should have a string type and two integer types that follow
- indicating the "from" and "to" for the substring. */
- OP_F77_SUBSTR,
-
/* OP_STRING represents a string constant.
Its format is the same as that of a STRUCTOP, but the string
data is just made into a string constant when the operation
UNOP_ODD,
UNOP_TRUNC,
+ /* Chill builtin functions. */
+ UNOP_LOWER, UNOP_UPPER, UNOP_LENGTH,
+
OP_BOOL, /* Modula-2 builtin BOOLEAN type */
OP_M2_STRING, /* Modula-2 string constants */
STRUCTOP_STRUCT,
STRUCTOP_PTR,
+/* start-sanitize-gm */
+#ifdef GENERAL_MAGIC_HACKS
+ /* STRUCTOP_FIELD is for handling field access for Magic Cap dynamic objects.
+ */
+ STRUCTOP_FIELD,
+#endif /* GENERAL_MAGIC_HACKS */
+/* end-sanitize-gm */
+
/* C++ */
/* OP_THIS is just a placeholder for the class instance variable.
It just comes in a tight (OP_THIS, OP_THIS) pair. */
/* OP_TYPE is for parsing types, and used with the "ptype" command
so we can look up types that are qualified by scope, either with
the GDB "::" operator, or the Modula-2 '.' operator. */
- OP_TYPE
+ OP_TYPE,
+
+ /* An un-looked-up identifier. */
+ OP_NAME,
+
+ /* An unparsed expression. Used for Scheme (for now at least) */
+ OP_EXPRSTRING
};
union exp_element
parse_<whatever>, then look at it. */
extern struct block *innermost_block;
+/* From eval.c */
+
+/* Values of NOSIDE argument to eval_subexp. */
+
+enum noside
+{
+ EVAL_NORMAL,
+ EVAL_SKIP, /* Only effect is to increment pos. */
+ EVAL_AVOID_SIDE_EFFECTS /* Don't modify any variables or
+ call any functions. The value
+ returned will have the correct
+ type, and will have an
+ approximately correct lvalue
+ type (inaccuracy: anything that is
+ listed as being in a register in
+ the function in which it was
+ declared will be lval_register). */
+};
+
+extern struct value* evaluate_subexp_standard
+PARAMS ((struct type *, struct expression *, int*, enum noside));
+
/* From expprint.c */
extern void print_expression PARAMS ((struct expression *, GDB_FILE *));