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