* linux-low.c (usr_store_inferior_registers): Transfer buf in
[deliverable/binutils-gdb.git] / gdb / m2-exp.y
index eaaad5a3882a110f43af4cb63ec865f3c0f28d3c..37cf694b879dd00507214e04882b2c96cf6449fd 100644 (file)
@@ -50,6 +50,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 "block.h"
 
 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
    as well as gratuitiously global symbol names, so we can have multiple
@@ -87,6 +88,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
@@ -98,9 +101,11 @@ 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
 
+#define YYFPRINTF parser_fprintf
+
 int yyparse (void);
 
 static int yylex (void);
@@ -212,6 +217,7 @@ type_exp:   type
 
 exp     :       exp '^'   %prec UNARY
                         { write_exp_elt_opcode (UNOP_IND); }
+       ;
 
 exp    :       '-'
                        { number_sign = -1; }
@@ -326,6 +332,7 @@ exp :       INCL '(' exp ',' exp ')'
 
 exp    :       EXCL '(' exp ',' exp ')'
                        { error("Sets are not implemented.");}
+       ;
 
 set    :       '{' arglist '}'
                        { error("Sets are not implemented.");}
@@ -534,7 +541,7 @@ block       :       fblock
 fblock :       BLOCKNAME
                        { struct symbol *sym
                            = lookup_symbol (copy_name ($1), expression_context_block,
-                                            VAR_NAMESPACE, 0, NULL);
+                                            VAR_DOMAIN, 0, NULL);
                          $$ = sym;}
        ;
                             
@@ -543,7 +550,7 @@ fblock      :       BLOCKNAME
 fblock :       block COLONCOLON BLOCKNAME
                        { struct symbol *tem
                            = lookup_symbol (copy_name ($3), $1,
-                                            VAR_NAMESPACE, 0, NULL);
+                                            VAR_DOMAIN, 0, NULL);
                          if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
                            error ("No function \"%s\" in specified context.",
                                   copy_name ($3));
@@ -567,7 +574,7 @@ variable:   INTERNAL_VAR
 variable:      block COLONCOLON NAME
                        { struct symbol *sym;
                          sym = lookup_symbol (copy_name ($3), $1,
-                                              VAR_NAMESPACE, 0, NULL);
+                                              VAR_DOMAIN, 0, NULL);
                          if (sym == 0)
                            error ("No symbol \"%s\" in specified context.",
                                   copy_name ($3));
@@ -586,7 +593,7 @@ variable:   NAME
 
                          sym = lookup_symbol (copy_name ($1),
                                               expression_context_block,
-                                              VAR_NAMESPACE,
+                                              VAR_DOMAIN,
                                               &is_a_field_of_this,
                                               NULL);
                          if (sym)
@@ -821,6 +828,8 @@ yylex ()
 
  retry:
 
+  prev_lexptr = lexptr;
+
   tokstart = lexptr;
 
 
@@ -1009,7 +1018,7 @@ yylex ()
     if (lookup_partial_symtab (tmp))
       return BLOCKNAME;
     sym = lookup_symbol (tmp, expression_context_block,
-                        VAR_NAMESPACE, 0, NULL);
+                        VAR_DOMAIN, 0, NULL);
     if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
       return BLOCKNAME;
     if (lookup_typename (copy_name (yylval.sval), expression_context_block, 1))
@@ -1032,6 +1041,8 @@ yylex ()
        case LOC_CONST:
        case LOC_CONST_BYTES:
        case LOC_OPTIMIZED_OUT:
+       case LOC_COMPUTED:
+       case LOC_COMPUTED_ARG:
          return NAME;
 
        case LOC_TYPEDEF:
@@ -1090,5 +1101,8 @@ void
 yyerror (msg)
      char *msg;
 {
+  if (prev_lexptr)
+    lexptr = prev_lexptr;
+
   error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
 }
This page took 0.036007 seconds and 4 git commands to generate.