X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fparser-defs.h;h=f03f53700961c96aaa79f919c0a4ff5ae24574b3;hb=2fbce69179c6c47b68e24e3bca6c729fec4a918d;hp=1458b494df896ad0b0208ea3a522e4312892e7be;hpb=dc9e099fc0eced486ae2b49455c9da113c11f4ff;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h index 1458b494df..f03f537009 100644 --- a/gdb/parser-defs.h +++ b/gdb/parser-defs.h @@ -1,5 +1,8 @@ /* Parser definitions for GDB. - Copyright (C) 1986, 1989, 1990, 1991 Free Software Foundation, Inc. + + Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. + Modified from expread.y by the Department of Computer Science at the State University of New York at Buffalo. @@ -23,14 +26,9 @@ #if !defined (PARSER_DEFS_H) #define PARSER_DEFS_H 1 -struct std_regs - { - char *name; - int regnum; - }; +#include "doublest.h" -extern struct std_regs *std_regs; -extern unsigned num_std_regs; +struct block; extern struct expression *expout; extern int expout_size; @@ -41,6 +39,12 @@ extern int expout_ptr; extern struct block *expression_context_block; +/* If expression_context_block is non-zero, then this is the PC within + the block that we want to evaluate expressions at. When debugging + C or C++ code, we use this to find the exact line we're at, and + then look up the macro definitions active at that point. */ +extern CORE_ADDR expression_context_pc; + /* The innermost context required by the stack and register variables we've encountered so far. */ extern struct block *innermost_block; @@ -77,11 +81,26 @@ struct symtoken int is_a_field_of_this; }; +struct objc_class_str + { + struct stoken stoken; + struct type *type; + int class; + }; + + /* For parsing of complicated types. An array should be preceded in the list by the size of the array. */ enum type_pieces { - tp_end = -1, tp_pointer, tp_reference, tp_array, tp_function + tp_end = -1, + tp_pointer, + tp_reference, + tp_array, + tp_function, + tp_const, + tp_volatile, + tp_space_identifier }; /* The stack can contain either an enum type_pieces or an int. */ union type_stack_elt @@ -92,66 +111,65 @@ union type_stack_elt extern union type_stack_elt *type_stack; extern int type_stack_depth, type_stack_size; -extern void write_exp_elt PARAMS ((union exp_element)); +extern void write_exp_elt (union exp_element); + +extern void write_exp_elt_opcode (enum exp_opcode); -extern void write_exp_elt_opcode PARAMS ((enum exp_opcode)); +extern void write_exp_elt_sym (struct symbol *); -extern void write_exp_elt_sym PARAMS ((struct symbol *)); +extern void write_exp_elt_longcst (LONGEST); -extern void write_exp_elt_longcst PARAMS ((LONGEST)); +extern void write_exp_elt_dblcst (DOUBLEST); -extern void write_exp_elt_dblcst PARAMS ((DOUBLEST)); +extern void write_exp_elt_type (struct type *); -extern void write_exp_elt_type PARAMS ((struct type *)); +extern void write_exp_elt_intern (struct internalvar *); -extern void write_exp_elt_intern PARAMS ((struct internalvar *)); +extern void write_exp_string (struct stoken); -extern void write_exp_string PARAMS ((struct stoken)); +extern void write_exp_bitstring (struct stoken); -extern void write_exp_bitstring PARAMS ((struct stoken)); +extern void write_exp_elt_block (struct block *); -extern void write_exp_elt_block PARAMS ((struct block *)); +extern void write_exp_msymbol (struct minimal_symbol *, + struct type *, struct type *); -extern void write_exp_msymbol PARAMS ((struct minimal_symbol *, - struct type *, struct type *)); +extern void write_dollar_variable (struct stoken str); -extern void write_dollar_variable PARAMS ((struct stoken str)); +extern struct symbol *parse_nested_classes_for_hpacc (char *, int, char **, + int *, char **); -extern struct symbol *parse_nested_classes_for_hpacc PARAMS ((char *, int, char **, int *, char **)); +extern char *find_template_name_end (char *); -extern char *find_template_name_end PARAMS ((char *)); +extern void start_arglist (void); -extern void -start_arglist PARAMS ((void)); +extern int end_arglist (void); -extern int -end_arglist PARAMS ((void)); +extern char *copy_name (struct stoken); -extern char * - copy_name PARAMS ((struct stoken)); +extern void push_type (enum type_pieces); -extern void -push_type PARAMS ((enum type_pieces)); +extern void push_type_int (int); -extern void -push_type_int PARAMS ((int)); +extern void push_type_address_space (char *); -extern enum type_pieces -pop_type PARAMS ((void)); +extern enum type_pieces pop_type (void); -extern int -pop_type_int PARAMS ((void)); +extern int pop_type_int (void); -extern int -length_of_subexp PARAMS ((struct expression *, int)); +extern int length_of_subexp (struct expression *, int); -extern struct type *follow_types PARAMS ((struct type *)); +extern struct type *follow_types (struct type *); /* During parsing of a C expression, the pointer to the next character is in this variable. */ extern char *lexptr; +/* After a token has been recognized, this variable points to it. + Currently used only for error reporting. */ +extern char *prev_lexptr; + /* Tokens that refer to names do so with explicit pointer and length, so they can share the storage that lexptr is parsing. @@ -202,10 +220,9 @@ struct op_print int right_assoc; }; -/* The generic method for targets to specify how their registers are - named. The mapping can be derived from three sources: - REGISTER_NAME; std_regs; or a target specific alias hook. */ +/* Function used to avoid direct calls to fprintf + in the code generated by the bison parser. */ -extern int target_map_name_to_register PARAMS ((char *, int)); +extern void parser_fprintf (FILE *, const char *, ...) ATTR_FORMAT (printf, 2 ,3); #endif /* PARSER_DEFS_H */