diff options
author | Fred Fish <fnf@specifix.com> | 1993-01-02 20:32:01 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1993-01-02 20:32:01 +0000 |
commit | 54bbbfb43300a2ca9ef3509e9076caa1776970d1 (patch) | |
tree | 86109f7c0f1730cf10d8332153359774397ea0cf /gdb/expression.h | |
parent | ea81b10d1eb802c8270a758d5f6017b56e3388ca (diff) | |
download | gdb-54bbbfb43300a2ca9ef3509e9076caa1776970d1.zip gdb-54bbbfb43300a2ca9ef3509e9076caa1776970d1.tar.gz gdb-54bbbfb43300a2ca9ef3509e9076caa1776970d1.tar.bz2 |
* eval.c (evaluate_subexp): Add case MULTI_SUBSCRIPT.
* expprint.c (print_subexp): Rename BINOP_MULTI_SUBSCRIPT to
MULTI_SUBSCRIPT.
* expprint.c (dump_expression): New function for dumping
expression vectors during gdb debugging.
* expression.h (BINOP_MULTI_SUBSCRIPT): Name changed to
MULTI_SUBSCRIPT and moved out of BINOP range.
* expression.h (DUMP_EXPRESSION): New macro that calls
dump_expression if DEBUG_EXPRESSIONS is defined.
* m2-exp.y (BINOP_MULTI_SUBSCRIPT): Changed to MULTI_SUBSCRIPT.
* parse.c (length_of_subexp, prefixify_subexp): Change
BINOP_MULTI_SUBSCRIPT to MULTI_SUBSCRIPT.
* parse.c (parse_exp_1): Call DUMP_EXPRESSION before and after
prefixify'ing the expression.
* printcmd.c (print_command_1): Add comment.
**** start-sanitize-chill ****
* ch-exp.y (expression_list): Add useful actions.
* ch-exp.y (value_array_element): Add useful actions.
* ch-exp.y (array_primitive_value): Add production.
* ch-exp.y (yylex): Recognize ',' as a token.
**** end-sanitize-chill ****
Diffstat (limited to 'gdb/expression.h')
-rw-r--r-- | gdb/expression.h | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/gdb/expression.h b/gdb/expression.h index 0ef5c4d..8a6cf4b 100644 --- a/gdb/expression.h +++ b/gdb/expression.h @@ -20,6 +20,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #if !defined (EXPRESSION_H) #define EXPRESSION_H 1 +#ifdef __STDC__ +struct block; /* Forward declaration for prototypes */ +#endif + /* Definitions for saved C expressions. */ /* An expression is represented as a vector of union exp_element's. @@ -50,11 +54,11 @@ enum exp_opcode BINOP_REM, /* % */ BINOP_LSH, /* << */ BINOP_RSH, /* >> */ - BINOP_AND, /* && */ - BINOP_OR, /* || */ - BINOP_LOGAND, /* & */ - BINOP_LOGIOR, /* | */ - BINOP_LOGXOR, /* ^ */ + BINOP_LOGICAL_AND, /* && */ + BINOP_LOGICAL_OR, /* || */ + BINOP_BITWISE_AND, /* & */ + BINOP_BITWISE_IOR, /* | */ + BINOP_BITWISE_XOR, /* ^ */ BINOP_EQUAL, /* == */ BINOP_NOTEQUAL, /* != */ BINOP_LESS, /* < */ @@ -65,7 +69,6 @@ enum exp_opcode BINOP_ASSIGN, /* = */ BINOP_COMMA, /* , */ BINOP_SUBSCRIPT, /* x[y] */ - BINOP_MULTI_SUBSCRIPT, /* Modula-2 x[a,b,...] */ BINOP_EXP, /* Exponentiation */ /* C++. */ @@ -101,6 +104,14 @@ enum exp_opcode /* Operates on three values computed by following subexpressions. */ TERNOP_COND, /* ?: */ +/* Multidimensional subscript operator, such as Modula-2 x[a,b,...]. + The dimensionality is encoded in the operator, like the number of + function arguments in OP_FUNCALL, I.E. <OP><dimension><OP>. + The value of the first following subexpression is subscripted + by each of the next following subexpressions, one per dimension. */ + + MULTI_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. */ @@ -153,8 +164,8 @@ enum exp_opcode /* UNOP_... operate on one value from a following subexpression and replace it with a result. They take no immediate arguments. */ UNOP_NEG, /* Unary - */ - UNOP_ZEROP, /* Unary ! */ - UNOP_LOGNOT, /* Unary ~ */ + UNOP_LOGICAL_NOT, /* Unary ! */ + UNOP_COMPLEMENT, /* Unary ~ */ UNOP_IND, /* Unary * */ UNOP_ADDR, /* Unary & */ UNOP_PREINCREMENT, /* ++ before an expression */ @@ -186,11 +197,6 @@ enum exp_opcode They differ only in the error message given in case the value is not suitable or the structure component specified is not found. - After the sub-expression and before the string is a (struct type*). - This is normally NULL, but is used for the TYPE in a C++ qualified - reference like EXP.TYPE::NAME. (EXP.TYPE1::TYPE2::NAME does - not work, unfortunately.) - The length of the string follows in the next exp_element, (after the string), followed by another STRUCTOP_... code. */ STRUCTOP_STRUCT, @@ -251,4 +257,17 @@ print_expression PARAMS ((struct expression *, FILE *)); extern char * op_string PARAMS ((enum exp_opcode)); +/* To enable dumping of all parsed expressions in a human readable + form, define DEBUG_EXPRESSIONS. This is a compile time constant + at the moment, since it's not clear that this feature is important + enough to include by default. */ + +#ifdef DEBUG_EXPRESSIONS +extern void +dump_expression PARAMS ((struct expression *, FILE *, char *)); +#define DUMP_EXPRESSION(exp,file,note) dump_expression ((exp), (file), (note)) +#else +#define DUMP_EXPRESSION(exp,file,note) /* Null expansion */ +#endif /* DEBUG_EXPRESSIONS */ + #endif /* !defined (EXPRESSION_H) */ |