| OLD | NEW |
| 1 /* YACC parser for Pascal expressions, for GDB. | 1 /* YACC parser for Pascal expressions, for GDB. |
| 2 Copyright (C) 2000, 2006-2012 Free Software Foundation, Inc. | 2 Copyright (C) 2000-2013 Free Software Foundation, Inc. |
| 3 | 3 |
| 4 This file is part of GDB. | 4 This file is part of GDB. |
| 5 | 5 |
| 6 This program is free software; you can redistribute it and/or modify | 6 This program is free software; you can redistribute it and/or modify |
| 7 it under the terms of the GNU General Public License as published by | 7 it under the terms of the GNU General Public License as published by |
| 8 the Free Software Foundation; either version 3 of the License, or | 8 the Free Software Foundation; either version 3 of the License, or |
| 9 (at your option) any later version. | 9 (at your option) any later version. |
| 10 | 10 |
| 11 This program is distributed in the hope that it will be useful, | 11 This program is distributed in the hope that it will be useful, |
| 12 but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 24 matching lines...) Expand all Loading... |
| 37 | 37 |
| 38 /* Known bugs or limitations: | 38 /* Known bugs or limitations: |
| 39 - pascal string operations are not supported at all. | 39 - pascal string operations are not supported at all. |
| 40 - there are some problems with boolean types. | 40 - there are some problems with boolean types. |
| 41 - Pascal type hexadecimal constants are not supported | 41 - Pascal type hexadecimal constants are not supported |
| 42 because they conflict with the internal variables format. | 42 because they conflict with the internal variables format. |
| 43 Probably also lots of other problems, less well defined PM. */ | 43 Probably also lots of other problems, less well defined PM. */ |
| 44 %{ | 44 %{ |
| 45 | 45 |
| 46 #include "defs.h" | 46 #include "defs.h" |
| 47 #include "gdb_string.h" | 47 #include <string.h> |
| 48 #include <ctype.h> | 48 #include <ctype.h> |
| 49 #include "expression.h" | 49 #include "expression.h" |
| 50 #include "value.h" | 50 #include "value.h" |
| 51 #include "parser-defs.h" | 51 #include "parser-defs.h" |
| 52 #include "language.h" | 52 #include "language.h" |
| 53 #include "p-lang.h" | 53 #include "p-lang.h" |
| 54 #include "bfd.h" /* Required by objfiles.h. */ | 54 #include "bfd.h" /* Required by objfiles.h. */ |
| 55 #include "symfile.h" /* Required by objfiles.h. */ | 55 #include "symfile.h" /* Required by objfiles.h. */ |
| 56 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols. */ | 56 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols. */ |
| 57 #include "block.h" | 57 #include "block.h" |
| 58 #include "completer.h" |
| 58 | 59 |
| 59 #define parse_type builtin_type (parse_gdbarch) | 60 #define parse_type builtin_type (parse_gdbarch) |
| 60 | 61 |
| 61 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), | 62 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), |
| 62 as well as gratuitiously global symbol names, so we can have multiple | 63 as well as gratuitiously global symbol names, so we can have multiple |
| 63 yacc generated parsers in gdb. Note that these are only the variables | 64 yacc generated parsers in gdb. Note that these are only the variables |
| 64 produced by yacc. If other parser generators (bison, byacc, etc) produce | 65 produced by yacc. If other parser generators (bison, byacc, etc) produce |
| 65 additional global names that conflict at link time, then those parser | 66 additional global names that conflict at link time, then those parser |
| 66 generators need to be fixed instead of adding those names to this list. */ | 67 generators need to be fixed instead of adding those names to this list. */ |
| 67 | 68 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 #endif | 118 #endif |
| 118 | 119 |
| 119 #define YYFPRINTF parser_fprintf | 120 #define YYFPRINTF parser_fprintf |
| 120 | 121 |
| 121 int yyparse (void); | 122 int yyparse (void); |
| 122 | 123 |
| 123 static int yylex (void); | 124 static int yylex (void); |
| 124 | 125 |
| 125 void yyerror (char *); | 126 void yyerror (char *); |
| 126 | 127 |
| 127 static char * uptok (char *, int); | 128 static char *uptok (const char *, int); |
| 128 %} | 129 %} |
| 129 | 130 |
| 130 /* Although the yacc "value" of an expression is not used, | 131 /* Although the yacc "value" of an expression is not used, |
| 131 since the result is stored in the structure being created, | 132 since the result is stored in the structure being created, |
| 132 other node types do have values. */ | 133 other node types do have values. */ |
| 133 | 134 |
| 134 %union | 135 %union |
| 135 { | 136 { |
| 136 LONGEST lval; | 137 LONGEST lval; |
| 137 struct { | 138 struct { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 151 struct block *bval; | 152 struct block *bval; |
| 152 enum exp_opcode opcode; | 153 enum exp_opcode opcode; |
| 153 struct internalvar *ivar; | 154 struct internalvar *ivar; |
| 154 | 155 |
| 155 struct type **tvec; | 156 struct type **tvec; |
| 156 int *ivec; | 157 int *ivec; |
| 157 } | 158 } |
| 158 | 159 |
| 159 %{ | 160 %{ |
| 160 /* YYSTYPE gets defined by %union */ | 161 /* YYSTYPE gets defined by %union */ |
| 161 static int parse_number (char *, int, int, YYSTYPE *); | 162 static int parse_number (const char *, int, int, YYSTYPE *); |
| 162 | 163 |
| 163 static struct type *current_type; | 164 static struct type *current_type; |
| 164 static struct internalvar *intvar; | 165 static struct internalvar *intvar; |
| 165 static int leftdiv_is_integer; | 166 static int leftdiv_is_integer; |
| 166 static void push_current_type (void); | 167 static void push_current_type (void); |
| 167 static void pop_current_type (void); | 168 static void pop_current_type (void); |
| 168 static int search_field; | 169 static int search_field; |
| 169 %} | 170 %} |
| 170 | 171 |
| 171 %type <voidval> exp exp1 type_exp start normal_start variable qualified_name | 172 %type <voidval> exp exp1 type_exp start normal_start variable qualified_name |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 if (current_type) | 306 if (current_type) |
| 306 { | 307 { |
| 307 while (TYPE_CODE (current_type) | 308 while (TYPE_CODE (current_type) |
| 308 == TYPE_CODE_PTR) | 309 == TYPE_CODE_PTR) |
| 309 current_type = | 310 current_type = |
| 310 TYPE_TARGET_TYPE (current_type); | 311 TYPE_TARGET_TYPE (current_type); |
| 311 current_type = lookup_struct_elt_type ( | 312 current_type = lookup_struct_elt_type ( |
| 312 current_type, $2.ptr, 0); | 313 current_type, $2.ptr, 0); |
| 313 } | 314 } |
| 314 } | 315 } |
error: old chunk mismatch |
None
| OLD | NEW |