X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fm2-exp.y;h=3fb46851c84b424ae88951f9834ca9a9be207fa0;hb=c45df9bda811929d3135aebd34d53b44ee45fe15;hp=507e5bc62fd2373a83bf9c7f330a420cc799e3f4;hpb=fa803dc60f0bf01297674c41d001798e18ade4dc;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y index 507e5bc62f..3fb46851c8 100644 --- a/gdb/m2-exp.y +++ b/gdb/m2-exp.y @@ -1,5 +1,6 @@ /* YACC grammar for Modula-2 expressions, for GDB. - Copyright (C) 1986, 1989, 1990, 1991, 1993, 1994, 1995 + Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, + 2000 Free Software Foundation, Inc. Generated from expread.y (now c-exp.y) and contributed by the Department of Computer Science at the State University of New York at Buffalo, 1991. @@ -86,6 +87,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define yylloc m2_lloc #define yyreds m2_reds /* With YYDEBUG defined */ #define yytoks m2_toks /* With YYDEBUG defined */ +#define yyname m2_name /* With YYDEBUG defined */ +#define yyrule m2_rule /* With YYDEBUG defined */ #define yylhs m2_yylhs #define yylen m2_yylen #define yydefred m2_yydefred @@ -97,25 +100,22 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define yycheck m2_yycheck #ifndef YYDEBUG -#define YYDEBUG 0 /* Default to no yydebug support */ +#define YYDEBUG 1 /* Default to yydebug support */ #endif -int -yyparse PARAMS ((void)); +#define YYFPRINTF parser_fprintf -static int -yylex PARAMS ((void)); +int yyparse (void); -void -yyerror PARAMS ((char *)); +static int yylex (void); + +void yyerror (char *); #if 0 -static char * -make_qualname PARAMS ((char *, char *)); +static char *make_qualname (char *, char *); #endif -static int -parse_number PARAMS ((int)); +static int parse_number (int); /* The sign of the number being parsed. */ static int number_sign = 1; @@ -216,6 +216,7 @@ type_exp: type exp : exp '^' %prec UNARY { write_exp_elt_opcode (UNOP_IND); } + ; exp : '-' { number_sign = -1; } @@ -330,6 +331,7 @@ exp : INCL '(' exp ',' exp ')' exp : EXCL '(' exp ',' exp ')' { error("Sets are not implemented.");} + ; set : '{' arglist '}' { error("Sets are not implemented.");} @@ -825,6 +827,8 @@ yylex () retry: + prev_lexptr = lexptr; + tokstart = lexptr; @@ -1050,6 +1054,10 @@ yylex () case LOC_LABEL: case LOC_UNRESOLVED: error("internal: Unforseen case in m2lex()"); + + default: + error ("unhandled token in m2lex()"); + break; } } else @@ -1090,5 +1098,8 @@ void yyerror (msg) char *msg; { + if (prev_lexptr) + lexptr = prev_lexptr; + error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr); }