]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/c-exp.y
gdb
[thirdparty/binutils-gdb.git] / gdb / c-exp.y
1 /* YACC parser for C expressions, for GDB.
2 Copyright (C) 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
3 1998, 1999, 2000, 2003, 2004, 2006, 2007, 2008
4 Free Software Foundation, Inc.
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 Boston, MA 02110-1301, USA. */
22
23 /* Parse a C expression from text in a string,
24 and return the result as a struct expression pointer.
25 That structure contains arithmetic operations in reverse polish,
26 with constants represented by operations that are followed by special data.
27 See expression.h for the details of the format.
28 What is important here is that it can be built up sequentially
29 during the process of parsing; the lower levels of the tree always
30 come first in the result.
31
32 Note that malloc's and realloc's in this file are transformed to
33 xmalloc and xrealloc respectively by the same sed command in the
34 makefile that remaps any other malloc/realloc inserted by the parser
35 generator. Doing this with #defines and trying to control the interaction
36 with include files (<malloc.h> and <stdlib.h> for example) just became
37 too messy, particularly when such includes can be inserted at random
38 times by the parser generator. */
39
40 %{
41
42 #include "defs.h"
43 #include "gdb_string.h"
44 #include <ctype.h>
45 #include "expression.h"
46 #include "value.h"
47 #include "parser-defs.h"
48 #include "language.h"
49 #include "c-lang.h"
50 #include "bfd.h" /* Required by objfiles.h. */
51 #include "symfile.h" /* Required by objfiles.h. */
52 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
53 #include "charset.h"
54 #include "block.h"
55 #include "cp-support.h"
56 #include "dfp.h"
57
58 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
59 as well as gratuitiously global symbol names, so we can have multiple
60 yacc generated parsers in gdb. Note that these are only the variables
61 produced by yacc. If other parser generators (bison, byacc, etc) produce
62 additional global names that conflict at link time, then those parser
63 generators need to be fixed instead of adding those names to this list. */
64
65 #define yymaxdepth c_maxdepth
66 #define yyparse c_parse_internal
67 #define yylex c_lex
68 #define yyerror c_error
69 #define yylval c_lval
70 #define yychar c_char
71 #define yydebug c_debug
72 #define yypact c_pact
73 #define yyr1 c_r1
74 #define yyr2 c_r2
75 #define yydef c_def
76 #define yychk c_chk
77 #define yypgo c_pgo
78 #define yyact c_act
79 #define yyexca c_exca
80 #define yyerrflag c_errflag
81 #define yynerrs c_nerrs
82 #define yyps c_ps
83 #define yypv c_pv
84 #define yys c_s
85 #define yy_yys c_yys
86 #define yystate c_state
87 #define yytmp c_tmp
88 #define yyv c_v
89 #define yy_yyv c_yyv
90 #define yyval c_val
91 #define yylloc c_lloc
92 #define yyreds c_reds /* With YYDEBUG defined */
93 #define yytoks c_toks /* With YYDEBUG defined */
94 #define yyname c_name /* With YYDEBUG defined */
95 #define yyrule c_rule /* With YYDEBUG defined */
96 #define yylhs c_yylhs
97 #define yylen c_yylen
98 #define yydefred c_yydefred
99 #define yydgoto c_yydgoto
100 #define yysindex c_yysindex
101 #define yyrindex c_yyrindex
102 #define yygindex c_yygindex
103 #define yytable c_yytable
104 #define yycheck c_yycheck
105
106 #ifndef YYDEBUG
107 #define YYDEBUG 1 /* Default to yydebug support */
108 #endif
109
110 #define YYFPRINTF parser_fprintf
111
112 int yyparse (void);
113
114 static int yylex (void);
115
116 void yyerror (char *);
117
118 %}
119
120 /* Although the yacc "value" of an expression is not used,
121 since the result is stored in the structure being created,
122 other node types do have values. */
123
124 %union
125 {
126 LONGEST lval;
127 struct {
128 LONGEST val;
129 struct type *type;
130 } typed_val_int;
131 struct {
132 DOUBLEST dval;
133 struct type *type;
134 } typed_val_float;
135 struct {
136 gdb_byte val[16];
137 struct type *type;
138 } typed_val_decfloat;
139 struct symbol *sym;
140 struct type *tval;
141 struct stoken sval;
142 struct ttype tsym;
143 struct symtoken ssym;
144 int voidval;
145 struct block *bval;
146 enum exp_opcode opcode;
147 struct internalvar *ivar;
148
149 struct type **tvec;
150 int *ivec;
151 }
152
153 %{
154 /* YYSTYPE gets defined by %union */
155 static int parse_number (char *, int, int, YYSTYPE *);
156 %}
157
158 %type <voidval> exp exp1 type_exp start variable qualified_name lcurly
159 %type <lval> rcurly
160 %type <tval> type typebase qualified_type
161 %type <tvec> nonempty_typelist
162 /* %type <bval> block */
163
164 /* Fancy type parsing. */
165 %type <voidval> func_mod direct_abs_decl abs_decl
166 %type <tval> ptype
167 %type <lval> array_mod
168
169 %token <typed_val_int> INT
170 %token <typed_val_float> FLOAT
171 %token <typed_val_decfloat> DECFLOAT
172
173 /* Both NAME and TYPENAME tokens represent symbols in the input,
174 and both convey their data as strings.
175 But a TYPENAME is a string that happens to be defined as a typedef
176 or builtin type name (such as int or char)
177 and a NAME is any other symbol.
178 Contexts where this distinction is not important can use the
179 nonterminal "name", which matches either NAME or TYPENAME. */
180
181 %token <sval> STRING
182 %token <ssym> NAME /* BLOCKNAME defined below to give it higher precedence. */
183 %token <voidval> COMPLETE
184 %token <tsym> TYPENAME
185 %type <sval> name
186 %type <ssym> name_not_typename
187 %type <tsym> typename
188
189 /* A NAME_OR_INT is a symbol which is not known in the symbol table,
190 but which would parse as a valid number in the current input radix.
191 E.g. "c" when input_radix==16. Depending on the parse, it will be
192 turned into a name or into a number. */
193
194 %token <ssym> NAME_OR_INT
195
196 %token STRUCT CLASS UNION ENUM SIZEOF UNSIGNED COLONCOLON
197 %token TEMPLATE
198 %token ERROR
199
200 /* Special type cases, put in to allow the parser to distinguish different
201 legal basetypes. */
202 %token SIGNED_KEYWORD LONG SHORT INT_KEYWORD CONST_KEYWORD VOLATILE_KEYWORD DOUBLE_KEYWORD
203
204 %token <voidval> VARIABLE
205
206 %token <opcode> ASSIGN_MODIFY
207
208 /* C++ */
209 %token TRUEKEYWORD
210 %token FALSEKEYWORD
211
212
213 %left ','
214 %left ABOVE_COMMA
215 %right '=' ASSIGN_MODIFY
216 %right '?'
217 %left OROR
218 %left ANDAND
219 %left '|'
220 %left '^'
221 %left '&'
222 %left EQUAL NOTEQUAL
223 %left '<' '>' LEQ GEQ
224 %left LSH RSH
225 %left '@'
226 %left '+' '-'
227 %left '*' '/' '%'
228 %right UNARY INCREMENT DECREMENT
229 %right ARROW '.' '[' '('
230 %token <ssym> BLOCKNAME
231 %token <bval> FILENAME
232 %type <bval> block
233 %left COLONCOLON
234
235 \f
236 %%
237
238 start : exp1
239 | type_exp
240 ;
241
242 type_exp: type
243 { write_exp_elt_opcode(OP_TYPE);
244 write_exp_elt_type($1);
245 write_exp_elt_opcode(OP_TYPE);}
246 ;
247
248 /* Expressions, including the comma operator. */
249 exp1 : exp
250 | exp1 ',' exp
251 { write_exp_elt_opcode (BINOP_COMMA); }
252 ;
253
254 /* Expressions, not including the comma operator. */
255 exp : '*' exp %prec UNARY
256 { write_exp_elt_opcode (UNOP_IND); }
257 ;
258
259 exp : '&' exp %prec UNARY
260 { write_exp_elt_opcode (UNOP_ADDR); }
261 ;
262
263 exp : '-' exp %prec UNARY
264 { write_exp_elt_opcode (UNOP_NEG); }
265 ;
266
267 exp : '+' exp %prec UNARY
268 { write_exp_elt_opcode (UNOP_PLUS); }
269 ;
270
271 exp : '!' exp %prec UNARY
272 { write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
273 ;
274
275 exp : '~' exp %prec UNARY
276 { write_exp_elt_opcode (UNOP_COMPLEMENT); }
277 ;
278
279 exp : INCREMENT exp %prec UNARY
280 { write_exp_elt_opcode (UNOP_PREINCREMENT); }
281 ;
282
283 exp : DECREMENT exp %prec UNARY
284 { write_exp_elt_opcode (UNOP_PREDECREMENT); }
285 ;
286
287 exp : exp INCREMENT %prec UNARY
288 { write_exp_elt_opcode (UNOP_POSTINCREMENT); }
289 ;
290
291 exp : exp DECREMENT %prec UNARY
292 { write_exp_elt_opcode (UNOP_POSTDECREMENT); }
293 ;
294
295 exp : SIZEOF exp %prec UNARY
296 { write_exp_elt_opcode (UNOP_SIZEOF); }
297 ;
298
299 exp : exp ARROW name
300 { write_exp_elt_opcode (STRUCTOP_PTR);
301 write_exp_string ($3);
302 write_exp_elt_opcode (STRUCTOP_PTR); }
303 ;
304
305 exp : exp ARROW name COMPLETE
306 { mark_struct_expression ();
307 write_exp_elt_opcode (STRUCTOP_PTR);
308 write_exp_string ($3);
309 write_exp_elt_opcode (STRUCTOP_PTR); }
310 ;
311
312 exp : exp ARROW COMPLETE
313 { struct stoken s;
314 mark_struct_expression ();
315 write_exp_elt_opcode (STRUCTOP_PTR);
316 s.ptr = "";
317 s.length = 0;
318 write_exp_string (s);
319 write_exp_elt_opcode (STRUCTOP_PTR); }
320 ;
321
322 exp : exp ARROW qualified_name
323 { /* exp->type::name becomes exp->*(&type::name) */
324 /* Note: this doesn't work if name is a
325 static member! FIXME */
326 write_exp_elt_opcode (UNOP_ADDR);
327 write_exp_elt_opcode (STRUCTOP_MPTR); }
328 ;
329
330 exp : exp ARROW '*' exp
331 { write_exp_elt_opcode (STRUCTOP_MPTR); }
332 ;
333
334 exp : exp '.' name
335 { write_exp_elt_opcode (STRUCTOP_STRUCT);
336 write_exp_string ($3);
337 write_exp_elt_opcode (STRUCTOP_STRUCT); }
338 ;
339
340 exp : exp '.' name COMPLETE
341 { mark_struct_expression ();
342 write_exp_elt_opcode (STRUCTOP_STRUCT);
343 write_exp_string ($3);
344 write_exp_elt_opcode (STRUCTOP_STRUCT); }
345 ;
346
347 exp : exp '.' COMPLETE
348 { struct stoken s;
349 mark_struct_expression ();
350 write_exp_elt_opcode (STRUCTOP_STRUCT);
351 s.ptr = "";
352 s.length = 0;
353 write_exp_string (s);
354 write_exp_elt_opcode (STRUCTOP_STRUCT); }
355 ;
356
357 exp : exp '.' qualified_name
358 { /* exp.type::name becomes exp.*(&type::name) */
359 /* Note: this doesn't work if name is a
360 static member! FIXME */
361 write_exp_elt_opcode (UNOP_ADDR);
362 write_exp_elt_opcode (STRUCTOP_MEMBER); }
363 ;
364
365 exp : exp '.' '*' exp
366 { write_exp_elt_opcode (STRUCTOP_MEMBER); }
367 ;
368
369 exp : exp '[' exp1 ']'
370 { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
371 ;
372
373 exp : exp '('
374 /* This is to save the value of arglist_len
375 being accumulated by an outer function call. */
376 { start_arglist (); }
377 arglist ')' %prec ARROW
378 { write_exp_elt_opcode (OP_FUNCALL);
379 write_exp_elt_longcst ((LONGEST) end_arglist ());
380 write_exp_elt_opcode (OP_FUNCALL); }
381 ;
382
383 lcurly : '{'
384 { start_arglist (); }
385 ;
386
387 arglist :
388 ;
389
390 arglist : exp
391 { arglist_len = 1; }
392 ;
393
394 arglist : arglist ',' exp %prec ABOVE_COMMA
395 { arglist_len++; }
396 ;
397
398 rcurly : '}'
399 { $$ = end_arglist () - 1; }
400 ;
401 exp : lcurly arglist rcurly %prec ARROW
402 { write_exp_elt_opcode (OP_ARRAY);
403 write_exp_elt_longcst ((LONGEST) 0);
404 write_exp_elt_longcst ((LONGEST) $3);
405 write_exp_elt_opcode (OP_ARRAY); }
406 ;
407
408 exp : lcurly type rcurly exp %prec UNARY
409 { write_exp_elt_opcode (UNOP_MEMVAL);
410 write_exp_elt_type ($2);
411 write_exp_elt_opcode (UNOP_MEMVAL); }
412 ;
413
414 exp : '(' type ')' exp %prec UNARY
415 { write_exp_elt_opcode (UNOP_CAST);
416 write_exp_elt_type ($2);
417 write_exp_elt_opcode (UNOP_CAST); }
418 ;
419
420 exp : '(' exp1 ')'
421 { }
422 ;
423
424 /* Binary operators in order of decreasing precedence. */
425
426 exp : exp '@' exp
427 { write_exp_elt_opcode (BINOP_REPEAT); }
428 ;
429
430 exp : exp '*' exp
431 { write_exp_elt_opcode (BINOP_MUL); }
432 ;
433
434 exp : exp '/' exp
435 { write_exp_elt_opcode (BINOP_DIV); }
436 ;
437
438 exp : exp '%' exp
439 { write_exp_elt_opcode (BINOP_REM); }
440 ;
441
442 exp : exp '+' exp
443 { write_exp_elt_opcode (BINOP_ADD); }
444 ;
445
446 exp : exp '-' exp
447 { write_exp_elt_opcode (BINOP_SUB); }
448 ;
449
450 exp : exp LSH exp
451 { write_exp_elt_opcode (BINOP_LSH); }
452 ;
453
454 exp : exp RSH exp
455 { write_exp_elt_opcode (BINOP_RSH); }
456 ;
457
458 exp : exp EQUAL exp
459 { write_exp_elt_opcode (BINOP_EQUAL); }
460 ;
461
462 exp : exp NOTEQUAL exp
463 { write_exp_elt_opcode (BINOP_NOTEQUAL); }
464 ;
465
466 exp : exp LEQ exp
467 { write_exp_elt_opcode (BINOP_LEQ); }
468 ;
469
470 exp : exp GEQ exp
471 { write_exp_elt_opcode (BINOP_GEQ); }
472 ;
473
474 exp : exp '<' exp
475 { write_exp_elt_opcode (BINOP_LESS); }
476 ;
477
478 exp : exp '>' exp
479 { write_exp_elt_opcode (BINOP_GTR); }
480 ;
481
482 exp : exp '&' exp
483 { write_exp_elt_opcode (BINOP_BITWISE_AND); }
484 ;
485
486 exp : exp '^' exp
487 { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
488 ;
489
490 exp : exp '|' exp
491 { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
492 ;
493
494 exp : exp ANDAND exp
495 { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
496 ;
497
498 exp : exp OROR exp
499 { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
500 ;
501
502 exp : exp '?' exp ':' exp %prec '?'
503 { write_exp_elt_opcode (TERNOP_COND); }
504 ;
505
506 exp : exp '=' exp
507 { write_exp_elt_opcode (BINOP_ASSIGN); }
508 ;
509
510 exp : exp ASSIGN_MODIFY exp
511 { write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
512 write_exp_elt_opcode ($2);
513 write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); }
514 ;
515
516 exp : INT
517 { write_exp_elt_opcode (OP_LONG);
518 write_exp_elt_type ($1.type);
519 write_exp_elt_longcst ((LONGEST)($1.val));
520 write_exp_elt_opcode (OP_LONG); }
521 ;
522
523 exp : NAME_OR_INT
524 { YYSTYPE val;
525 parse_number ($1.stoken.ptr, $1.stoken.length, 0, &val);
526 write_exp_elt_opcode (OP_LONG);
527 write_exp_elt_type (val.typed_val_int.type);
528 write_exp_elt_longcst ((LONGEST)val.typed_val_int.val);
529 write_exp_elt_opcode (OP_LONG);
530 }
531 ;
532
533
534 exp : FLOAT
535 { write_exp_elt_opcode (OP_DOUBLE);
536 write_exp_elt_type ($1.type);
537 write_exp_elt_dblcst ($1.dval);
538 write_exp_elt_opcode (OP_DOUBLE); }
539 ;
540
541 exp : DECFLOAT
542 { write_exp_elt_opcode (OP_DECFLOAT);
543 write_exp_elt_type ($1.type);
544 write_exp_elt_decfloatcst ($1.val);
545 write_exp_elt_opcode (OP_DECFLOAT); }
546 ;
547
548 exp : variable
549 ;
550
551 exp : VARIABLE
552 /* Already written by write_dollar_variable. */
553 ;
554
555 exp : SIZEOF '(' type ')' %prec UNARY
556 { write_exp_elt_opcode (OP_LONG);
557 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_int);
558 CHECK_TYPEDEF ($3);
559 write_exp_elt_longcst ((LONGEST) TYPE_LENGTH ($3));
560 write_exp_elt_opcode (OP_LONG); }
561 ;
562
563 exp : STRING
564 { /* C strings are converted into array constants with
565 an explicit null byte added at the end. Thus
566 the array upper bound is the string length.
567 There is no such thing in C as a completely empty
568 string. */
569 char *sp = $1.ptr; int count = $1.length;
570 while (count-- > 0)
571 {
572 write_exp_elt_opcode (OP_LONG);
573 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_char);
574 write_exp_elt_longcst ((LONGEST)(*sp++));
575 write_exp_elt_opcode (OP_LONG);
576 }
577 write_exp_elt_opcode (OP_LONG);
578 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_char);
579 write_exp_elt_longcst ((LONGEST)'\0');
580 write_exp_elt_opcode (OP_LONG);
581 write_exp_elt_opcode (OP_ARRAY);
582 write_exp_elt_longcst ((LONGEST) 0);
583 write_exp_elt_longcst ((LONGEST) ($1.length));
584 write_exp_elt_opcode (OP_ARRAY); }
585 ;
586
587 /* C++. */
588 exp : TRUEKEYWORD
589 { write_exp_elt_opcode (OP_LONG);
590 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_bool);
591 write_exp_elt_longcst ((LONGEST) 1);
592 write_exp_elt_opcode (OP_LONG); }
593 ;
594
595 exp : FALSEKEYWORD
596 { write_exp_elt_opcode (OP_LONG);
597 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_bool);
598 write_exp_elt_longcst ((LONGEST) 0);
599 write_exp_elt_opcode (OP_LONG); }
600 ;
601
602 /* end of C++. */
603
604 block : BLOCKNAME
605 {
606 if ($1.sym)
607 $$ = SYMBOL_BLOCK_VALUE ($1.sym);
608 else
609 error ("No file or function \"%s\".",
610 copy_name ($1.stoken));
611 }
612 | FILENAME
613 {
614 $$ = $1;
615 }
616 ;
617
618 block : block COLONCOLON name
619 { struct symbol *tem
620 = lookup_symbol (copy_name ($3), $1,
621 VAR_DOMAIN, (int *) NULL);
622 if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
623 error ("No function \"%s\" in specified context.",
624 copy_name ($3));
625 $$ = SYMBOL_BLOCK_VALUE (tem); }
626 ;
627
628 variable: block COLONCOLON name
629 { struct symbol *sym;
630 sym = lookup_symbol (copy_name ($3), $1,
631 VAR_DOMAIN, (int *) NULL);
632 if (sym == 0)
633 error ("No symbol \"%s\" in specified context.",
634 copy_name ($3));
635
636 write_exp_elt_opcode (OP_VAR_VALUE);
637 /* block_found is set by lookup_symbol. */
638 write_exp_elt_block (block_found);
639 write_exp_elt_sym (sym);
640 write_exp_elt_opcode (OP_VAR_VALUE); }
641 ;
642
643 qualified_name: typebase COLONCOLON name
644 {
645 struct type *type = $1;
646 if (TYPE_CODE (type) != TYPE_CODE_STRUCT
647 && TYPE_CODE (type) != TYPE_CODE_UNION
648 && TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
649 error ("`%s' is not defined as an aggregate type.",
650 TYPE_NAME (type));
651
652 write_exp_elt_opcode (OP_SCOPE);
653 write_exp_elt_type (type);
654 write_exp_string ($3);
655 write_exp_elt_opcode (OP_SCOPE);
656 }
657 | typebase COLONCOLON '~' name
658 {
659 struct type *type = $1;
660 struct stoken tmp_token;
661 if (TYPE_CODE (type) != TYPE_CODE_STRUCT
662 && TYPE_CODE (type) != TYPE_CODE_UNION
663 && TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
664 error ("`%s' is not defined as an aggregate type.",
665 TYPE_NAME (type));
666
667 tmp_token.ptr = (char*) alloca ($4.length + 2);
668 tmp_token.length = $4.length + 1;
669 tmp_token.ptr[0] = '~';
670 memcpy (tmp_token.ptr+1, $4.ptr, $4.length);
671 tmp_token.ptr[tmp_token.length] = 0;
672
673 /* Check for valid destructor name. */
674 destructor_name_p (tmp_token.ptr, type);
675 write_exp_elt_opcode (OP_SCOPE);
676 write_exp_elt_type (type);
677 write_exp_string (tmp_token);
678 write_exp_elt_opcode (OP_SCOPE);
679 }
680 ;
681
682 variable: qualified_name
683 | COLONCOLON name
684 {
685 char *name = copy_name ($2);
686 struct symbol *sym;
687 struct minimal_symbol *msymbol;
688
689 sym =
690 lookup_symbol (name, (const struct block *) NULL,
691 VAR_DOMAIN, (int *) NULL);
692 if (sym)
693 {
694 write_exp_elt_opcode (OP_VAR_VALUE);
695 write_exp_elt_block (NULL);
696 write_exp_elt_sym (sym);
697 write_exp_elt_opcode (OP_VAR_VALUE);
698 break;
699 }
700
701 msymbol = lookup_minimal_symbol (name, NULL, NULL);
702 if (msymbol != NULL)
703 {
704 write_exp_msymbol (msymbol,
705 lookup_function_type (builtin_type (current_gdbarch)->builtin_int),
706 builtin_type (current_gdbarch)->builtin_int);
707 }
708 else
709 if (!have_full_symbols () && !have_partial_symbols ())
710 error ("No symbol table is loaded. Use the \"file\" command.");
711 else
712 error ("No symbol \"%s\" in current context.", name);
713 }
714 ;
715
716 variable: name_not_typename
717 { struct symbol *sym = $1.sym;
718
719 if (sym)
720 {
721 if (symbol_read_needs_frame (sym))
722 {
723 if (innermost_block == 0 ||
724 contained_in (block_found,
725 innermost_block))
726 innermost_block = block_found;
727 }
728
729 write_exp_elt_opcode (OP_VAR_VALUE);
730 /* We want to use the selected frame, not
731 another more inner frame which happens to
732 be in the same block. */
733 write_exp_elt_block (NULL);
734 write_exp_elt_sym (sym);
735 write_exp_elt_opcode (OP_VAR_VALUE);
736 }
737 else if ($1.is_a_field_of_this)
738 {
739 /* C++: it hangs off of `this'. Must
740 not inadvertently convert from a method call
741 to data ref. */
742 if (innermost_block == 0 ||
743 contained_in (block_found, innermost_block))
744 innermost_block = block_found;
745 write_exp_elt_opcode (OP_THIS);
746 write_exp_elt_opcode (OP_THIS);
747 write_exp_elt_opcode (STRUCTOP_PTR);
748 write_exp_string ($1.stoken);
749 write_exp_elt_opcode (STRUCTOP_PTR);
750 }
751 else
752 {
753 struct minimal_symbol *msymbol;
754 char *arg = copy_name ($1.stoken);
755
756 msymbol =
757 lookup_minimal_symbol (arg, NULL, NULL);
758 if (msymbol != NULL)
759 {
760 write_exp_msymbol (msymbol,
761 lookup_function_type (builtin_type (current_gdbarch)->builtin_int),
762 builtin_type (current_gdbarch)->builtin_int);
763 }
764 else if (!have_full_symbols () && !have_partial_symbols ())
765 error ("No symbol table is loaded. Use the \"file\" command.");
766 else
767 error ("No symbol \"%s\" in current context.",
768 copy_name ($1.stoken));
769 }
770 }
771 ;
772
773 space_identifier : '@' NAME
774 { push_type_address_space (copy_name ($2.stoken));
775 push_type (tp_space_identifier);
776 }
777 ;
778
779 const_or_volatile: const_or_volatile_noopt
780 |
781 ;
782
783 cv_with_space_id : const_or_volatile space_identifier const_or_volatile
784 ;
785
786 const_or_volatile_or_space_identifier_noopt: cv_with_space_id
787 | const_or_volatile_noopt
788 ;
789
790 const_or_volatile_or_space_identifier:
791 const_or_volatile_or_space_identifier_noopt
792 |
793 ;
794
795 abs_decl: '*'
796 { push_type (tp_pointer); $$ = 0; }
797 | '*' abs_decl
798 { push_type (tp_pointer); $$ = $2; }
799 | '&'
800 { push_type (tp_reference); $$ = 0; }
801 | '&' abs_decl
802 { push_type (tp_reference); $$ = $2; }
803 | direct_abs_decl
804 ;
805
806 direct_abs_decl: '(' abs_decl ')'
807 { $$ = $2; }
808 | direct_abs_decl array_mod
809 {
810 push_type_int ($2);
811 push_type (tp_array);
812 }
813 | array_mod
814 {
815 push_type_int ($1);
816 push_type (tp_array);
817 $$ = 0;
818 }
819
820 | direct_abs_decl func_mod
821 { push_type (tp_function); }
822 | func_mod
823 { push_type (tp_function); }
824 ;
825
826 array_mod: '[' ']'
827 { $$ = -1; }
828 | '[' INT ']'
829 { $$ = $2.val; }
830 ;
831
832 func_mod: '(' ')'
833 { $$ = 0; }
834 | '(' nonempty_typelist ')'
835 { free ($2); $$ = 0; }
836 ;
837
838 /* We used to try to recognize pointer to member types here, but
839 that didn't work (shift/reduce conflicts meant that these rules never
840 got executed). The problem is that
841 int (foo::bar::baz::bizzle)
842 is a function type but
843 int (foo::bar::baz::bizzle::*)
844 is a pointer to member type. Stroustrup loses again! */
845
846 type : ptype
847 ;
848
849 typebase /* Implements (approximately): (type-qualifier)* type-specifier */
850 : TYPENAME
851 { $$ = $1.type; }
852 | INT_KEYWORD
853 { $$ = builtin_type (current_gdbarch)->builtin_int; }
854 | LONG
855 { $$ = builtin_type (current_gdbarch)->builtin_long; }
856 | SHORT
857 { $$ = builtin_type (current_gdbarch)->builtin_short; }
858 | LONG INT_KEYWORD
859 { $$ = builtin_type (current_gdbarch)->builtin_long; }
860 | LONG SIGNED_KEYWORD INT_KEYWORD
861 { $$ = builtin_type (current_gdbarch)->builtin_long; }
862 | LONG SIGNED_KEYWORD
863 { $$ = builtin_type (current_gdbarch)->builtin_long; }
864 | SIGNED_KEYWORD LONG INT_KEYWORD
865 { $$ = builtin_type (current_gdbarch)->builtin_long; }
866 | UNSIGNED LONG INT_KEYWORD
867 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long; }
868 | LONG UNSIGNED INT_KEYWORD
869 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long; }
870 | LONG UNSIGNED
871 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long; }
872 | LONG LONG
873 { $$ = builtin_type (current_gdbarch)->builtin_long_long; }
874 | LONG LONG INT_KEYWORD
875 { $$ = builtin_type (current_gdbarch)->builtin_long_long; }
876 | LONG LONG SIGNED_KEYWORD INT_KEYWORD
877 { $$ = builtin_type (current_gdbarch)->builtin_long_long; }
878 | LONG LONG SIGNED_KEYWORD
879 { $$ = builtin_type (current_gdbarch)->builtin_long_long; }
880 | SIGNED_KEYWORD LONG LONG
881 { $$ = builtin_type (current_gdbarch)->builtin_long_long; }
882 | SIGNED_KEYWORD LONG LONG INT_KEYWORD
883 { $$ = builtin_type (current_gdbarch)->builtin_long_long; }
884 | UNSIGNED LONG LONG
885 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
886 | UNSIGNED LONG LONG INT_KEYWORD
887 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
888 | LONG LONG UNSIGNED
889 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
890 | LONG LONG UNSIGNED INT_KEYWORD
891 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
892 | SHORT INT_KEYWORD
893 { $$ = builtin_type (current_gdbarch)->builtin_short; }
894 | SHORT SIGNED_KEYWORD INT_KEYWORD
895 { $$ = builtin_type (current_gdbarch)->builtin_short; }
896 | SHORT SIGNED_KEYWORD
897 { $$ = builtin_type (current_gdbarch)->builtin_short; }
898 | UNSIGNED SHORT INT_KEYWORD
899 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_short; }
900 | SHORT UNSIGNED
901 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_short; }
902 | SHORT UNSIGNED INT_KEYWORD
903 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_short; }
904 | DOUBLE_KEYWORD
905 { $$ = builtin_type (current_gdbarch)->builtin_double; }
906 | LONG DOUBLE_KEYWORD
907 { $$ = builtin_type (current_gdbarch)->builtin_long_double; }
908 | STRUCT name
909 { $$ = lookup_struct (copy_name ($2),
910 expression_context_block); }
911 | CLASS name
912 { $$ = lookup_struct (copy_name ($2),
913 expression_context_block); }
914 | UNION name
915 { $$ = lookup_union (copy_name ($2),
916 expression_context_block); }
917 | ENUM name
918 { $$ = lookup_enum (copy_name ($2),
919 expression_context_block); }
920 | UNSIGNED typename
921 { $$ = lookup_unsigned_typename (TYPE_NAME($2.type)); }
922 | UNSIGNED
923 { $$ = builtin_type (current_gdbarch)->builtin_unsigned_int; }
924 | SIGNED_KEYWORD typename
925 { $$ = lookup_signed_typename (TYPE_NAME($2.type)); }
926 | SIGNED_KEYWORD
927 { $$ = builtin_type (current_gdbarch)->builtin_int; }
928 /* It appears that this rule for templates is never
929 reduced; template recognition happens by lookahead
930 in the token processing code in yylex. */
931 | TEMPLATE name '<' type '>'
932 { $$ = lookup_template_type(copy_name($2), $4,
933 expression_context_block);
934 }
935 | const_or_volatile_or_space_identifier_noopt typebase
936 { $$ = follow_types ($2); }
937 | typebase const_or_volatile_or_space_identifier_noopt
938 { $$ = follow_types ($1); }
939 | qualified_type
940 ;
941
942 /* FIXME: carlton/2003-09-25: This next bit leads to lots of
943 reduce-reduce conflicts, because the parser doesn't know whether or
944 not to use qualified_name or qualified_type: the rules are
945 identical. If the parser is parsing 'A::B::x', then, when it sees
946 the second '::', it knows that the expression to the left of it has
947 to be a type, so it uses qualified_type. But if it is parsing just
948 'A::B', then it doesn't have any way of knowing which rule to use,
949 so there's a reduce-reduce conflict; it picks qualified_name, since
950 that occurs earlier in this file than qualified_type.
951
952 There's no good way to fix this with the grammar as it stands; as
953 far as I can tell, some of the problems arise from ambiguities that
954 GDB introduces ('start' can be either an expression or a type), but
955 some of it is inherent to the nature of C++ (you want to treat the
956 input "(FOO)" fairly differently depending on whether FOO is an
957 expression or a type, and if FOO is a complex expression, this can
958 be hard to determine at the right time). Fortunately, it works
959 pretty well in most cases. For example, if you do 'ptype A::B',
960 where A::B is a nested type, then the parser will mistakenly
961 misidentify it as an expression; but evaluate_subexp will get
962 called with 'noside' set to EVAL_AVOID_SIDE_EFFECTS, and everything
963 will work out anyways. But there are situations where the parser
964 will get confused: the most common one that I've run into is when
965 you want to do
966
967 print *((A::B *) x)"
968
969 where the parser doesn't realize that A::B has to be a type until
970 it hits the first right paren, at which point it's too late. (The
971 workaround is to type "print *(('A::B' *) x)" instead.) (And
972 another solution is to fix our symbol-handling code so that the
973 user never wants to type something like that in the first place,
974 because we get all the types right without the user's help!)
975
976 Perhaps we could fix this by making the lexer smarter. Some of
977 this functionality used to be in the lexer, but in a way that
978 worked even less well than the current solution: that attempt
979 involved having the parser sometimes handle '::' and having the
980 lexer sometimes handle it, and without a clear division of
981 responsibility, it quickly degenerated into a big mess. Probably
982 the eventual correct solution will give more of a role to the lexer
983 (ideally via code that is shared between the lexer and
984 decode_line_1), but I'm not holding my breath waiting for somebody
985 to get around to cleaning this up... */
986
987 qualified_type: typebase COLONCOLON name
988 {
989 struct type *type = $1;
990 struct type *new_type;
991 char *ncopy = alloca ($3.length + 1);
992
993 memcpy (ncopy, $3.ptr, $3.length);
994 ncopy[$3.length] = '\0';
995
996 if (TYPE_CODE (type) != TYPE_CODE_STRUCT
997 && TYPE_CODE (type) != TYPE_CODE_UNION
998 && TYPE_CODE (type) != TYPE_CODE_NAMESPACE)
999 error ("`%s' is not defined as an aggregate type.",
1000 TYPE_NAME (type));
1001
1002 new_type = cp_lookup_nested_type (type, ncopy,
1003 expression_context_block);
1004 if (new_type == NULL)
1005 error ("No type \"%s\" within class or namespace \"%s\".",
1006 ncopy, TYPE_NAME (type));
1007
1008 $$ = new_type;
1009 }
1010 ;
1011
1012 typename: TYPENAME
1013 | INT_KEYWORD
1014 {
1015 $$.stoken.ptr = "int";
1016 $$.stoken.length = 3;
1017 $$.type = builtin_type (current_gdbarch)->builtin_int;
1018 }
1019 | LONG
1020 {
1021 $$.stoken.ptr = "long";
1022 $$.stoken.length = 4;
1023 $$.type = builtin_type (current_gdbarch)->builtin_long;
1024 }
1025 | SHORT
1026 {
1027 $$.stoken.ptr = "short";
1028 $$.stoken.length = 5;
1029 $$.type = builtin_type (current_gdbarch)->builtin_short;
1030 }
1031 ;
1032
1033 nonempty_typelist
1034 : type
1035 { $$ = (struct type **) malloc (sizeof (struct type *) * 2);
1036 $<ivec>$[0] = 1; /* Number of types in vector */
1037 $$[1] = $1;
1038 }
1039 | nonempty_typelist ',' type
1040 { int len = sizeof (struct type *) * (++($<ivec>1[0]) + 1);
1041 $$ = (struct type **) realloc ((char *) $1, len);
1042 $$[$<ivec>$[0]] = $3;
1043 }
1044 ;
1045
1046 ptype : typebase
1047 | ptype const_or_volatile_or_space_identifier abs_decl const_or_volatile_or_space_identifier
1048 { $$ = follow_types ($1); }
1049 ;
1050
1051 const_and_volatile: CONST_KEYWORD VOLATILE_KEYWORD
1052 | VOLATILE_KEYWORD CONST_KEYWORD
1053 ;
1054
1055 const_or_volatile_noopt: const_and_volatile
1056 { push_type (tp_const);
1057 push_type (tp_volatile);
1058 }
1059 | CONST_KEYWORD
1060 { push_type (tp_const); }
1061 | VOLATILE_KEYWORD
1062 { push_type (tp_volatile); }
1063 ;
1064
1065 name : NAME { $$ = $1.stoken; }
1066 | BLOCKNAME { $$ = $1.stoken; }
1067 | TYPENAME { $$ = $1.stoken; }
1068 | NAME_OR_INT { $$ = $1.stoken; }
1069 ;
1070
1071 name_not_typename : NAME
1072 | BLOCKNAME
1073 /* These would be useful if name_not_typename was useful, but it is just
1074 a fake for "variable", so these cause reduce/reduce conflicts because
1075 the parser can't tell whether NAME_OR_INT is a name_not_typename (=variable,
1076 =exp) or just an exp. If name_not_typename was ever used in an lvalue
1077 context where only a name could occur, this might be useful.
1078 | NAME_OR_INT
1079 */
1080 ;
1081
1082 %%
1083
1084 /* Take care of parsing a number (anything that starts with a digit).
1085 Set yylval and return the token type; update lexptr.
1086 LEN is the number of characters in it. */
1087
1088 /*** Needs some error checking for the float case ***/
1089
1090 static int
1091 parse_number (p, len, parsed_float, putithere)
1092 char *p;
1093 int len;
1094 int parsed_float;
1095 YYSTYPE *putithere;
1096 {
1097 /* FIXME: Shouldn't these be unsigned? We don't deal with negative values
1098 here, and we do kind of silly things like cast to unsigned. */
1099 LONGEST n = 0;
1100 LONGEST prevn = 0;
1101 ULONGEST un;
1102
1103 int i = 0;
1104 int c;
1105 int base = input_radix;
1106 int unsigned_p = 0;
1107
1108 /* Number of "L" suffixes encountered. */
1109 int long_p = 0;
1110
1111 /* We have found a "L" or "U" suffix. */
1112 int found_suffix = 0;
1113
1114 ULONGEST high_bit;
1115 struct type *signed_type;
1116 struct type *unsigned_type;
1117
1118 if (parsed_float)
1119 {
1120 /* It's a float since it contains a point or an exponent. */
1121 char *s = malloc (len);
1122 int num = 0; /* number of tokens scanned by scanf */
1123 char saved_char = p[len];
1124
1125 p[len] = 0; /* null-terminate the token */
1126
1127 /* If it ends at "df", "dd" or "dl", take it as type of decimal floating
1128 point. Return DECFLOAT. */
1129
1130 if (p[len - 2] == 'd' && p[len - 1] == 'f')
1131 {
1132 p[len - 2] = '\0';
1133 putithere->typed_val_decfloat.type
1134 = builtin_type (current_gdbarch)->builtin_decfloat;
1135 decimal_from_string (putithere->typed_val_decfloat.val, 4, p);
1136 p[len] = saved_char;
1137 return (DECFLOAT);
1138 }
1139
1140 if (p[len - 2] == 'd' && p[len - 1] == 'd')
1141 {
1142 p[len - 2] = '\0';
1143 putithere->typed_val_decfloat.type
1144 = builtin_type (current_gdbarch)->builtin_decdouble;
1145 decimal_from_string (putithere->typed_val_decfloat.val, 8, p);
1146 p[len] = saved_char;
1147 return (DECFLOAT);
1148 }
1149
1150 if (p[len - 2] == 'd' && p[len - 1] == 'l')
1151 {
1152 p[len - 2] = '\0';
1153 putithere->typed_val_decfloat.type
1154 = builtin_type (current_gdbarch)->builtin_declong;
1155 decimal_from_string (putithere->typed_val_decfloat.val, 16, p);
1156 p[len] = saved_char;
1157 return (DECFLOAT);
1158 }
1159
1160 num = sscanf (p, "%" DOUBLEST_SCAN_FORMAT "%s",
1161 &putithere->typed_val_float.dval, s);
1162 p[len] = saved_char; /* restore the input stream */
1163
1164 if (num == 1)
1165 putithere->typed_val_float.type =
1166 builtin_type (current_gdbarch)->builtin_double;
1167
1168 if (num == 2 )
1169 {
1170 /* See if it has any float suffix: 'f' for float, 'l' for long
1171 double. */
1172 if (!strcasecmp (s, "f"))
1173 putithere->typed_val_float.type =
1174 builtin_type (current_gdbarch)->builtin_float;
1175 else if (!strcasecmp (s, "l"))
1176 putithere->typed_val_float.type =
1177 builtin_type (current_gdbarch)->builtin_long_double;
1178 else
1179 {
1180 free (s);
1181 return ERROR;
1182 }
1183 }
1184
1185 free (s);
1186 return FLOAT;
1187 }
1188
1189 /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
1190 if (p[0] == '0')
1191 switch (p[1])
1192 {
1193 case 'x':
1194 case 'X':
1195 if (len >= 3)
1196 {
1197 p += 2;
1198 base = 16;
1199 len -= 2;
1200 }
1201 break;
1202
1203 case 't':
1204 case 'T':
1205 case 'd':
1206 case 'D':
1207 if (len >= 3)
1208 {
1209 p += 2;
1210 base = 10;
1211 len -= 2;
1212 }
1213 break;
1214
1215 default:
1216 base = 8;
1217 break;
1218 }
1219
1220 while (len-- > 0)
1221 {
1222 c = *p++;
1223 if (c >= 'A' && c <= 'Z')
1224 c += 'a' - 'A';
1225 if (c != 'l' && c != 'u')
1226 n *= base;
1227 if (c >= '0' && c <= '9')
1228 {
1229 if (found_suffix)
1230 return ERROR;
1231 n += i = c - '0';
1232 }
1233 else
1234 {
1235 if (base > 10 && c >= 'a' && c <= 'f')
1236 {
1237 if (found_suffix)
1238 return ERROR;
1239 n += i = c - 'a' + 10;
1240 }
1241 else if (c == 'l')
1242 {
1243 ++long_p;
1244 found_suffix = 1;
1245 }
1246 else if (c == 'u')
1247 {
1248 unsigned_p = 1;
1249 found_suffix = 1;
1250 }
1251 else
1252 return ERROR; /* Char not a digit */
1253 }
1254 if (i >= base)
1255 return ERROR; /* Invalid digit in this base */
1256
1257 /* Portably test for overflow (only works for nonzero values, so make
1258 a second check for zero). FIXME: Can't we just make n and prevn
1259 unsigned and avoid this? */
1260 if (c != 'l' && c != 'u' && (prevn >= n) && n != 0)
1261 unsigned_p = 1; /* Try something unsigned */
1262
1263 /* Portably test for unsigned overflow.
1264 FIXME: This check is wrong; for example it doesn't find overflow
1265 on 0x123456789 when LONGEST is 32 bits. */
1266 if (c != 'l' && c != 'u' && n != 0)
1267 {
1268 if ((unsigned_p && (ULONGEST) prevn >= (ULONGEST) n))
1269 error ("Numeric constant too large.");
1270 }
1271 prevn = n;
1272 }
1273
1274 /* An integer constant is an int, a long, or a long long. An L
1275 suffix forces it to be long; an LL suffix forces it to be long
1276 long. If not forced to a larger size, it gets the first type of
1277 the above that it fits in. To figure out whether it fits, we
1278 shift it right and see whether anything remains. Note that we
1279 can't shift sizeof (LONGEST) * HOST_CHAR_BIT bits or more in one
1280 operation, because many compilers will warn about such a shift
1281 (which always produces a zero result). Sometimes gdbarch_int_bit
1282 or gdbarch_long_bit will be that big, sometimes not. To deal with
1283 the case where it is we just always shift the value more than
1284 once, with fewer bits each time. */
1285
1286 un = (ULONGEST)n >> 2;
1287 if (long_p == 0
1288 && (un >> (gdbarch_int_bit (current_gdbarch) - 2)) == 0)
1289 {
1290 high_bit = ((ULONGEST)1) << (gdbarch_int_bit (current_gdbarch) - 1);
1291
1292 /* A large decimal (not hex or octal) constant (between INT_MAX
1293 and UINT_MAX) is a long or unsigned long, according to ANSI,
1294 never an unsigned int, but this code treats it as unsigned
1295 int. This probably should be fixed. GCC gives a warning on
1296 such constants. */
1297
1298 unsigned_type = builtin_type (current_gdbarch)->builtin_unsigned_int;
1299 signed_type = builtin_type (current_gdbarch)->builtin_int;
1300 }
1301 else if (long_p <= 1
1302 && (un >> (gdbarch_long_bit (current_gdbarch) - 2)) == 0)
1303 {
1304 high_bit = ((ULONGEST)1) << (gdbarch_long_bit (current_gdbarch) - 1);
1305 unsigned_type = builtin_type (current_gdbarch)->builtin_unsigned_long;
1306 signed_type = builtin_type (current_gdbarch)->builtin_long;
1307 }
1308 else
1309 {
1310 int shift;
1311 if (sizeof (ULONGEST) * HOST_CHAR_BIT
1312 < gdbarch_long_long_bit (current_gdbarch))
1313 /* A long long does not fit in a LONGEST. */
1314 shift = (sizeof (ULONGEST) * HOST_CHAR_BIT - 1);
1315 else
1316 shift = (gdbarch_long_long_bit (current_gdbarch) - 1);
1317 high_bit = (ULONGEST) 1 << shift;
1318 unsigned_type = builtin_type (current_gdbarch)->builtin_unsigned_long_long;
1319 signed_type = builtin_type (current_gdbarch)->builtin_long_long;
1320 }
1321
1322 putithere->typed_val_int.val = n;
1323
1324 /* If the high bit of the worked out type is set then this number
1325 has to be unsigned. */
1326
1327 if (unsigned_p || (n & high_bit))
1328 {
1329 putithere->typed_val_int.type = unsigned_type;
1330 }
1331 else
1332 {
1333 putithere->typed_val_int.type = signed_type;
1334 }
1335
1336 return INT;
1337 }
1338
1339 struct token
1340 {
1341 char *operator;
1342 int token;
1343 enum exp_opcode opcode;
1344 };
1345
1346 static const struct token tokentab3[] =
1347 {
1348 {">>=", ASSIGN_MODIFY, BINOP_RSH},
1349 {"<<=", ASSIGN_MODIFY, BINOP_LSH}
1350 };
1351
1352 static const struct token tokentab2[] =
1353 {
1354 {"+=", ASSIGN_MODIFY, BINOP_ADD},
1355 {"-=", ASSIGN_MODIFY, BINOP_SUB},
1356 {"*=", ASSIGN_MODIFY, BINOP_MUL},
1357 {"/=", ASSIGN_MODIFY, BINOP_DIV},
1358 {"%=", ASSIGN_MODIFY, BINOP_REM},
1359 {"|=", ASSIGN_MODIFY, BINOP_BITWISE_IOR},
1360 {"&=", ASSIGN_MODIFY, BINOP_BITWISE_AND},
1361 {"^=", ASSIGN_MODIFY, BINOP_BITWISE_XOR},
1362 {"++", INCREMENT, BINOP_END},
1363 {"--", DECREMENT, BINOP_END},
1364 {"->", ARROW, BINOP_END},
1365 {"&&", ANDAND, BINOP_END},
1366 {"||", OROR, BINOP_END},
1367 {"::", COLONCOLON, BINOP_END},
1368 {"<<", LSH, BINOP_END},
1369 {">>", RSH, BINOP_END},
1370 {"==", EQUAL, BINOP_END},
1371 {"!=", NOTEQUAL, BINOP_END},
1372 {"<=", LEQ, BINOP_END},
1373 {">=", GEQ, BINOP_END}
1374 };
1375
1376 /* This is set if a NAME token appeared at the very end of the input
1377 string, with no whitespace separating the name from the EOF. This
1378 is used only when parsing to do field name completion. */
1379 static int saw_name_at_eof;
1380
1381 /* This is set if the previously-returned token was a structure
1382 operator -- either '.' or ARROW. This is used only when parsing to
1383 do field name completion. */
1384 static int last_was_structop;
1385
1386 /* Read one token, getting characters through lexptr. */
1387
1388 static int
1389 yylex ()
1390 {
1391 int c;
1392 int namelen;
1393 unsigned int i;
1394 char *tokstart;
1395 char *tokptr;
1396 int tempbufindex;
1397 static char *tempbuf;
1398 static int tempbufsize;
1399 char * token_string = NULL;
1400 int class_prefix = 0;
1401 int saw_structop = last_was_structop;
1402
1403 last_was_structop = 0;
1404
1405 retry:
1406
1407 /* Check if this is a macro invocation that we need to expand. */
1408 if (! scanning_macro_expansion ())
1409 {
1410 char *expanded = macro_expand_next (&lexptr,
1411 expression_macro_lookup_func,
1412 expression_macro_lookup_baton);
1413
1414 if (expanded)
1415 scan_macro_expansion (expanded);
1416 }
1417
1418 prev_lexptr = lexptr;
1419
1420 tokstart = lexptr;
1421 /* See if it is a special token of length 3. */
1422 for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
1423 if (strncmp (tokstart, tokentab3[i].operator, 3) == 0)
1424 {
1425 lexptr += 3;
1426 yylval.opcode = tokentab3[i].opcode;
1427 return tokentab3[i].token;
1428 }
1429
1430 /* See if it is a special token of length 2. */
1431 for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
1432 if (strncmp (tokstart, tokentab2[i].operator, 2) == 0)
1433 {
1434 lexptr += 2;
1435 yylval.opcode = tokentab2[i].opcode;
1436 if (in_parse_field && tokentab2[i].opcode == ARROW)
1437 last_was_structop = 1;
1438 return tokentab2[i].token;
1439 }
1440
1441 switch (c = *tokstart)
1442 {
1443 case 0:
1444 /* If we were just scanning the result of a macro expansion,
1445 then we need to resume scanning the original text.
1446 If we're parsing for field name completion, and the previous
1447 token allows such completion, return a COMPLETE token.
1448 Otherwise, we were already scanning the original text, and
1449 we're really done. */
1450 if (scanning_macro_expansion ())
1451 {
1452 finished_macro_expansion ();
1453 goto retry;
1454 }
1455 else if (saw_name_at_eof)
1456 {
1457 saw_name_at_eof = 0;
1458 return COMPLETE;
1459 }
1460 else if (saw_structop)
1461 return COMPLETE;
1462 else
1463 return 0;
1464
1465 case ' ':
1466 case '\t':
1467 case '\n':
1468 lexptr++;
1469 goto retry;
1470
1471 case '\'':
1472 /* We either have a character constant ('0' or '\177' for example)
1473 or we have a quoted symbol reference ('foo(int,int)' in C++
1474 for example). */
1475 lexptr++;
1476 c = *lexptr++;
1477 if (c == '\\')
1478 c = parse_escape (&lexptr);
1479 else if (c == '\'')
1480 error ("Empty character constant.");
1481 else if (! host_char_to_target (c, &c))
1482 {
1483 int toklen = lexptr - tokstart + 1;
1484 char *tok = alloca (toklen + 1);
1485 memcpy (tok, tokstart, toklen);
1486 tok[toklen] = '\0';
1487 error ("There is no character corresponding to %s in the target "
1488 "character set `%s'.", tok, target_charset ());
1489 }
1490
1491 yylval.typed_val_int.val = c;
1492 yylval.typed_val_int.type = builtin_type (current_gdbarch)->builtin_char;
1493
1494 c = *lexptr++;
1495 if (c != '\'')
1496 {
1497 namelen = skip_quoted (tokstart) - tokstart;
1498 if (namelen > 2)
1499 {
1500 lexptr = tokstart + namelen;
1501 if (lexptr[-1] != '\'')
1502 error ("Unmatched single quote.");
1503 namelen -= 2;
1504 tokstart++;
1505 goto tryname;
1506 }
1507 error ("Invalid character constant.");
1508 }
1509 return INT;
1510
1511 case '(':
1512 paren_depth++;
1513 lexptr++;
1514 return c;
1515
1516 case ')':
1517 if (paren_depth == 0)
1518 return 0;
1519 paren_depth--;
1520 lexptr++;
1521 return c;
1522
1523 case ',':
1524 if (comma_terminates
1525 && paren_depth == 0
1526 && ! scanning_macro_expansion ())
1527 return 0;
1528 lexptr++;
1529 return c;
1530
1531 case '.':
1532 /* Might be a floating point number. */
1533 if (lexptr[1] < '0' || lexptr[1] > '9')
1534 {
1535 if (in_parse_field)
1536 last_was_structop = 1;
1537 goto symbol; /* Nope, must be a symbol. */
1538 }
1539 /* FALL THRU into number case. */
1540
1541 case '0':
1542 case '1':
1543 case '2':
1544 case '3':
1545 case '4':
1546 case '5':
1547 case '6':
1548 case '7':
1549 case '8':
1550 case '9':
1551 {
1552 /* It's a number. */
1553 int got_dot = 0, got_e = 0, toktype;
1554 char *p = tokstart;
1555 int hex = input_radix > 10;
1556
1557 if (c == '0' && (p[1] == 'x' || p[1] == 'X'))
1558 {
1559 p += 2;
1560 hex = 1;
1561 }
1562 else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D'))
1563 {
1564 p += 2;
1565 hex = 0;
1566 }
1567
1568 for (;; ++p)
1569 {
1570 /* This test includes !hex because 'e' is a valid hex digit
1571 and thus does not indicate a floating point number when
1572 the radix is hex. */
1573 if (!hex && !got_e && (*p == 'e' || *p == 'E'))
1574 got_dot = got_e = 1;
1575 /* This test does not include !hex, because a '.' always indicates
1576 a decimal floating point number regardless of the radix. */
1577 else if (!got_dot && *p == '.')
1578 got_dot = 1;
1579 else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
1580 && (*p == '-' || *p == '+'))
1581 /* This is the sign of the exponent, not the end of the
1582 number. */
1583 continue;
1584 /* We will take any letters or digits. parse_number will
1585 complain if past the radix, or if L or U are not final. */
1586 else if ((*p < '0' || *p > '9')
1587 && ((*p < 'a' || *p > 'z')
1588 && (*p < 'A' || *p > 'Z')))
1589 break;
1590 }
1591 toktype = parse_number (tokstart, p - tokstart, got_dot|got_e, &yylval);
1592 if (toktype == ERROR)
1593 {
1594 char *err_copy = (char *) alloca (p - tokstart + 1);
1595
1596 memcpy (err_copy, tokstart, p - tokstart);
1597 err_copy[p - tokstart] = 0;
1598 error ("Invalid number \"%s\".", err_copy);
1599 }
1600 lexptr = p;
1601 return toktype;
1602 }
1603
1604 case '+':
1605 case '-':
1606 case '*':
1607 case '/':
1608 case '%':
1609 case '|':
1610 case '&':
1611 case '^':
1612 case '~':
1613 case '!':
1614 case '@':
1615 case '<':
1616 case '>':
1617 case '[':
1618 case ']':
1619 case '?':
1620 case ':':
1621 case '=':
1622 case '{':
1623 case '}':
1624 symbol:
1625 lexptr++;
1626 return c;
1627
1628 case '"':
1629
1630 /* Build the gdb internal form of the input string in tempbuf,
1631 translating any standard C escape forms seen. Note that the
1632 buffer is null byte terminated *only* for the convenience of
1633 debugging gdb itself and printing the buffer contents when
1634 the buffer contains no embedded nulls. Gdb does not depend
1635 upon the buffer being null byte terminated, it uses the length
1636 string instead. This allows gdb to handle C strings (as well
1637 as strings in other languages) with embedded null bytes */
1638
1639 tokptr = ++tokstart;
1640 tempbufindex = 0;
1641
1642 do {
1643 char *char_start_pos = tokptr;
1644
1645 /* Grow the static temp buffer if necessary, including allocating
1646 the first one on demand. */
1647 if (tempbufindex + 1 >= tempbufsize)
1648 {
1649 tempbuf = (char *) realloc (tempbuf, tempbufsize += 64);
1650 }
1651 switch (*tokptr)
1652 {
1653 case '\0':
1654 case '"':
1655 /* Do nothing, loop will terminate. */
1656 break;
1657 case '\\':
1658 tokptr++;
1659 c = parse_escape (&tokptr);
1660 if (c == -1)
1661 {
1662 continue;
1663 }
1664 tempbuf[tempbufindex++] = c;
1665 break;
1666 default:
1667 c = *tokptr++;
1668 if (! host_char_to_target (c, &c))
1669 {
1670 int len = tokptr - char_start_pos;
1671 char *copy = alloca (len + 1);
1672 memcpy (copy, char_start_pos, len);
1673 copy[len] = '\0';
1674
1675 error ("There is no character corresponding to `%s' "
1676 "in the target character set `%s'.",
1677 copy, target_charset ());
1678 }
1679 tempbuf[tempbufindex++] = c;
1680 break;
1681 }
1682 } while ((*tokptr != '"') && (*tokptr != '\0'));
1683 if (*tokptr++ != '"')
1684 {
1685 error ("Unterminated string in expression.");
1686 }
1687 tempbuf[tempbufindex] = '\0'; /* See note above */
1688 yylval.sval.ptr = tempbuf;
1689 yylval.sval.length = tempbufindex;
1690 lexptr = tokptr;
1691 return (STRING);
1692 }
1693
1694 if (!(c == '_' || c == '$'
1695 || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
1696 /* We must have come across a bad character (e.g. ';'). */
1697 error ("Invalid character '%c' in expression.", c);
1698
1699 /* It's a name. See how long it is. */
1700 namelen = 0;
1701 for (c = tokstart[namelen];
1702 (c == '_' || c == '$' || (c >= '0' && c <= '9')
1703 || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '<');)
1704 {
1705 /* Template parameter lists are part of the name.
1706 FIXME: This mishandles `print $a<4&&$a>3'. */
1707
1708 if (c == '<')
1709 {
1710 /* Scan ahead to get rest of the template specification. Note
1711 that we look ahead only when the '<' adjoins non-whitespace
1712 characters; for comparison expressions, e.g. "a < b > c",
1713 there must be spaces before the '<', etc. */
1714
1715 char * p = find_template_name_end (tokstart + namelen);
1716 if (p)
1717 namelen = p - tokstart;
1718 break;
1719 }
1720 c = tokstart[++namelen];
1721 }
1722
1723 /* The token "if" terminates the expression and is NOT removed from
1724 the input stream. It doesn't count if it appears in the
1725 expansion of a macro. */
1726 if (namelen == 2
1727 && tokstart[0] == 'i'
1728 && tokstart[1] == 'f'
1729 && ! scanning_macro_expansion ())
1730 {
1731 return 0;
1732 }
1733
1734 lexptr += namelen;
1735
1736 tryname:
1737
1738 /* Catch specific keywords. Should be done with a data structure. */
1739 switch (namelen)
1740 {
1741 case 8:
1742 if (strncmp (tokstart, "unsigned", 8) == 0)
1743 return UNSIGNED;
1744 if (current_language->la_language == language_cplus
1745 && strncmp (tokstart, "template", 8) == 0)
1746 return TEMPLATE;
1747 if (strncmp (tokstart, "volatile", 8) == 0)
1748 return VOLATILE_KEYWORD;
1749 break;
1750 case 6:
1751 if (strncmp (tokstart, "struct", 6) == 0)
1752 return STRUCT;
1753 if (strncmp (tokstart, "signed", 6) == 0)
1754 return SIGNED_KEYWORD;
1755 if (strncmp (tokstart, "sizeof", 6) == 0)
1756 return SIZEOF;
1757 if (strncmp (tokstart, "double", 6) == 0)
1758 return DOUBLE_KEYWORD;
1759 break;
1760 case 5:
1761 if (current_language->la_language == language_cplus)
1762 {
1763 if (strncmp (tokstart, "false", 5) == 0)
1764 return FALSEKEYWORD;
1765 if (strncmp (tokstart, "class", 5) == 0)
1766 return CLASS;
1767 }
1768 if (strncmp (tokstart, "union", 5) == 0)
1769 return UNION;
1770 if (strncmp (tokstart, "short", 5) == 0)
1771 return SHORT;
1772 if (strncmp (tokstart, "const", 5) == 0)
1773 return CONST_KEYWORD;
1774 break;
1775 case 4:
1776 if (strncmp (tokstart, "enum", 4) == 0)
1777 return ENUM;
1778 if (strncmp (tokstart, "long", 4) == 0)
1779 return LONG;
1780 if (current_language->la_language == language_cplus)
1781 {
1782 if (strncmp (tokstart, "true", 4) == 0)
1783 return TRUEKEYWORD;
1784 }
1785 break;
1786 case 3:
1787 if (strncmp (tokstart, "int", 3) == 0)
1788 return INT_KEYWORD;
1789 break;
1790 default:
1791 break;
1792 }
1793
1794 yylval.sval.ptr = tokstart;
1795 yylval.sval.length = namelen;
1796
1797 if (*tokstart == '$')
1798 {
1799 write_dollar_variable (yylval.sval);
1800 return VARIABLE;
1801 }
1802
1803 /* Use token-type BLOCKNAME for symbols that happen to be defined as
1804 functions or symtabs. If this is not so, then ...
1805 Use token-type TYPENAME for symbols that happen to be defined
1806 currently as names of types; NAME for other symbols.
1807 The caller is not constrained to care about the distinction. */
1808 {
1809 char *tmp = copy_name (yylval.sval);
1810 struct symbol *sym;
1811 int is_a_field_of_this = 0;
1812 int hextype;
1813
1814 sym = lookup_symbol (tmp, expression_context_block,
1815 VAR_DOMAIN,
1816 current_language->la_language == language_cplus
1817 ? &is_a_field_of_this : (int *) NULL);
1818 /* Call lookup_symtab, not lookup_partial_symtab, in case there are
1819 no psymtabs (coff, xcoff, or some future change to blow away the
1820 psymtabs once once symbols are read). */
1821 if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
1822 {
1823 yylval.ssym.sym = sym;
1824 yylval.ssym.is_a_field_of_this = is_a_field_of_this;
1825 return BLOCKNAME;
1826 }
1827 else if (!sym)
1828 { /* See if it's a file name. */
1829 struct symtab *symtab;
1830
1831 symtab = lookup_symtab (tmp);
1832
1833 if (symtab)
1834 {
1835 yylval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
1836 return FILENAME;
1837 }
1838 }
1839
1840 if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
1841 {
1842 /* NOTE: carlton/2003-09-25: There used to be code here to
1843 handle nested types. It didn't work very well. See the
1844 comment before qualified_type for more info. */
1845 yylval.tsym.type = SYMBOL_TYPE (sym);
1846 return TYPENAME;
1847 }
1848 yylval.tsym.type
1849 = language_lookup_primitive_type_by_name (current_language,
1850 current_gdbarch, tmp);
1851 if (yylval.tsym.type != NULL)
1852 return TYPENAME;
1853
1854 /* Input names that aren't symbols but ARE valid hex numbers,
1855 when the input radix permits them, can be names or numbers
1856 depending on the parse. Note we support radixes > 16 here. */
1857 if (!sym &&
1858 ((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10) ||
1859 (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10)))
1860 {
1861 YYSTYPE newlval; /* Its value is ignored. */
1862 hextype = parse_number (tokstart, namelen, 0, &newlval);
1863 if (hextype == INT)
1864 {
1865 yylval.ssym.sym = sym;
1866 yylval.ssym.is_a_field_of_this = is_a_field_of_this;
1867 return NAME_OR_INT;
1868 }
1869 }
1870
1871 /* Any other kind of symbol */
1872 yylval.ssym.sym = sym;
1873 yylval.ssym.is_a_field_of_this = is_a_field_of_this;
1874 if (in_parse_field && *lexptr == '\0')
1875 saw_name_at_eof = 1;
1876 return NAME;
1877 }
1878 }
1879
1880 int
1881 c_parse (void)
1882 {
1883 last_was_structop = 0;
1884 saw_name_at_eof = 0;
1885 return yyparse ();
1886 }
1887
1888 void
1889 yyerror (msg)
1890 char *msg;
1891 {
1892 if (prev_lexptr)
1893 lexptr = prev_lexptr;
1894
1895 error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
1896 }