OSDN Git Service

* arch-utils.c (selected_byte_order): Return target_byte_order_user.
[pf3gnuchains/pf3gnuchains3x.git] / gdb / parse.c
1 /* Parse expressions for GDB.
2
3    Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4    1998, 1999, 2000, 2001, 2004, 2005, 2007, 2008, 2009
5    Free Software Foundation, Inc.
6
7    Modified from expread.y by the Department of Computer Science at the
8    State University of New York at Buffalo, 1991.
9
10    This file is part of GDB.
11
12    This program is free software; you can redistribute it and/or modify
13    it under the terms of the GNU General Public License as published by
14    the Free Software Foundation; either version 3 of the License, or
15    (at your option) any later version.
16
17    This program is distributed in the hope that it will be useful,
18    but WITHOUT ANY WARRANTY; without even the implied warranty of
19    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20    GNU General Public License for more details.
21
22    You should have received a copy of the GNU General Public License
23    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
24
25 /* Parse an expression from text in a string,
26    and return the result as a  struct expression  pointer.
27    That structure contains arithmetic operations in reverse polish,
28    with constants represented by operations that are followed by special data.
29    See expression.h for the details of the format.
30    What is important here is that it can be built up sequentially
31    during the process of parsing; the lower levels of the tree always
32    come first in the result.  */
33
34 #include <ctype.h>
35
36 #include "defs.h"
37 #include "arch-utils.h"
38 #include "gdb_string.h"
39 #include "symtab.h"
40 #include "gdbtypes.h"
41 #include "frame.h"
42 #include "expression.h"
43 #include "value.h"
44 #include "command.h"
45 #include "language.h"
46 #include "f-lang.h"
47 #include "parser-defs.h"
48 #include "gdbcmd.h"
49 #include "symfile.h"            /* for overlay functions */
50 #include "inferior.h"
51 #include "doublest.h"
52 #include "gdb_assert.h"
53 #include "block.h"
54 #include "source.h"
55 #include "objfiles.h"
56 #include "exceptions.h"
57 #include "user-regs.h"
58
59 /* Standard set of definitions for printing, dumping, prefixifying,
60  * and evaluating expressions.  */
61
62 const struct exp_descriptor exp_descriptor_standard = 
63   {
64     print_subexp_standard,
65     operator_length_standard,
66     op_name_standard,
67     dump_subexp_body_standard,
68     evaluate_subexp_standard
69   };
70 \f
71 /* Global variables declared in parser-defs.h (and commented there).  */
72 struct expression *expout;
73 int expout_size;
74 int expout_ptr;
75 struct block *expression_context_block;
76 CORE_ADDR expression_context_pc;
77 struct block *innermost_block;
78 int arglist_len;
79 union type_stack_elt *type_stack;
80 int type_stack_depth, type_stack_size;
81 char *lexptr;
82 char *prev_lexptr;
83 int paren_depth;
84 int comma_terminates;
85
86 /* True if parsing an expression to find a field reference.  This is
87    only used by completion.  */
88 int in_parse_field;
89
90 /* The index of the last struct expression directly before a '.' or
91    '->'.  This is set when parsing and is only used when completing a
92    field name.  It is -1 if no dereference operation was found.  */
93 static int expout_last_struct = -1;
94
95 /* A temporary buffer for identifiers, so we can null-terminate them.
96
97    We allocate this with xrealloc.  parse_exp_1 used to allocate with
98    alloca, using the size of the whole expression as a conservative
99    estimate of the space needed.  However, macro expansion can
100    introduce names longer than the original expression; there's no
101    practical way to know beforehand how large that might be.  */
102 char *namecopy;
103 size_t namecopy_size;
104 \f
105 static int expressiondebug = 0;
106 static void
107 show_expressiondebug (struct ui_file *file, int from_tty,
108                       struct cmd_list_element *c, const char *value)
109 {
110   fprintf_filtered (file, _("Expression debugging is %s.\n"), value);
111 }
112
113 static void free_funcalls (void *ignore);
114
115 static int prefixify_expression (struct expression *);
116
117 static int prefixify_subexp (struct expression *, struct expression *, int,
118                              int);
119
120 static struct expression *parse_exp_in_context (char **, struct block *, int, 
121                                                 int, int *);
122
123 void _initialize_parse (void);
124
125 /* Data structure for saving values of arglist_len for function calls whose
126    arguments contain other function calls.  */
127
128 struct funcall
129   {
130     struct funcall *next;
131     int arglist_len;
132   };
133
134 static struct funcall *funcall_chain;
135
136 /* Begin counting arguments for a function call,
137    saving the data about any containing call.  */
138
139 void
140 start_arglist (void)
141 {
142   struct funcall *new;
143
144   new = (struct funcall *) xmalloc (sizeof (struct funcall));
145   new->next = funcall_chain;
146   new->arglist_len = arglist_len;
147   arglist_len = 0;
148   funcall_chain = new;
149 }
150
151 /* Return the number of arguments in a function call just terminated,
152    and restore the data for the containing function call.  */
153
154 int
155 end_arglist (void)
156 {
157   int val = arglist_len;
158   struct funcall *call = funcall_chain;
159   funcall_chain = call->next;
160   arglist_len = call->arglist_len;
161   xfree (call);
162   return val;
163 }
164
165 /* Free everything in the funcall chain.
166    Used when there is an error inside parsing.  */
167
168 static void
169 free_funcalls (void *ignore)
170 {
171   struct funcall *call, *next;
172
173   for (call = funcall_chain; call; call = next)
174     {
175       next = call->next;
176       xfree (call);
177     }
178 }
179 \f
180 /* This page contains the functions for adding data to the  struct expression
181    being constructed.  */
182
183 /* Add one element to the end of the expression.  */
184
185 /* To avoid a bug in the Sun 4 compiler, we pass things that can fit into
186    a register through here */
187
188 void
189 write_exp_elt (union exp_element expelt)
190 {
191   if (expout_ptr >= expout_size)
192     {
193       expout_size *= 2;
194       expout = (struct expression *)
195         xrealloc ((char *) expout, sizeof (struct expression)
196                   + EXP_ELEM_TO_BYTES (expout_size));
197     }
198   expout->elts[expout_ptr++] = expelt;
199 }
200
201 void
202 write_exp_elt_opcode (enum exp_opcode expelt)
203 {
204   union exp_element tmp;
205   memset (&tmp, 0, sizeof (union exp_element));
206
207   tmp.opcode = expelt;
208
209   write_exp_elt (tmp);
210 }
211
212 void
213 write_exp_elt_sym (struct symbol *expelt)
214 {
215   union exp_element tmp;
216   memset (&tmp, 0, sizeof (union exp_element));
217
218   tmp.symbol = expelt;
219
220   write_exp_elt (tmp);
221 }
222
223 void
224 write_exp_elt_block (struct block *b)
225 {
226   union exp_element tmp;
227   memset (&tmp, 0, sizeof (union exp_element));
228   tmp.block = b;
229   write_exp_elt (tmp);
230 }
231
232 void
233 write_exp_elt_objfile (struct objfile *objfile)
234 {
235   union exp_element tmp;
236   memset (&tmp, 0, sizeof (union exp_element));
237   tmp.objfile = objfile;
238   write_exp_elt (tmp);
239 }
240
241 void
242 write_exp_elt_longcst (LONGEST expelt)
243 {
244   union exp_element tmp;
245   memset (&tmp, 0, sizeof (union exp_element));
246
247   tmp.longconst = expelt;
248
249   write_exp_elt (tmp);
250 }
251
252 void
253 write_exp_elt_dblcst (DOUBLEST expelt)
254 {
255   union exp_element tmp;
256   memset (&tmp, 0, sizeof (union exp_element));
257
258   tmp.doubleconst = expelt;
259
260   write_exp_elt (tmp);
261 }
262
263 void
264 write_exp_elt_decfloatcst (gdb_byte expelt[16])
265 {
266   union exp_element tmp;
267   int index;
268
269   for (index = 0; index < 16; index++)
270     tmp.decfloatconst[index] = expelt[index];
271
272   write_exp_elt (tmp);
273 }
274
275 void
276 write_exp_elt_type (struct type *expelt)
277 {
278   union exp_element tmp;
279   memset (&tmp, 0, sizeof (union exp_element));
280
281   tmp.type = expelt;
282
283   write_exp_elt (tmp);
284 }
285
286 void
287 write_exp_elt_intern (struct internalvar *expelt)
288 {
289   union exp_element tmp;
290   memset (&tmp, 0, sizeof (union exp_element));
291
292   tmp.internalvar = expelt;
293
294   write_exp_elt (tmp);
295 }
296
297 /* Add a string constant to the end of the expression.
298
299    String constants are stored by first writing an expression element
300    that contains the length of the string, then stuffing the string
301    constant itself into however many expression elements are needed
302    to hold it, and then writing another expression element that contains
303    the length of the string.  I.E. an expression element at each end of
304    the string records the string length, so you can skip over the 
305    expression elements containing the actual string bytes from either
306    end of the string.  Note that this also allows gdb to handle
307    strings with embedded null bytes, as is required for some languages.
308
309    Don't be fooled by the fact that the string is null byte terminated,
310    this is strictly for the convenience of debugging gdb itself.
311    Gdb does not depend up the string being null terminated, since the
312    actual length is recorded in expression elements at each end of the
313    string.  The null byte is taken into consideration when computing how
314    many expression elements are required to hold the string constant, of
315    course. */
316
317
318 void
319 write_exp_string (struct stoken str)
320 {
321   int len = str.length;
322   int lenelt;
323   char *strdata;
324
325   /* Compute the number of expression elements required to hold the string
326      (including a null byte terminator), along with one expression element
327      at each end to record the actual string length (not including the
328      null byte terminator). */
329
330   lenelt = 2 + BYTES_TO_EXP_ELEM (len + 1);
331
332   /* Ensure that we have enough available expression elements to store
333      everything. */
334
335   if ((expout_ptr + lenelt) >= expout_size)
336     {
337       expout_size = max (expout_size * 2, expout_ptr + lenelt + 10);
338       expout = (struct expression *)
339         xrealloc ((char *) expout, (sizeof (struct expression)
340                                     + EXP_ELEM_TO_BYTES (expout_size)));
341     }
342
343   /* Write the leading length expression element (which advances the current
344      expression element index), then write the string constant followed by a
345      terminating null byte, and then write the trailing length expression
346      element. */
347
348   write_exp_elt_longcst ((LONGEST) len);
349   strdata = (char *) &expout->elts[expout_ptr];
350   memcpy (strdata, str.ptr, len);
351   *(strdata + len) = '\0';
352   expout_ptr += lenelt - 2;
353   write_exp_elt_longcst ((LONGEST) len);
354 }
355
356 /* Add a vector of string constants to the end of the expression.
357
358    This adds an OP_STRING operation, but encodes the contents
359    differently from write_exp_string.  The language is expected to
360    handle evaluation of this expression itself.
361    
362    After the usual OP_STRING header, TYPE is written into the
363    expression as a long constant.  The interpretation of this field is
364    up to the language evaluator.
365    
366    Next, each string in VEC is written.  The length is written as a
367    long constant, followed by the contents of the string.  */
368
369 void
370 write_exp_string_vector (int type, struct stoken_vector *vec)
371 {
372   int i, n_slots, len;
373
374   /* Compute the size.  We compute the size in number of slots to
375      avoid issues with string padding.  */
376   n_slots = 0;
377   for (i = 0; i < vec->len; ++i)
378     {
379       /* One slot for the length of this element, plus the number of
380          slots needed for this string.  */
381       n_slots += 1 + BYTES_TO_EXP_ELEM (vec->tokens[i].length);
382     }
383
384   /* One more slot for the type of the string.  */
385   ++n_slots;
386
387   /* Now compute a phony string length.  */
388   len = EXP_ELEM_TO_BYTES (n_slots) - 1;
389
390   n_slots += 4;
391   if ((expout_ptr + n_slots) >= expout_size)
392     {
393       expout_size = max (expout_size * 2, expout_ptr + n_slots + 10);
394       expout = (struct expression *)
395         xrealloc ((char *) expout, (sizeof (struct expression)
396                                     + EXP_ELEM_TO_BYTES (expout_size)));
397     }
398
399   write_exp_elt_opcode (OP_STRING);
400   write_exp_elt_longcst (len);
401   write_exp_elt_longcst (type);
402
403   for (i = 0; i < vec->len; ++i)
404     {
405       write_exp_elt_longcst (vec->tokens[i].length);
406       memcpy (&expout->elts[expout_ptr], vec->tokens[i].ptr,
407               vec->tokens[i].length);
408       expout_ptr += BYTES_TO_EXP_ELEM (vec->tokens[i].length);
409     }
410
411   write_exp_elt_longcst (len);
412   write_exp_elt_opcode (OP_STRING);
413 }
414
415 /* Add a bitstring constant to the end of the expression.
416
417    Bitstring constants are stored by first writing an expression element
418    that contains the length of the bitstring (in bits), then stuffing the
419    bitstring constant itself into however many expression elements are
420    needed to hold it, and then writing another expression element that
421    contains the length of the bitstring.  I.E. an expression element at
422    each end of the bitstring records the bitstring length, so you can skip
423    over the expression elements containing the actual bitstring bytes from
424    either end of the bitstring. */
425
426 void
427 write_exp_bitstring (struct stoken str)
428 {
429   int bits = str.length;        /* length in bits */
430   int len = (bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
431   int lenelt;
432   char *strdata;
433
434   /* Compute the number of expression elements required to hold the bitstring,
435      along with one expression element at each end to record the actual
436      bitstring length in bits. */
437
438   lenelt = 2 + BYTES_TO_EXP_ELEM (len);
439
440   /* Ensure that we have enough available expression elements to store
441      everything. */
442
443   if ((expout_ptr + lenelt) >= expout_size)
444     {
445       expout_size = max (expout_size * 2, expout_ptr + lenelt + 10);
446       expout = (struct expression *)
447         xrealloc ((char *) expout, (sizeof (struct expression)
448                                     + EXP_ELEM_TO_BYTES (expout_size)));
449     }
450
451   /* Write the leading length expression element (which advances the current
452      expression element index), then write the bitstring constant, and then
453      write the trailing length expression element. */
454
455   write_exp_elt_longcst ((LONGEST) bits);
456   strdata = (char *) &expout->elts[expout_ptr];
457   memcpy (strdata, str.ptr, len);
458   expout_ptr += lenelt - 2;
459   write_exp_elt_longcst ((LONGEST) bits);
460 }
461
462 /* Add the appropriate elements for a minimal symbol to the end of
463    the expression.  */
464
465 void
466 write_exp_msymbol (struct minimal_symbol *msymbol)
467 {
468   struct objfile *objfile = msymbol_objfile (msymbol);
469   struct gdbarch *gdbarch = get_objfile_arch (objfile);
470
471   CORE_ADDR addr = SYMBOL_VALUE_ADDRESS (msymbol);
472   struct obj_section *section = SYMBOL_OBJ_SECTION (msymbol);
473   enum minimal_symbol_type type = MSYMBOL_TYPE (msymbol);
474   CORE_ADDR pc;
475
476   /* The minimal symbol might point to a function descriptor;
477      resolve it to the actual code address instead.  */
478   pc = gdbarch_convert_from_func_ptr_addr (gdbarch, addr, &current_target);
479   if (pc != addr)
480     {
481       /* In this case, assume we have a code symbol instead of
482          a data symbol.  */
483       type = mst_text;
484       section = NULL;
485       addr = pc;
486     }
487
488   if (overlay_debugging)
489     addr = symbol_overlayed_address (addr, section);
490
491   write_exp_elt_opcode (OP_LONG);
492   /* Let's make the type big enough to hold a 64-bit address.  */
493   write_exp_elt_type (objfile_type (objfile)->builtin_core_addr);
494   write_exp_elt_longcst ((LONGEST) addr);
495   write_exp_elt_opcode (OP_LONG);
496
497   if (section && section->the_bfd_section->flags & SEC_THREAD_LOCAL)
498     {
499       write_exp_elt_opcode (UNOP_MEMVAL_TLS);
500       write_exp_elt_objfile (objfile);
501       write_exp_elt_type (objfile_type (objfile)->nodebug_tls_symbol);
502       write_exp_elt_opcode (UNOP_MEMVAL_TLS);
503       return;
504     }
505
506   write_exp_elt_opcode (UNOP_MEMVAL);
507   switch (type)
508     {
509     case mst_text:
510     case mst_file_text:
511     case mst_solib_trampoline:
512       write_exp_elt_type (objfile_type (objfile)->nodebug_text_symbol);
513       break;
514
515     case mst_data:
516     case mst_file_data:
517     case mst_bss:
518     case mst_file_bss:
519       write_exp_elt_type (objfile_type (objfile)->nodebug_data_symbol);
520       break;
521
522     default:
523       write_exp_elt_type (objfile_type (objfile)->nodebug_unknown_symbol);
524       break;
525     }
526   write_exp_elt_opcode (UNOP_MEMVAL);
527 }
528
529 /* Mark the current index as the starting location of a structure
530    expression.  This is used when completing on field names.  */
531
532 void
533 mark_struct_expression (void)
534 {
535   expout_last_struct = expout_ptr;
536 }
537
538 \f
539 /* Recognize tokens that start with '$'.  These include:
540
541    $regname     A native register name or a "standard
542    register name".
543
544    $variable    A convenience variable with a name chosen
545    by the user.
546
547    $digits              Value history with index <digits>, starting
548    from the first value which has index 1.
549
550    $$digits     Value history with index <digits> relative
551    to the last value.  I.E. $$0 is the last
552    value, $$1 is the one previous to that, $$2
553    is the one previous to $$1, etc.
554
555    $ | $0 | $$0 The last value in the value history.
556
557    $$           An abbreviation for the second to the last
558    value in the value history, I.E. $$1
559
560  */
561
562 void
563 write_dollar_variable (struct stoken str)
564 {
565   struct symbol *sym = NULL;
566   struct minimal_symbol *msym = NULL;
567   struct internalvar *isym = NULL;
568
569   /* Handle the tokens $digits; also $ (short for $0) and $$ (short for $$1)
570      and $$digits (equivalent to $<-digits> if you could type that). */
571
572   int negate = 0;
573   int i = 1;
574   /* Double dollar means negate the number and add -1 as well.
575      Thus $$ alone means -1.  */
576   if (str.length >= 2 && str.ptr[1] == '$')
577     {
578       negate = 1;
579       i = 2;
580     }
581   if (i == str.length)
582     {
583       /* Just dollars (one or two) */
584       i = -negate;
585       goto handle_last;
586     }
587   /* Is the rest of the token digits?  */
588   for (; i < str.length; i++)
589     if (!(str.ptr[i] >= '0' && str.ptr[i] <= '9'))
590       break;
591   if (i == str.length)
592     {
593       i = atoi (str.ptr + 1 + negate);
594       if (negate)
595         i = -i;
596       goto handle_last;
597     }
598
599   /* Handle tokens that refer to machine registers:
600      $ followed by a register name.  */
601   i = user_reg_map_name_to_regnum (parse_gdbarch,
602                                    str.ptr + 1, str.length - 1);
603   if (i >= 0)
604     goto handle_register;
605
606   /* Any names starting with $ are probably debugger internal variables.  */
607
608   isym = lookup_only_internalvar (copy_name (str) + 1);
609   if (isym)
610     {
611       write_exp_elt_opcode (OP_INTERNALVAR);
612       write_exp_elt_intern (isym);
613       write_exp_elt_opcode (OP_INTERNALVAR);
614       return;
615     }
616
617   /* On some systems, such as HP-UX and hppa-linux, certain system routines 
618      have names beginning with $ or $$.  Check for those, first. */
619
620   sym = lookup_symbol (copy_name (str), (struct block *) NULL,
621                        VAR_DOMAIN, (int *) NULL);
622   if (sym)
623     {
624       write_exp_elt_opcode (OP_VAR_VALUE);
625       write_exp_elt_block (block_found);        /* set by lookup_symbol */
626       write_exp_elt_sym (sym);
627       write_exp_elt_opcode (OP_VAR_VALUE);
628       return;
629     }
630   msym = lookup_minimal_symbol (copy_name (str), NULL, NULL);
631   if (msym)
632     {
633       write_exp_msymbol (msym);
634       return;
635     }
636
637   /* Any other names are assumed to be debugger internal variables.  */
638
639   write_exp_elt_opcode (OP_INTERNALVAR);
640   write_exp_elt_intern (create_internalvar (copy_name (str) + 1));
641   write_exp_elt_opcode (OP_INTERNALVAR);
642   return;
643 handle_last:
644   write_exp_elt_opcode (OP_LAST);
645   write_exp_elt_longcst ((LONGEST) i);
646   write_exp_elt_opcode (OP_LAST);
647   return;
648 handle_register:
649   write_exp_elt_opcode (OP_REGISTER);
650   str.length--;
651   str.ptr++;
652   write_exp_string (str);
653   write_exp_elt_opcode (OP_REGISTER);
654   return;
655 }
656
657
658 char *
659 find_template_name_end (char *p)
660 {
661   int depth = 1;
662   int just_seen_right = 0;
663   int just_seen_colon = 0;
664   int just_seen_space = 0;
665
666   if (!p || (*p != '<'))
667     return 0;
668
669   while (*++p)
670     {
671       switch (*p)
672         {
673         case '\'':
674         case '\"':
675         case '{':
676         case '}':
677           /* In future, may want to allow these?? */
678           return 0;
679         case '<':
680           depth++;              /* start nested template */
681           if (just_seen_colon || just_seen_right || just_seen_space)
682             return 0;           /* but not after : or :: or > or space */
683           break;
684         case '>':
685           if (just_seen_colon || just_seen_right)
686             return 0;           /* end a (nested?) template */
687           just_seen_right = 1;  /* but not after : or :: */
688           if (--depth == 0)     /* also disallow >>, insist on > > */
689             return ++p;         /* if outermost ended, return */
690           break;
691         case ':':
692           if (just_seen_space || (just_seen_colon > 1))
693             return 0;           /* nested class spec coming up */
694           just_seen_colon++;    /* we allow :: but not :::: */
695           break;
696         case ' ':
697           break;
698         default:
699           if (!((*p >= 'a' && *p <= 'z') ||     /* allow token chars */
700                 (*p >= 'A' && *p <= 'Z') ||
701                 (*p >= '0' && *p <= '9') ||
702                 (*p == '_') || (*p == ',') ||   /* commas for template args */
703                 (*p == '&') || (*p == '*') ||   /* pointer and ref types */
704                 (*p == '(') || (*p == ')') ||   /* function types */
705                 (*p == '[') || (*p == ']')))    /* array types */
706             return 0;
707         }
708       if (*p != ' ')
709         just_seen_space = 0;
710       if (*p != ':')
711         just_seen_colon = 0;
712       if (*p != '>')
713         just_seen_right = 0;
714     }
715   return 0;
716 }
717 \f
718
719
720 /* Return a null-terminated temporary copy of the name
721    of a string token.  */
722
723 char *
724 copy_name (struct stoken token)
725 {
726   /* Make sure there's enough space for the token.  */
727   if (namecopy_size < token.length + 1)
728     {
729       namecopy_size = token.length + 1;
730       namecopy = xrealloc (namecopy, token.length + 1);
731     }
732       
733   memcpy (namecopy, token.ptr, token.length);
734   namecopy[token.length] = 0;
735
736   return namecopy;
737 }
738 \f
739 /* Reverse an expression from suffix form (in which it is constructed)
740    to prefix form (in which we can conveniently print or execute it).
741    Ordinarily this always returns -1.  However, if EXPOUT_LAST_STRUCT
742    is not -1 (i.e., we are trying to complete a field name), it will
743    return the index of the subexpression which is the left-hand-side
744    of the struct operation at EXPOUT_LAST_STRUCT.  */
745
746 static int
747 prefixify_expression (struct expression *expr)
748 {
749   int len = sizeof (struct expression) + EXP_ELEM_TO_BYTES (expr->nelts);
750   struct expression *temp;
751   int inpos = expr->nelts, outpos = 0;
752
753   temp = (struct expression *) alloca (len);
754
755   /* Copy the original expression into temp.  */
756   memcpy (temp, expr, len);
757
758   return prefixify_subexp (temp, expr, inpos, outpos);
759 }
760
761 /* Return the number of exp_elements in the postfix subexpression 
762    of EXPR whose operator is at index ENDPOS - 1 in EXPR.  */
763
764 int
765 length_of_subexp (struct expression *expr, int endpos)
766 {
767   int oplen, args, i;
768
769   operator_length (expr, endpos, &oplen, &args);
770
771   while (args > 0)
772     {
773       oplen += length_of_subexp (expr, endpos - oplen);
774       args--;
775     }
776
777   return oplen;
778 }
779
780 /* Sets *OPLENP to the length of the operator whose (last) index is 
781    ENDPOS - 1 in EXPR, and sets *ARGSP to the number of arguments that
782    operator takes.  */
783
784 void
785 operator_length (struct expression *expr, int endpos, int *oplenp, int *argsp)
786 {
787   expr->language_defn->la_exp_desc->operator_length (expr, endpos,
788                                                      oplenp, argsp);
789 }
790
791 /* Default value for operator_length in exp_descriptor vectors.  */
792
793 void
794 operator_length_standard (struct expression *expr, int endpos,
795                           int *oplenp, int *argsp)
796 {
797   int oplen = 1;
798   int args = 0;
799   enum f90_range_type range_type;
800   int i;
801
802   if (endpos < 1)
803     error (_("?error in operator_length_standard"));
804
805   i = (int) expr->elts[endpos - 1].opcode;
806
807   switch (i)
808     {
809       /* C++  */
810     case OP_SCOPE:
811       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
812       oplen = 5 + BYTES_TO_EXP_ELEM (oplen + 1);
813       break;
814
815     case OP_LONG:
816     case OP_DOUBLE:
817     case OP_DECFLOAT:
818     case OP_VAR_VALUE:
819       oplen = 4;
820       break;
821
822     case OP_TYPE:
823     case OP_BOOL:
824     case OP_LAST:
825     case OP_INTERNALVAR:
826       oplen = 3;
827       break;
828
829     case OP_COMPLEX:
830       oplen = 3;
831       args = 2;
832       break;
833
834     case OP_FUNCALL:
835     case OP_F77_UNDETERMINED_ARGLIST:
836       oplen = 3;
837       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
838       break;
839
840     case OP_OBJC_MSGCALL:       /* Objective C message (method) call */
841       oplen = 4;
842       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
843       break;
844
845     case UNOP_MAX:
846     case UNOP_MIN:
847       oplen = 3;
848       break;
849
850     case BINOP_VAL:
851     case UNOP_CAST:
852     case UNOP_MEMVAL:
853       oplen = 3;
854       args = 1;
855       break;
856
857     case UNOP_MEMVAL_TLS:
858       oplen = 4;
859       args = 1;
860       break;
861
862     case UNOP_ABS:
863     case UNOP_CAP:
864     case UNOP_CHR:
865     case UNOP_FLOAT:
866     case UNOP_HIGH:
867     case UNOP_ODD:
868     case UNOP_ORD:
869     case UNOP_TRUNC:
870       oplen = 1;
871       args = 1;
872       break;
873
874     case OP_LABELED:
875     case STRUCTOP_STRUCT:
876     case STRUCTOP_PTR:
877       args = 1;
878       /* fall through */
879     case OP_REGISTER:
880     case OP_M2_STRING:
881     case OP_STRING:
882     case OP_OBJC_NSSTRING:      /* Objective C Foundation Class NSString constant */
883     case OP_OBJC_SELECTOR:      /* Objective C "@selector" pseudo-op */
884     case OP_NAME:
885       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
886       oplen = 4 + BYTES_TO_EXP_ELEM (oplen + 1);
887       break;
888
889     case OP_BITSTRING:
890       oplen = longest_to_int (expr->elts[endpos - 2].longconst);
891       oplen = (oplen + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
892       oplen = 4 + BYTES_TO_EXP_ELEM (oplen);
893       break;
894
895     case OP_ARRAY:
896       oplen = 4;
897       args = longest_to_int (expr->elts[endpos - 2].longconst);
898       args -= longest_to_int (expr->elts[endpos - 3].longconst);
899       args += 1;
900       break;
901
902     case TERNOP_COND:
903     case TERNOP_SLICE:
904     case TERNOP_SLICE_COUNT:
905       args = 3;
906       break;
907
908       /* Modula-2 */
909     case MULTI_SUBSCRIPT:
910       oplen = 3;
911       args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
912       break;
913
914     case BINOP_ASSIGN_MODIFY:
915       oplen = 3;
916       args = 2;
917       break;
918
919       /* C++ */
920     case OP_THIS:
921     case OP_OBJC_SELF:
922       oplen = 2;
923       break;
924
925     case OP_F90_RANGE:
926       oplen = 3;
927
928       range_type = longest_to_int (expr->elts[endpos - 2].longconst);
929       switch (range_type)
930         {
931         case LOW_BOUND_DEFAULT:
932         case HIGH_BOUND_DEFAULT:
933           args = 1;
934           break;
935         case BOTH_BOUND_DEFAULT:
936           args = 0;
937           break;
938         case NONE_BOUND_DEFAULT:
939           args = 2;
940           break;
941         }
942
943       break;
944
945     default:
946       args = 1 + (i < (int) BINOP_END);
947     }
948
949   *oplenp = oplen;
950   *argsp = args;
951 }
952
953 /* Copy the subexpression ending just before index INEND in INEXPR
954    into OUTEXPR, starting at index OUTBEG.
955    In the process, convert it from suffix to prefix form.
956    If EXPOUT_LAST_STRUCT is -1, then this function always returns -1.
957    Otherwise, it returns the index of the subexpression which is the
958    left-hand-side of the expression at EXPOUT_LAST_STRUCT.  */
959
960 static int
961 prefixify_subexp (struct expression *inexpr,
962                   struct expression *outexpr, int inend, int outbeg)
963 {
964   int oplen;
965   int args;
966   int i;
967   int *arglens;
968   enum exp_opcode opcode;
969   int result = -1;
970
971   operator_length (inexpr, inend, &oplen, &args);
972
973   /* Copy the final operator itself, from the end of the input
974      to the beginning of the output.  */
975   inend -= oplen;
976   memcpy (&outexpr->elts[outbeg], &inexpr->elts[inend],
977           EXP_ELEM_TO_BYTES (oplen));
978   outbeg += oplen;
979
980   if (expout_last_struct == inend)
981     result = outbeg - oplen;
982
983   /* Find the lengths of the arg subexpressions.  */
984   arglens = (int *) alloca (args * sizeof (int));
985   for (i = args - 1; i >= 0; i--)
986     {
987       oplen = length_of_subexp (inexpr, inend);
988       arglens[i] = oplen;
989       inend -= oplen;
990     }
991
992   /* Now copy each subexpression, preserving the order of
993      the subexpressions, but prefixifying each one.
994      In this loop, inend starts at the beginning of
995      the expression this level is working on
996      and marches forward over the arguments.
997      outbeg does similarly in the output.  */
998   for (i = 0; i < args; i++)
999     {
1000       int r;
1001       oplen = arglens[i];
1002       inend += oplen;
1003       r = prefixify_subexp (inexpr, outexpr, inend, outbeg);
1004       if (r != -1)
1005         {
1006           /* Return immediately.  We probably have only parsed a
1007              partial expression, so we don't want to try to reverse
1008              the other operands.  */
1009           return r;
1010         }
1011       outbeg += oplen;
1012     }
1013
1014   return result;
1015 }
1016 \f
1017 /* This page contains the two entry points to this file.  */
1018
1019 /* Read an expression from the string *STRINGPTR points to,
1020    parse it, and return a pointer to a  struct expression  that we malloc.
1021    Use block BLOCK as the lexical context for variable names;
1022    if BLOCK is zero, use the block of the selected stack frame.
1023    Meanwhile, advance *STRINGPTR to point after the expression,
1024    at the first nonwhite character that is not part of the expression
1025    (possibly a null character).
1026
1027    If COMMA is nonzero, stop if a comma is reached.  */
1028
1029 struct expression *
1030 parse_exp_1 (char **stringptr, struct block *block, int comma)
1031 {
1032   return parse_exp_in_context (stringptr, block, comma, 0, NULL);
1033 }
1034
1035 /* As for parse_exp_1, except that if VOID_CONTEXT_P, then
1036    no value is expected from the expression.
1037    OUT_SUBEXP is set when attempting to complete a field name; in this
1038    case it is set to the index of the subexpression on the
1039    left-hand-side of the struct op.  If not doing such completion, it
1040    is left untouched.  */
1041
1042 static struct expression *
1043 parse_exp_in_context (char **stringptr, struct block *block, int comma, 
1044                       int void_context_p, int *out_subexp)
1045 {
1046   volatile struct gdb_exception except;
1047   struct cleanup *old_chain;
1048   int subexp;
1049
1050   lexptr = *stringptr;
1051   prev_lexptr = NULL;
1052
1053   paren_depth = 0;
1054   type_stack_depth = 0;
1055   expout_last_struct = -1;
1056
1057   comma_terminates = comma;
1058
1059   if (lexptr == 0 || *lexptr == 0)
1060     error_no_arg (_("expression to compute"));
1061
1062   old_chain = make_cleanup (free_funcalls, 0 /*ignore*/);
1063   funcall_chain = 0;
1064
1065   expression_context_block = block;
1066
1067   /* If no context specified, try using the current frame, if any.  */
1068   if (!expression_context_block)
1069     expression_context_block = get_selected_block (&expression_context_pc);
1070   else
1071     expression_context_pc = BLOCK_START (expression_context_block);
1072
1073   /* Fall back to using the current source static context, if any.  */
1074
1075   if (!expression_context_block)
1076     {
1077       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
1078       if (cursal.symtab)
1079         expression_context_block
1080           = BLOCKVECTOR_BLOCK (BLOCKVECTOR (cursal.symtab), STATIC_BLOCK);
1081       if (expression_context_block)
1082         expression_context_pc = BLOCK_START (expression_context_block);
1083     }
1084
1085   expout_size = 10;
1086   expout_ptr = 0;
1087   expout = (struct expression *)
1088     xmalloc (sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_size));
1089   expout->language_defn = current_language;
1090   expout->gdbarch = get_current_arch ();
1091
1092   TRY_CATCH (except, RETURN_MASK_ALL)
1093     {
1094       if (current_language->la_parser ())
1095         current_language->la_error (NULL);
1096     }
1097   if (except.reason < 0)
1098     {
1099       if (! in_parse_field)
1100         {
1101           xfree (expout);
1102           throw_exception (except);
1103         }
1104     }
1105
1106   discard_cleanups (old_chain);
1107
1108   /* Record the actual number of expression elements, and then
1109      reallocate the expression memory so that we free up any
1110      excess elements. */
1111
1112   expout->nelts = expout_ptr;
1113   expout = (struct expression *)
1114     xrealloc ((char *) expout,
1115               sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_ptr));;
1116
1117   /* Convert expression from postfix form as generated by yacc
1118      parser, to a prefix form. */
1119
1120   if (expressiondebug)
1121     dump_raw_expression (expout, gdb_stdlog,
1122                          "before conversion to prefix form");
1123
1124   subexp = prefixify_expression (expout);
1125   if (out_subexp)
1126     *out_subexp = subexp;
1127
1128   current_language->la_post_parser (&expout, void_context_p);
1129
1130   if (expressiondebug)
1131     dump_prefix_expression (expout, gdb_stdlog);
1132
1133   *stringptr = lexptr;
1134   return expout;
1135 }
1136
1137 /* Parse STRING as an expression, and complain if this fails
1138    to use up all of the contents of STRING.  */
1139
1140 struct expression *
1141 parse_expression (char *string)
1142 {
1143   struct expression *exp;
1144   exp = parse_exp_1 (&string, 0, 0);
1145   if (*string)
1146     error (_("Junk after end of expression."));
1147   return exp;
1148 }
1149
1150 /* Parse STRING as an expression.  If parsing ends in the middle of a
1151    field reference, return the type of the left-hand-side of the
1152    reference; furthermore, if the parsing ends in the field name,
1153    return the field name in *NAME.  In all other cases, return NULL.
1154    Returned non-NULL *NAME must be freed by the caller.  */
1155
1156 struct type *
1157 parse_field_expression (char *string, char **name)
1158 {
1159   struct expression *exp = NULL;
1160   struct value *val;
1161   int subexp;
1162   volatile struct gdb_exception except;
1163
1164   TRY_CATCH (except, RETURN_MASK_ALL)
1165     {
1166       in_parse_field = 1;
1167       exp = parse_exp_in_context (&string, 0, 0, 0, &subexp);
1168     }
1169   in_parse_field = 0;
1170   if (except.reason < 0 || ! exp)
1171     return NULL;
1172   if (expout_last_struct == -1)
1173     {
1174       xfree (exp);
1175       return NULL;
1176     }
1177
1178   *name = extract_field_op (exp, &subexp);
1179   if (!*name)
1180     {
1181       xfree (exp);
1182       return NULL;
1183     }
1184   /* (*NAME) is a part of the EXP memory block freed below.  */
1185   *name = xstrdup (*name);
1186
1187   val = evaluate_subexpression_type (exp, subexp);
1188   xfree (exp);
1189
1190   return value_type (val);
1191 }
1192
1193 /* A post-parser that does nothing */
1194
1195 void
1196 null_post_parser (struct expression **exp, int void_context_p)
1197 {
1198 }
1199 \f
1200 /* Stuff for maintaining a stack of types.  Currently just used by C, but
1201    probably useful for any language which declares its types "backwards".  */
1202
1203 static void
1204 check_type_stack_depth (void)
1205 {
1206   if (type_stack_depth == type_stack_size)
1207     {
1208       type_stack_size *= 2;
1209       type_stack = (union type_stack_elt *)
1210         xrealloc ((char *) type_stack, type_stack_size * sizeof (*type_stack));
1211     }
1212 }
1213
1214 void
1215 push_type (enum type_pieces tp)
1216 {
1217   check_type_stack_depth ();
1218   type_stack[type_stack_depth++].piece = tp;
1219 }
1220
1221 void
1222 push_type_int (int n)
1223 {
1224   check_type_stack_depth ();
1225   type_stack[type_stack_depth++].int_val = n;
1226 }
1227
1228 void
1229 push_type_address_space (char *string)
1230 {
1231   push_type_int (address_space_name_to_int (parse_gdbarch, string));
1232 }
1233
1234 enum type_pieces
1235 pop_type (void)
1236 {
1237   if (type_stack_depth)
1238     return type_stack[--type_stack_depth].piece;
1239   return tp_end;
1240 }
1241
1242 int
1243 pop_type_int (void)
1244 {
1245   if (type_stack_depth)
1246     return type_stack[--type_stack_depth].int_val;
1247   /* "Can't happen".  */
1248   return 0;
1249 }
1250
1251 /* Pop the type stack and return the type which corresponds to FOLLOW_TYPE
1252    as modified by all the stuff on the stack.  */
1253 struct type *
1254 follow_types (struct type *follow_type)
1255 {
1256   int done = 0;
1257   int make_const = 0;
1258   int make_volatile = 0;
1259   int make_addr_space = 0;
1260   int array_size;
1261
1262   while (!done)
1263     switch (pop_type ())
1264       {
1265       case tp_end:
1266         done = 1;
1267         if (make_const)
1268           follow_type = make_cv_type (make_const, 
1269                                       TYPE_VOLATILE (follow_type), 
1270                                       follow_type, 0);
1271         if (make_volatile)
1272           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1273                                       make_volatile, 
1274                                       follow_type, 0);
1275         if (make_addr_space)
1276           follow_type = make_type_with_address_space (follow_type, 
1277                                                       make_addr_space);
1278         make_const = make_volatile = 0;
1279         make_addr_space = 0;
1280         break;
1281       case tp_const:
1282         make_const = 1;
1283         break;
1284       case tp_volatile:
1285         make_volatile = 1;
1286         break;
1287       case tp_space_identifier:
1288         make_addr_space = pop_type_int ();
1289         break;
1290       case tp_pointer:
1291         follow_type = lookup_pointer_type (follow_type);
1292         if (make_const)
1293           follow_type = make_cv_type (make_const, 
1294                                       TYPE_VOLATILE (follow_type), 
1295                                       follow_type, 0);
1296         if (make_volatile)
1297           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1298                                       make_volatile, 
1299                                       follow_type, 0);
1300         if (make_addr_space)
1301           follow_type = make_type_with_address_space (follow_type, 
1302                                                       make_addr_space);
1303         make_const = make_volatile = 0;
1304         make_addr_space = 0;
1305         break;
1306       case tp_reference:
1307         follow_type = lookup_reference_type (follow_type);
1308         if (make_const)
1309           follow_type = make_cv_type (make_const, 
1310                                       TYPE_VOLATILE (follow_type), 
1311                                       follow_type, 0);
1312         if (make_volatile)
1313           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1314                                       make_volatile, 
1315                                       follow_type, 0);
1316         if (make_addr_space)
1317           follow_type = make_type_with_address_space (follow_type, 
1318                                                       make_addr_space);
1319         make_const = make_volatile = 0;
1320         make_addr_space = 0;
1321         break;
1322       case tp_array:
1323         array_size = pop_type_int ();
1324         /* FIXME-type-allocation: need a way to free this type when we are
1325            done with it.  */
1326         follow_type =
1327           lookup_array_range_type (follow_type,
1328                                    0, array_size >= 0 ? array_size - 1 : 0);
1329         if (array_size < 0)
1330           TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (follow_type) = 1;
1331         break;
1332       case tp_function:
1333         /* FIXME-type-allocation: need a way to free this type when we are
1334            done with it.  */
1335         follow_type = lookup_function_type (follow_type);
1336         break;
1337       }
1338   return follow_type;
1339 }
1340 \f
1341 /* This function avoids direct calls to fprintf 
1342    in the parser generated debug code.  */
1343 void
1344 parser_fprintf (FILE *x, const char *y, ...)
1345
1346   va_list args;
1347   va_start (args, y);
1348   if (x == stderr)
1349     vfprintf_unfiltered (gdb_stderr, y, args); 
1350   else
1351     {
1352       fprintf_unfiltered (gdb_stderr, " Unknown FILE used.\n");
1353       vfprintf_unfiltered (gdb_stderr, y, args);
1354     }
1355   va_end (args);
1356 }
1357
1358 void
1359 _initialize_parse (void)
1360 {
1361   type_stack_size = 80;
1362   type_stack_depth = 0;
1363   type_stack = (union type_stack_elt *)
1364     xmalloc (type_stack_size * sizeof (*type_stack));
1365
1366   add_setshow_zinteger_cmd ("expression", class_maintenance,
1367                             &expressiondebug, _("\
1368 Set expression debugging."), _("\
1369 Show expression debugging."), _("\
1370 When non-zero, the internal representation of expressions will be printed."),
1371                             NULL,
1372                             show_expressiondebug,
1373                             &setdebuglist, &showdebuglist);
1374 }