gdb/
[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, i;
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   enum exp_opcode opcode;
988   int result = -1;
989
990   operator_length (inexpr, inend, &oplen, &args);
991
992   /* Copy the final operator itself, from the end of the input
993      to the beginning of the output.  */
994   inend -= oplen;
995   memcpy (&outexpr->elts[outbeg], &inexpr->elts[inend],
996           EXP_ELEM_TO_BYTES (oplen));
997   outbeg += oplen;
998
999   if (expout_last_struct == inend)
1000     result = outbeg - oplen;
1001
1002   /* Find the lengths of the arg subexpressions.  */
1003   arglens = (int *) alloca (args * sizeof (int));
1004   for (i = args - 1; i >= 0; i--)
1005     {
1006       oplen = length_of_subexp (inexpr, inend);
1007       arglens[i] = oplen;
1008       inend -= oplen;
1009     }
1010
1011   /* Now copy each subexpression, preserving the order of
1012      the subexpressions, but prefixifying each one.
1013      In this loop, inend starts at the beginning of
1014      the expression this level is working on
1015      and marches forward over the arguments.
1016      outbeg does similarly in the output.  */
1017   for (i = 0; i < args; i++)
1018     {
1019       int r;
1020       oplen = arglens[i];
1021       inend += oplen;
1022       r = prefixify_subexp (inexpr, outexpr, inend, outbeg);
1023       if (r != -1)
1024         {
1025           /* Return immediately.  We probably have only parsed a
1026              partial expression, so we don't want to try to reverse
1027              the other operands.  */
1028           return r;
1029         }
1030       outbeg += oplen;
1031     }
1032
1033   return result;
1034 }
1035 \f
1036 /* This page contains the two entry points to this file.  */
1037
1038 /* Read an expression from the string *STRINGPTR points to,
1039    parse it, and return a pointer to a  struct expression  that we malloc.
1040    Use block BLOCK as the lexical context for variable names;
1041    if BLOCK is zero, use the block of the selected stack frame.
1042    Meanwhile, advance *STRINGPTR to point after the expression,
1043    at the first nonwhite character that is not part of the expression
1044    (possibly a null character).
1045
1046    If COMMA is nonzero, stop if a comma is reached.  */
1047
1048 struct expression *
1049 parse_exp_1 (char **stringptr, struct block *block, int comma)
1050 {
1051   return parse_exp_in_context (stringptr, block, comma, 0, NULL);
1052 }
1053
1054 /* As for parse_exp_1, except that if VOID_CONTEXT_P, then
1055    no value is expected from the expression.
1056    OUT_SUBEXP is set when attempting to complete a field name; in this
1057    case it is set to the index of the subexpression on the
1058    left-hand-side of the struct op.  If not doing such completion, it
1059    is left untouched.  */
1060
1061 static struct expression *
1062 parse_exp_in_context (char **stringptr, struct block *block, int comma, 
1063                       int void_context_p, int *out_subexp)
1064 {
1065   volatile struct gdb_exception except;
1066   struct cleanup *old_chain;
1067   int subexp;
1068
1069   lexptr = *stringptr;
1070   prev_lexptr = NULL;
1071
1072   paren_depth = 0;
1073   type_stack_depth = 0;
1074   expout_last_struct = -1;
1075
1076   comma_terminates = comma;
1077
1078   if (lexptr == 0 || *lexptr == 0)
1079     error_no_arg (_("expression to compute"));
1080
1081   old_chain = make_cleanup (free_funcalls, 0 /*ignore*/);
1082   funcall_chain = 0;
1083
1084   expression_context_block = block;
1085
1086   /* If no context specified, try using the current frame, if any.  */
1087   if (!expression_context_block)
1088     expression_context_block = get_selected_block (&expression_context_pc);
1089   else
1090     expression_context_pc = BLOCK_START (expression_context_block);
1091
1092   /* Fall back to using the current source static context, if any.  */
1093
1094   if (!expression_context_block)
1095     {
1096       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
1097       if (cursal.symtab)
1098         expression_context_block
1099           = BLOCKVECTOR_BLOCK (BLOCKVECTOR (cursal.symtab), STATIC_BLOCK);
1100       if (expression_context_block)
1101         expression_context_pc = BLOCK_START (expression_context_block);
1102     }
1103
1104   expout_size = 10;
1105   expout_ptr = 0;
1106   expout = (struct expression *)
1107     xmalloc (sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_size));
1108   expout->language_defn = current_language;
1109   expout->gdbarch = get_current_arch ();
1110
1111   TRY_CATCH (except, RETURN_MASK_ALL)
1112     {
1113       if (current_language->la_parser ())
1114         current_language->la_error (NULL);
1115     }
1116   if (except.reason < 0)
1117     {
1118       if (! in_parse_field)
1119         {
1120           xfree (expout);
1121           throw_exception (except);
1122         }
1123     }
1124
1125   discard_cleanups (old_chain);
1126
1127   /* Record the actual number of expression elements, and then
1128      reallocate the expression memory so that we free up any
1129      excess elements. */
1130
1131   expout->nelts = expout_ptr;
1132   expout = (struct expression *)
1133     xrealloc ((char *) expout,
1134               sizeof (struct expression) + EXP_ELEM_TO_BYTES (expout_ptr));;
1135
1136   /* Convert expression from postfix form as generated by yacc
1137      parser, to a prefix form. */
1138
1139   if (expressiondebug)
1140     dump_raw_expression (expout, gdb_stdlog,
1141                          "before conversion to prefix form");
1142
1143   subexp = prefixify_expression (expout);
1144   if (out_subexp)
1145     *out_subexp = subexp;
1146
1147   current_language->la_post_parser (&expout, void_context_p);
1148
1149   if (expressiondebug)
1150     dump_prefix_expression (expout, gdb_stdlog);
1151
1152   *stringptr = lexptr;
1153   return expout;
1154 }
1155
1156 /* Parse STRING as an expression, and complain if this fails
1157    to use up all of the contents of STRING.  */
1158
1159 struct expression *
1160 parse_expression (char *string)
1161 {
1162   struct expression *exp;
1163   exp = parse_exp_1 (&string, 0, 0);
1164   if (*string)
1165     error (_("Junk after end of expression."));
1166   return exp;
1167 }
1168
1169 /* Parse STRING as an expression.  If parsing ends in the middle of a
1170    field reference, return the type of the left-hand-side of the
1171    reference; furthermore, if the parsing ends in the field name,
1172    return the field name in *NAME.  In all other cases, return NULL.
1173    Returned non-NULL *NAME must be freed by the caller.  */
1174
1175 struct type *
1176 parse_field_expression (char *string, char **name)
1177 {
1178   struct expression *exp = NULL;
1179   struct value *val;
1180   int subexp;
1181   volatile struct gdb_exception except;
1182
1183   TRY_CATCH (except, RETURN_MASK_ALL)
1184     {
1185       in_parse_field = 1;
1186       exp = parse_exp_in_context (&string, 0, 0, 0, &subexp);
1187     }
1188   in_parse_field = 0;
1189   if (except.reason < 0 || ! exp)
1190     return NULL;
1191   if (expout_last_struct == -1)
1192     {
1193       xfree (exp);
1194       return NULL;
1195     }
1196
1197   *name = extract_field_op (exp, &subexp);
1198   if (!*name)
1199     {
1200       xfree (exp);
1201       return NULL;
1202     }
1203   /* (*NAME) is a part of the EXP memory block freed below.  */
1204   *name = xstrdup (*name);
1205
1206   val = evaluate_subexpression_type (exp, subexp);
1207   xfree (exp);
1208
1209   return value_type (val);
1210 }
1211
1212 /* A post-parser that does nothing */
1213
1214 void
1215 null_post_parser (struct expression **exp, int void_context_p)
1216 {
1217 }
1218 \f
1219 /* Stuff for maintaining a stack of types.  Currently just used by C, but
1220    probably useful for any language which declares its types "backwards".  */
1221
1222 static void
1223 check_type_stack_depth (void)
1224 {
1225   if (type_stack_depth == type_stack_size)
1226     {
1227       type_stack_size *= 2;
1228       type_stack = (union type_stack_elt *)
1229         xrealloc ((char *) type_stack, type_stack_size * sizeof (*type_stack));
1230     }
1231 }
1232
1233 void
1234 push_type (enum type_pieces tp)
1235 {
1236   check_type_stack_depth ();
1237   type_stack[type_stack_depth++].piece = tp;
1238 }
1239
1240 void
1241 push_type_int (int n)
1242 {
1243   check_type_stack_depth ();
1244   type_stack[type_stack_depth++].int_val = n;
1245 }
1246
1247 void
1248 push_type_address_space (char *string)
1249 {
1250   push_type_int (address_space_name_to_int (parse_gdbarch, string));
1251 }
1252
1253 enum type_pieces
1254 pop_type (void)
1255 {
1256   if (type_stack_depth)
1257     return type_stack[--type_stack_depth].piece;
1258   return tp_end;
1259 }
1260
1261 int
1262 pop_type_int (void)
1263 {
1264   if (type_stack_depth)
1265     return type_stack[--type_stack_depth].int_val;
1266   /* "Can't happen".  */
1267   return 0;
1268 }
1269
1270 /* Pop the type stack and return the type which corresponds to FOLLOW_TYPE
1271    as modified by all the stuff on the stack.  */
1272 struct type *
1273 follow_types (struct type *follow_type)
1274 {
1275   int done = 0;
1276   int make_const = 0;
1277   int make_volatile = 0;
1278   int make_addr_space = 0;
1279   int array_size;
1280
1281   while (!done)
1282     switch (pop_type ())
1283       {
1284       case tp_end:
1285         done = 1;
1286         if (make_const)
1287           follow_type = make_cv_type (make_const, 
1288                                       TYPE_VOLATILE (follow_type), 
1289                                       follow_type, 0);
1290         if (make_volatile)
1291           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1292                                       make_volatile, 
1293                                       follow_type, 0);
1294         if (make_addr_space)
1295           follow_type = make_type_with_address_space (follow_type, 
1296                                                       make_addr_space);
1297         make_const = make_volatile = 0;
1298         make_addr_space = 0;
1299         break;
1300       case tp_const:
1301         make_const = 1;
1302         break;
1303       case tp_volatile:
1304         make_volatile = 1;
1305         break;
1306       case tp_space_identifier:
1307         make_addr_space = pop_type_int ();
1308         break;
1309       case tp_pointer:
1310         follow_type = lookup_pointer_type (follow_type);
1311         if (make_const)
1312           follow_type = make_cv_type (make_const, 
1313                                       TYPE_VOLATILE (follow_type), 
1314                                       follow_type, 0);
1315         if (make_volatile)
1316           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1317                                       make_volatile, 
1318                                       follow_type, 0);
1319         if (make_addr_space)
1320           follow_type = make_type_with_address_space (follow_type, 
1321                                                       make_addr_space);
1322         make_const = make_volatile = 0;
1323         make_addr_space = 0;
1324         break;
1325       case tp_reference:
1326         follow_type = lookup_reference_type (follow_type);
1327         if (make_const)
1328           follow_type = make_cv_type (make_const, 
1329                                       TYPE_VOLATILE (follow_type), 
1330                                       follow_type, 0);
1331         if (make_volatile)
1332           follow_type = make_cv_type (TYPE_CONST (follow_type), 
1333                                       make_volatile, 
1334                                       follow_type, 0);
1335         if (make_addr_space)
1336           follow_type = make_type_with_address_space (follow_type, 
1337                                                       make_addr_space);
1338         make_const = make_volatile = 0;
1339         make_addr_space = 0;
1340         break;
1341       case tp_array:
1342         array_size = pop_type_int ();
1343         /* FIXME-type-allocation: need a way to free this type when we are
1344            done with it.  */
1345         follow_type =
1346           lookup_array_range_type (follow_type,
1347                                    0, array_size >= 0 ? array_size - 1 : 0);
1348         if (array_size < 0)
1349           TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (follow_type) = 1;
1350         break;
1351       case tp_function:
1352         /* FIXME-type-allocation: need a way to free this type when we are
1353            done with it.  */
1354         follow_type = lookup_function_type (follow_type);
1355         break;
1356       }
1357   return follow_type;
1358 }
1359 \f
1360 /* This function avoids direct calls to fprintf 
1361    in the parser generated debug code.  */
1362 void
1363 parser_fprintf (FILE *x, const char *y, ...)
1364
1365   va_list args;
1366   va_start (args, y);
1367   if (x == stderr)
1368     vfprintf_unfiltered (gdb_stderr, y, args); 
1369   else
1370     {
1371       fprintf_unfiltered (gdb_stderr, " Unknown FILE used.\n");
1372       vfprintf_unfiltered (gdb_stderr, y, args);
1373     }
1374   va_end (args);
1375 }
1376
1377 /* Implementation of the exp_descriptor method operator_check.  */
1378
1379 int
1380 operator_check_standard (struct expression *exp, int pos,
1381                          int (*objfile_func) (struct objfile *objfile,
1382                                               void *data),
1383                          void *data)
1384 {
1385   const union exp_element *const elts = exp->elts;
1386   struct type *type = NULL;
1387   struct objfile *objfile = NULL;
1388
1389   /* Extended operators should have been already handled by exp_descriptor
1390      iterate method of its specific language.  */
1391   gdb_assert (elts[pos].opcode < OP_EXTENDED0);
1392
1393   /* Track the callers of write_exp_elt_type for this table.  */
1394
1395   switch (elts[pos].opcode)
1396     {
1397     case BINOP_VAL:
1398     case OP_COMPLEX:
1399     case OP_DECFLOAT:
1400     case OP_DOUBLE:
1401     case OP_LONG:
1402     case OP_SCOPE:
1403     case OP_TYPE:
1404     case UNOP_CAST:
1405     case UNOP_DYNAMIC_CAST:
1406     case UNOP_REINTERPRET_CAST:
1407     case UNOP_MAX:
1408     case UNOP_MEMVAL:
1409     case UNOP_MIN:
1410       type = elts[pos + 1].type;
1411       break;
1412
1413     case TYPE_INSTANCE:
1414       {
1415         LONGEST arg, nargs = elts[pos + 1].longconst;
1416
1417         for (arg = 0; arg < nargs; arg++)
1418           {
1419             struct type *type = elts[pos + 2 + arg].type;
1420             struct objfile *objfile = TYPE_OBJFILE (type);
1421
1422             if (objfile && (*objfile_func) (objfile, data))
1423               return 1;
1424           }
1425       }
1426       break;
1427
1428     case UNOP_MEMVAL_TLS:
1429       objfile = elts[pos + 1].objfile;
1430       type = elts[pos + 2].type;
1431       break;
1432
1433     case OP_VAR_VALUE:
1434       {
1435         const struct block *const block = elts[pos + 1].block;
1436         const struct symbol *const symbol = elts[pos + 2].symbol;
1437
1438         /* Check objfile where the variable itself is placed.
1439            SYMBOL_OBJ_SECTION (symbol) may be NULL.  */
1440         if ((*objfile_func) (SYMBOL_SYMTAB (symbol)->objfile, data))
1441           return 1;
1442
1443         /* Check objfile where is placed the code touching the variable.  */
1444         objfile = lookup_objfile_from_block (block);
1445
1446         type = SYMBOL_TYPE (symbol);
1447       }
1448       break;
1449     }
1450
1451   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
1452
1453   if (type && TYPE_OBJFILE (type)
1454       && (*objfile_func) (TYPE_OBJFILE (type), data))
1455     return 1;
1456   if (objfile && (*objfile_func) (objfile, data))
1457     return 1;
1458
1459   return 0;
1460 }
1461
1462 /* Call OBJFILE_FUNC for any TYPE and OBJFILE found being referenced by EXP.
1463    The functions are never called with NULL OBJFILE.  Functions get passed an
1464    arbitrary caller supplied DATA pointer.  If any of the functions returns
1465    non-zero value then (any other) non-zero value is immediately returned to
1466    the caller.  Otherwise zero is returned after iterating through whole EXP.
1467    */
1468
1469 static int
1470 exp_iterate (struct expression *exp,
1471              int (*objfile_func) (struct objfile *objfile, void *data),
1472              void *data)
1473 {
1474   int endpos;
1475   const union exp_element *const elts = exp->elts;
1476
1477   for (endpos = exp->nelts; endpos > 0; )
1478     {
1479       int pos, args, oplen = 0;
1480
1481       exp->language_defn->la_exp_desc->operator_length (exp, endpos,
1482                                                         &oplen, &args);
1483       gdb_assert (oplen > 0);
1484
1485       pos = endpos - oplen;
1486       if (exp->language_defn->la_exp_desc->operator_check (exp, pos,
1487                                                            objfile_func, data))
1488         return 1;
1489
1490       endpos = pos;
1491     }
1492
1493   return 0;
1494 }
1495
1496 /* Helper for exp_uses_objfile.  */
1497
1498 static int
1499 exp_uses_objfile_iter (struct objfile *exp_objfile, void *objfile_voidp)
1500 {
1501   struct objfile *objfile = objfile_voidp;
1502
1503   if (exp_objfile->separate_debug_objfile_backlink)
1504     exp_objfile = exp_objfile->separate_debug_objfile_backlink;
1505
1506   return exp_objfile == objfile;
1507 }
1508
1509 /* Return 1 if EXP uses OBJFILE (and will become dangling when OBJFILE
1510    is unloaded), otherwise return 0.  OBJFILE must not be a separate debug info
1511    file.  */
1512
1513 int
1514 exp_uses_objfile (struct expression *exp, struct objfile *objfile)
1515 {
1516   gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
1517
1518   return exp_iterate (exp, exp_uses_objfile_iter, objfile);
1519 }
1520
1521 void
1522 _initialize_parse (void)
1523 {
1524   type_stack_size = 80;
1525   type_stack_depth = 0;
1526   type_stack = (union type_stack_elt *)
1527     xmalloc (type_stack_size * sizeof (*type_stack));
1528
1529   add_setshow_zinteger_cmd ("expression", class_maintenance,
1530                             &expressiondebug, _("\
1531 Set expression debugging."), _("\
1532 Show expression debugging."), _("\
1533 When non-zero, the internal representation of expressions will be printed."),
1534                             NULL,
1535                             show_expressiondebug,
1536                             &setdebuglist, &showdebuglist);
1537   add_setshow_boolean_cmd ("parser", class_maintenance,
1538                             &parser_debug, _("\
1539 Set parser debugging."), _("\
1540 Show parser debugging."), _("\
1541 When non-zero, expression parser tracing will be enabled."),
1542                             NULL,
1543                             show_parserdebug,
1544                             &setdebuglist, &showdebuglist);
1545 }