diff options
Diffstat (limited to 'gdb/parser-defs.h')
-rw-r--r-- | gdb/parser-defs.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h index f03f537..c84fcad 100644 --- a/gdb/parser-defs.h +++ b/gdb/parser-defs.h @@ -159,6 +159,17 @@ extern int pop_type_int (void); extern int length_of_subexp (struct expression *, int); +extern int dump_subexp (struct expression *, struct ui_file *, int); + +extern int dump_subexp_body_standard (struct expression *, + struct ui_file *, int); + +extern void operator_length (struct expression *, int, int *, int *); + +extern void operator_length_standard (struct expression *, int, int *, int *); + +extern char *op_name_standard (enum exp_opcode); + extern struct type *follow_types (struct type *); /* During parsing of a C expression, the pointer to the next character @@ -220,6 +231,46 @@ struct op_print int right_assoc; }; +/* Information needed to print, prefixify, and evaluate expressions for + a given language. */ + +struct exp_descriptor + { + /* Print subexpression. */ + void (*print_subexp) (struct expression *, int *, struct ui_file *, + enum precedence); + + /* Returns number of exp_elements needed to represent an operator and + the number of subexpressions it takes. */ + void (*operator_length) (struct expression*, int, int*, int *); + + /* Name of this operator for dumping purposes. */ + char *(*op_name) (enum exp_opcode); + + /* Dump the rest of this (prefix) expression after the operator + itself has been printed. See dump_subexp_body_standard in + (expprint.c). */ + int (*dump_subexp_body) (struct expression *, struct ui_file *, int); + + /* Evaluate an expression. */ + struct value *(*evaluate_exp) (struct type *, struct expression *, + int *, enum noside); + }; + + +/* Default descriptor containing standard definitions of all + elements. */ +extern const struct exp_descriptor exp_descriptor_standard; + +/* Functions used by language-specific extended operators to (recursively) + print/dump subexpressions. */ + +extern void print_subexp (struct expression *, int *, struct ui_file *, + enum precedence); + +extern void print_subexp_standard (struct expression *, int *, + struct ui_file *, enum precedence); + /* Function used to avoid direct calls to fprintf in the code generated by the bison parser. */ |