1 /* Definitions for expressions stored in reversed prefix form, for GDB.
3 Copyright (C) 1986-2015 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20 #if !defined (EXPRESSION_H)
21 #define EXPRESSION_H 1
24 #include "symtab.h" /* Needed for "struct block" type. */
25 #include "doublest.h" /* Needed for DOUBLEST. */
28 /* Definitions for saved C expressions. */
30 /* An expression is represented as a vector of union exp_element's.
31 Each exp_element is an opcode, except that some opcodes cause
32 the following exp_element to be treated as a long or double constant
33 or as a variable. The opcodes are obeyed, using a stack for temporaries.
34 The value is left on the temporary stack at the end. */
36 /* When it is necessary to include a string,
37 it can occupy as many exp_elements as it needs.
38 We find the length of the string using strlen,
39 divide to find out how many exp_elements are used up,
40 and skip that many. Strings, like numbers, are indicated
41 by the preceding opcode. */
45 #define OP(name) name ,
47 #include "std-operator.def"
49 /* First extension operator. Individual language modules define extra
50 operators in *.def include files below with numbers higher than
54 /* Language specific operators. */
55 #include "ada-operator.def"
59 /* Existing only to swallow the last comma (',') from last .inc file. */
65 enum exp_opcode opcode
;
66 struct symbol
*symbol
;
69 gdb_byte decfloatconst
[16];
70 /* Really sizeof (union exp_element) characters (or less for the last
71 element of a string). */
74 struct internalvar
*internalvar
;
75 const struct block
*block
;
76 struct objfile
*objfile
;
81 const struct language_defn
*language_defn
; /* language it was
83 struct gdbarch
*gdbarch
; /* architecture it was parsed in. */
85 union exp_element elts
[1];
88 /* Macros for converting between number of expression elements and bytes
89 to store that many expression elements. */
91 #define EXP_ELEM_TO_BYTES(elements) \
92 ((elements) * sizeof (union exp_element))
93 #define BYTES_TO_EXP_ELEM(bytes) \
94 (((bytes) + sizeof (union exp_element) - 1) / sizeof (union exp_element))
98 extern struct expression
*parse_expression (const char *);
100 extern struct expression
*parse_expression_with_language (const char *string
,
103 extern struct type
*parse_expression_for_completion (const char *, char **,
106 extern struct expression
*parse_exp_1 (const char **, CORE_ADDR pc
,
107 const struct block
*, int);
109 /* For use by parsers; set if we want to parse an expression and
110 attempt completion. */
111 extern int parse_completion
;
113 /* The innermost context required by the stack and register variables
114 we've encountered so far. To use this, set it to NULL, then call
115 parse_<whatever>, then look at it. */
116 extern const struct block
*innermost_block
;
120 /* Values of NOSIDE argument to eval_subexp. */
125 EVAL_SKIP
, /* Only effect is to increment pos. */
126 EVAL_AVOID_SIDE_EFFECTS
/* Don't modify any variables or
127 call any functions. The value
128 returned will have the correct
129 type, and will have an
130 approximately correct lvalue
131 type (inaccuracy: anything that is
132 listed as being in a register in
133 the function in which it was
134 declared will be lval_register).
135 Ideally this would not even read
136 target memory, but currently it
137 does in many situations. */
140 extern struct value
*evaluate_subexp_standard
141 (struct type
*, struct expression
*, int *, enum noside
);
143 /* From expprint.c */
145 extern void print_expression (struct expression
*, struct ui_file
*);
147 extern char *op_name (struct expression
*exp
, enum exp_opcode opcode
);
149 extern char *op_string (enum exp_opcode
);
151 extern void dump_raw_expression (struct expression
*,
152 struct ui_file
*, char *);
153 extern void dump_prefix_expression (struct expression
*, struct ui_file
*);
155 #endif /* !defined (EXPRESSION_H) */
This page took 0.041444 seconds and 4 git commands to generate.