projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2002-10-01 Andrew Cagney <ac131313@redhat.com>
[deliverable/binutils-gdb.git]
/
gdb
/
f-exp.y
diff --git
a/gdb/f-exp.y
b/gdb/f-exp.y
index 4a1f747605c902b56a86d013a97052508dbae5a8..b9004264eec69d25a9447bab97ebfaa9467ea77d 100644
(file)
--- a/
gdb/f-exp.y
+++ b/
gdb/f-exp.y
@@
-1,6
+1,7
@@
/* YACC parser for Fortran expressions, for GDB.
/* YACC parser for Fortran expressions, for GDB.
- Copyright 1986, 1989, 1990, 1991, 1993, 1994
- Free Software Foundation, Inc.
+ Copyright 1986, 1989, 1990, 1991, 1993, 1994, 1995, 1996, 2000, 2001
+ Free Software Foundation, Inc.
+
Contributed by Motorola. Adapted from the C parser by Farooq Butt
(fmbutt@engage.sps.mot.com).
Contributed by Motorola. Adapted from the C parser by Farooq Butt
(fmbutt@engage.sps.mot.com).
@@
-52,6
+53,7
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h" /* Required by objfiles.h. */
#include "symfile.h" /* Required by objfiles.h. */
#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
#include "bfd.h" /* Required by objfiles.h. */
#include "symfile.h" /* Required by objfiles.h. */
#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
+#include <ctype.h>
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
@@
-89,6
+91,8
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define yylloc f_lloc
#define yyreds f_reds /* With YYDEBUG defined */
#define yytoks f_toks /* With YYDEBUG defined */
#define yylloc f_lloc
#define yyreds f_reds /* With YYDEBUG defined */
#define yytoks f_toks /* With YYDEBUG defined */
+#define yyname f_name /* With YYDEBUG defined */
+#define yyrule f_rule /* With YYDEBUG defined */
#define yylhs f_yylhs
#define yylen f_yylen
#define yydefred f_yydefred
#define yylhs f_yylhs
#define yylen f_yylen
#define yydefred f_yydefred
@@
-100,18
+104,20
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define yycheck f_yycheck
#ifndef YYDEBUG
#define yycheck f_yycheck
#ifndef YYDEBUG
-#define YYDEBUG 1 /* Default to
no
yydebug support */
+#define YYDEBUG 1 /* Default to yydebug support */
#endif
#endif
-int yyparse PARAMS ((void));
+#define YYFPRINTF parser_fprintf
+
+int yyparse (void);
-static int yylex
PARAMS ((void)
);
+static int yylex
(void
);
-void yyerror
PARAMS ((char *)
);
+void yyerror
(char *
);
-static void growbuf_by_size
PARAMS ((int)
);
+static void growbuf_by_size
(int
);
-static int match_string_literal
PARAMS ((void)
);
+static int match_string_literal
(void
);
%}
%}
@@
-143,7
+149,7
@@
static int match_string_literal PARAMS ((void));
%{
/* YYSTYPE gets defined by %union */
%{
/* YYSTYPE gets defined by %union */
-static int parse_number
PARAMS ((char *, int, int, YYSTYPE *)
);
+static int parse_number
(char *, int, int, YYSTYPE *
);
%}
%type <voidval> exp type_exp start variable
%}
%type <voidval> exp type_exp start variable
@@
-638,7
+644,6
@@
parse_number (p, len, parsed_float, putithere)
{
register LONGEST n = 0;
register LONGEST prevn = 0;
{
register LONGEST n = 0;
register LONGEST prevn = 0;
- register int i;
register int c;
register int base = input_radix;
int unsigned_p = 0;
register int c;
register int base = input_radix;
int unsigned_p = 0;
@@
-653,7
+658,7
@@
parse_number (p, len, parsed_float, putithere)
/* [dD] is not understood as an exponent by atof, change it to 'e'. */
char *tmp, *tmp2;
/* [dD] is not understood as an exponent by atof, change it to 'e'. */
char *tmp, *tmp2;
- tmp =
strsave
(p);
+ tmp =
xstrdup
(p);
for (tmp2 = tmp; *tmp2; ++tmp2)
if (*tmp2 == 'd' || *tmp2 == 'D')
*tmp2 = 'e';
for (tmp2 = tmp; *tmp2; ++tmp2)
if (*tmp2 == 'd' || *tmp2 == 'D')
*tmp2 = 'e';
@@
-696,26
+701,26
@@
parse_number (p, len, parsed_float, putithere)
while (len-- > 0)
{
c = *p++;
while (len-- > 0)
{
c = *p++;
- if (
c >= 'A' && c <= 'Z'
)
- c
+= 'a' - 'A'
;
- if (
c != 'l' && c != 'u
')
-
n *= base
;
-
if (c >= '0' && c <= '9
')
-
n += i = c - '0'
;
+ if (
isupper (c)
)
+ c
= tolower (c)
;
+ if (
len == 0 && c == 'l
')
+
long_p = 1
;
+
else if (len == 0 && c == 'u
')
+
unsigned_p = 1
;
else
{
else
{
- if (base > 10 && c >= 'a' && c <= 'f')
- n += i = c - 'a' + 10;
- else if (len == 0 && c == 'l')
- long_p = 1;
- else if (len == 0 && c == 'u')
- unsigned_p = 1;
+ int i;
+ if (c >= '0' && c <= '9')
+ i = c - '0';
+ else if (c >= 'a' && c <= 'f')
+ i = c - 'a' + 10;
else
return ERROR; /* Char not a digit */
else
return ERROR; /* Char not a digit */
+ if (i >= base)
+ return ERROR; /* Invalid digit in this base */
+ n *= base;
+ n += i;
}
}
- if (i >= base)
- return ERROR; /* Invalid digit in this base */
-
/* Portably test for overflow (only works for nonzero values, so make
a second check for zero). */
if ((prevn >= n) && n != 0)
/* Portably test for overflow (only works for nonzero values, so make
a second check for zero). */
if ((prevn >= n) && n != 0)
@@
-923,7
+928,9
@@
yylex ()
char *tokstart;
retry:
char *tokstart;
retry:
-
+
+ prev_lexptr = lexptr;
+
tokstart = lexptr;
/* First of all, let us make sure we are not dealing with the
tokstart = lexptr;
/* First of all, let us make sure we are not dealing with the
@@
-1170,5
+1177,8
@@
void
yyerror (msg)
char *msg;
{
yyerror (msg)
char *msg;
{
+ if (prev_lexptr)
+ lexptr = prev_lexptr;
+
error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
}
error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
}
This page took
0.024895 seconds
and
4
git commands to generate.