OSDN Git Service

2002-06-19 Akim Demaille <akim@epita.fr>
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Jun 2002 01:30:57 +0000 (01:30 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Jun 2002 01:30:57 +0000 (01:30 +0000)
* c-parse.in (initelt: identifier ':' initval): Add an empty
action to fix a type clash.
(aliasdecl, classdef): Add the missing closing `;'.
Whitespace changes.
* gengtype-yacc.y (typedef_struct): Add an empty action to preevnt
$$ = $1 type clashes.

cp:
* parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
decl.h's TYPENAME.
* spew.c, lex.c: Adjust.
* parse.y (explicit_instantiation): Add empty action to override
the default $$ = $1 where it introduces a type clash.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54811 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-parse.in
gcc/cp/ChangeLog
gcc/cp/lex.c
gcc/cp/parse.y
gcc/cp/spew.c
gcc/gengtype-yacc.y

index 326e0cd..e4af10f 100644 (file)
@@ -1,3 +1,12 @@
+2002-06-19  Akim Demaille  <akim@epita.fr>
+
+       * c-parse.in (initelt: identifier ':' initval): Add an empty
+       action to fix a type clash.
+       (aliasdecl, classdef): Add the missing closing `;'.
+       Whitespace changes.
+       * gengtype-yacc.y (typedef_struct): Add an empty action to preevnt
+       $$ = $1 type clashes.
+
 2002-06-19  Eric Christopher  <echristo@redhat.com>
 
        * config/mips/mips.c (symbol_operand): New function.
@@ -70,7 +79,7 @@
 
 2002-06-19  Andrew Pinski <pinskia@physics.uc.edu>
 
-        * cpptrad.c (_cpp_replacement_text_len): initialize len.
+       * cpptrad.c (_cpp_replacement_text_len): initialize len.
 
 2002-06-19  Jason Merrill  <jason@redhat.com>
 
index 5dfecb8..2a58668 100644 (file)
@@ -49,7 +49,7 @@ end ifc
 #include "output.h"
 #include "toplev.h"
 #include "ggc.h"
-  
+
 #ifdef MULTIBYTE_CHARS
 #include <locale.h>
 #endif
@@ -255,11 +255,11 @@ ifobjc
 end ifobjc
 \f
 %{
-/* Number of statements (loosely speaking) and compound statements 
+/* Number of statements (loosely speaking) and compound statements
    seen so far.  */
 static int stmt_count;
 static int compstmt_count;
-  
+
 /* Input file and line number of the end of the body of last simple_if;
    used by the stmt-rule immediately after simple_if returns.  */
 static const char *if_stmt_file;
@@ -320,8 +320,8 @@ static enum tree_code objc_inherit_code;
 static int objc_pq_context = 0, objc_public_flag = 0;
 
 /* The following flag is needed to contextualize ObjC lexical analysis.
-   In some cases (e.g., 'int NSObject;'), it is undesirable to bind 
-   an identifier to an ObjC class, even if a class with that name 
+   In some cases (e.g., 'int NSObject;'), it is undesirable to bind
+   an identifier to an ObjC class, even if a class with that name
    exists.  */
 static int objc_need_raw_identifier;
 #define OBJC_NEED_RAW_IDENTIFIER(VAL)  objc_need_raw_identifier = VAL
@@ -404,7 +404,7 @@ datadef:
                { if (pedantic)
                    error ("ISO C forbids data definition with no type or storage class");
                  else
-                   warning ("data definition has no type or storage class"); 
+                   warning ("data definition has no type or storage class");
 
                  POP_DECLSPEC_STACK; }
         | declspecs_nots setspecs notype_initdecls ';'
@@ -431,7 +431,7 @@ fndef:
          save_filename save_lineno compstmt_or_error
                { DECL_SOURCE_FILE (current_function_decl) = $7;
                  DECL_SOURCE_LINE (current_function_decl) = $8;
-                 finish_function (0, 1); 
+                 finish_function (0, 1);
                  POP_DECLSPEC_STACK; }
        | declspecs_ts setspecs declarator error
                { POP_DECLSPEC_STACK; }
@@ -445,7 +445,7 @@ fndef:
          save_filename save_lineno compstmt_or_error
                { DECL_SOURCE_FILE (current_function_decl) = $7;
                  DECL_SOURCE_LINE (current_function_decl) = $8;
-                 finish_function (0, 1); 
+                 finish_function (0, 1);
                  POP_DECLSPEC_STACK; }
        | declspecs_nots setspecs notype_declarator error
                { POP_DECLSPEC_STACK; }
@@ -459,7 +459,7 @@ fndef:
          save_filename save_lineno compstmt_or_error
                { DECL_SOURCE_FILE (current_function_decl) = $6;
                  DECL_SOURCE_LINE (current_function_decl) = $7;
-                 finish_function (0, 1); 
+                 finish_function (0, 1);
                  POP_DECLSPEC_STACK; }
        | setspecs notype_declarator error
                { POP_DECLSPEC_STACK; }
@@ -667,7 +667,7 @@ primary:
                { $$ = fix_string_type ($$); }
        | VAR_FUNC_NAME
                { $$ = fname_decl (C_RID_CODE ($$), $$); }
-       | '(' typename ')' '{' 
+       | '(' typename ')' '{'
                { start_init (NULL_TREE, NULL, 0);
                  $2 = groktypename ($2);
                  really_start_incremental_init ($2); }
@@ -1431,7 +1431,7 @@ initdcl:
        | declarator maybeasm maybe_attribute
                { tree d = start_decl ($1, current_declspecs, 0,
                                       chainon ($3, all_prefix_attributes));
-                 finish_decl (d, NULL_TREE, $2); 
+                 finish_decl (d, NULL_TREE, $2);
                 }
        ;
 
@@ -1457,7 +1457,7 @@ maybe_attribute:
        | attributes
                { $$ = $1; }
        ;
+
 attributes:
       attribute
                { $$ = $1; }
@@ -1476,7 +1476,7 @@ attribute_list:
        | attribute_list ',' attrib
                { $$ = chainon ($1, $3); }
        ;
+
 attrib:
     /* empty */
                { $$ = NULL_TREE; }
@@ -1544,6 +1544,7 @@ initelt:
                  if (pedantic)
                    pedwarn ("obsolete use of designated initializer with `:'"); }
          initval
+               {}
        | initval
        ;
 
@@ -1604,7 +1605,7 @@ nested_function:
                  DECL_SOURCE_FILE (decl) = $5;
                  DECL_SOURCE_LINE (decl) = $6;
                  finish_function (1, 1);
-                 pop_function_context (); 
+                 pop_function_context ();
                  add_decl_stmt (decl); }
        ;
 
@@ -1634,7 +1635,7 @@ notype_nested_function:
                  DECL_SOURCE_FILE (decl) = $5;
                  DECL_SOURCE_LINE (decl) = $6;
                  finish_function (1, 1);
-                 pop_function_context (); 
+                 pop_function_context ();
                  add_decl_stmt (decl); }
        ;
 
@@ -1755,7 +1756,7 @@ structsp_attr:
                { $$ = start_struct (RECORD_TYPE, $2);
                  /* Start scope of tag before parsing components.  */
                }
-         component_decl_list '}' maybe_attribute 
+         component_decl_list '}' maybe_attribute
                { $$ = finish_struct ($<ttype>4, $5, chainon ($1, $7)); }
        | struct_head '{' component_decl_list '}' maybe_attribute
                { $$ = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
@@ -1845,8 +1846,8 @@ component_decl:
                  POP_DECLSPEC_STACK; }
        | declspecs_nosc_ts setspecs save_filename save_lineno
                {
-                 /* Support for unnamed structs or unions as members of 
-                    structs or unions (which is [a] useful and [b] supports 
+                 /* Support for unnamed structs or unions as members of
+                    structs or unions (which is [a] useful and [b] supports
                     MS P-SDK).  */
                  if (pedantic)
                    pedwarn ("ISO C doesn't support unnamed structs/unions");
@@ -2102,8 +2103,8 @@ c99_block_end: /* empty */
                 { if (flag_isoc99)
                    {
                      tree scope_stmt = add_scope_stmt (/*begin_p=*/0, /*partial_p=*/0);
-                     $$ = poplevel (kept_level_p (), 0, 0); 
-                     SCOPE_STMT_BLOCK (TREE_PURPOSE (scope_stmt)) 
+                     $$ = poplevel (kept_level_p (), 0, 0);
+                     SCOPE_STMT_BLOCK (TREE_PURPOSE (scope_stmt))
                        = SCOPE_STMT_BLOCK (TREE_VALUE (scope_stmt))
                        = $$;
                    }
@@ -2152,8 +2153,8 @@ compstmt_start: '{' { compstmt_count++;
 compstmt_nostart: '}'
                { $$ = convert (void_type_node, integer_zero_node); }
        | pushlevel maybe_label_decls compstmt_contents_nonempty '}' poplevel
-               { $$ = poplevel (kept_level_p (), 1, 0); 
-                 SCOPE_STMT_BLOCK (TREE_PURPOSE ($5)) 
+               { $$ = poplevel (kept_level_p (), 1, 0);
+                 SCOPE_STMT_BLOCK (TREE_PURPOSE ($5))
                    = SCOPE_STMT_BLOCK (TREE_VALUE ($5))
                    = $$; }
        ;
@@ -2182,7 +2183,7 @@ compstmt_primary_start:
         ;
 
 compstmt: compstmt_start compstmt_nostart
-               { RECHAIN_STMTS ($1, COMPOUND_BODY ($1)); 
+               { RECHAIN_STMTS ($1, COMPOUND_BODY ($1));
                  last_expr_type = NULL_TREE;
                   $$ = $1; }
        ;
@@ -2209,7 +2210,7 @@ if_prefix:
           IF
                 { $<ttype>$ = c_begin_if_stmt (); }
             '(' expr ')'
-               { c_expand_start_cond (c_common_truthvalue_conversion ($4), 
+               { c_expand_start_cond (c_common_truthvalue_conversion ($4),
                                       compstmt_count,$<ttype>2);
                  $<itype>$ = stmt_count;
                  if_stmt_file = $<filename>-2;
@@ -2223,7 +2224,7 @@ do_stmt_start:
          DO
                { stmt_count++;
                  compstmt_count++;
-                 $<ttype>$ 
+                 $<ttype>$
                    = add_stmt (build_stmt (DO_STMT, NULL_TREE,
                                            NULL_TREE));
                  /* In the event that a parse error prevents
@@ -2318,7 +2319,7 @@ select_or_iter_stmt:
          we later pass to c_finish_while_stmt_cond to fill
          in the condition and other tidbits.  */
        | WHILE
-                { stmt_count++; 
+                { stmt_count++;
                  $<ttype>$ = c_begin_while_stmt (); }
          '(' expr ')'
                 { $4 = c_common_truthvalue_conversion ($4);
@@ -2335,12 +2336,12 @@ select_or_iter_stmt:
        | FOR
                { $<ttype>$ = build_stmt (FOR_STMT, NULL_TREE, NULL_TREE,
                                          NULL_TREE, NULL_TREE);
-                 add_stmt ($<ttype>$); } 
+                 add_stmt ($<ttype>$); }
          '(' for_init_stmt
                { stmt_count++;
                  RECHAIN_STMTS ($<ttype>2, FOR_INIT_STMT ($<ttype>2)); }
          xexpr ';'
-                { if ($6) 
+                { if ($6)
                    FOR_COND ($<ttype>2)
                      = c_common_truthvalue_conversion ($6); }
          xexpr ')'
@@ -2356,7 +2357,7 @@ select_or_iter_stmt:
 
 for_init_stmt:
          xexpr ';'
-               { add_stmt (build_stmt (EXPR_STMT, $1)); } 
+               { add_stmt (build_stmt (EXPR_STMT, $1)); }
        | decl
                { check_for_loop_decls (); }
        ;
@@ -2567,7 +2568,7 @@ parm:
        | declspecs_ts setspecs notype_declarator maybe_attribute
                { $$ = build_tree_list (build_tree_list (current_declspecs,
                                                         $3),
-                                       chainon ($4, all_prefix_attributes)); 
+                                       chainon ($4, all_prefix_attributes));
                  POP_DECLSPEC_STACK; }
        | declspecs_ts setspecs absdcl_maybe_attribute
                { $$ = $3;
@@ -2594,7 +2595,7 @@ firstparm:
        | declspecs_ts_nosa setspecs_fp notype_declarator maybe_attribute
                { $$ = build_tree_list (build_tree_list (current_declspecs,
                                                         $3),
-                                       chainon ($4, all_prefix_attributes)); 
+                                       chainon ($4, all_prefix_attributes));
                  POP_DECLSPEC_STACK; }
        | declspecs_ts_nosa setspecs_fp absdcl_maybe_attribute
                { $$ = $3;
@@ -2708,12 +2709,14 @@ classdecl:
                {
                  objc_declare_class ($2);
                }
+       ;
 
 aliasdecl:
          ALIAS identifier identifier ';'
                {
                  objc_declare_alias ($2, $3);
                }
+       ;
 
 classdef:
          INTERFACE identifier protocolrefs '{'
@@ -3452,7 +3455,7 @@ static const short rid_to_yy[RID_MAX] =
   /* RID_BYCOPY */     TYPE_QUAL,
   /* RID_BYREF */      TYPE_QUAL,
   /* RID_ONEWAY */     TYPE_QUAL,
-  
+
   /* C */
   /* RID_INT */                TYPESPEC,
   /* RID_CHAR */       TYPESPEC,
@@ -3538,7 +3541,7 @@ static const short rid_to_yy[RID_MAX] =
   /* RID_BITAND */     0,
   /* RID_BITOR */      0,
   /* RID_COMPL */      0,
-  
+
   /* Objective C */
   /* RID_ID */                 OBJECTNAME,
   /* RID_AT_ENCODE */          ENCODE,
@@ -3618,12 +3621,12 @@ static int
 yylexname ()
 {
   tree decl;
-  
+
 ifobjc
   int objc_force_identifier = objc_need_raw_identifier;
   OBJC_NEED_RAW_IDENTIFIER (0);
 end ifobjc
-  
+
   if (C_IS_RESERVED_WORD (yylval.ttype))
     {
       enum rid rid_code = C_RID_CODE (yylval.ttype);
@@ -3648,13 +3651,13 @@ end ifobjc
            /* __FUNCTION__ and __PRETTY_FUNCTION__ get converted
               to string constants.  */
            const char *name = fname_string (rid_code);
-         
+
            yylval.ttype = build_string (strlen (name) + 1, name);
            C_ARTIFICIAL_STRING_P (yylval.ttype) = 1;
            last_token = CPP_STRING;  /* so yyerror won't choke */
            return STRING;
          }
-      
+
        /* Return the canonical spelling for this keyword.  */
        yylval.ttype = ridpointers[(int) rid_code];
        return yycode;
@@ -3673,8 +3676,8 @@ ifobjc
       tree objc_interface_decl = is_class_name (yylval.ttype);
       /* ObjC class names are in the same namespace as variables and
         typedefs, and hence are shadowed by local declarations.  */
-      if (objc_interface_decl 
-         && (global_bindings_p () 
+      if (objc_interface_decl
+         && (global_bindings_p ()
              || (!objc_force_identifier && !decl)))
        {
          yylval.ttype = objc_interface_decl;
@@ -3819,7 +3822,7 @@ _yylex ()
     case CPP_STRING:
     case CPP_WSTRING:
       return yylexstring ();
-      
+
       /* This token is Objective-C specific.  It gives the next token
         special significance.  */
     case CPP_ATSIGN:
@@ -3885,7 +3888,7 @@ yyprint (file, yychar, yyl)
   tree t = yyl.ttype;
 
   fprintf (file, " [%s]", NAME(last_token));
-  
+
   switch (yychar)
     {
     case IDENTIFIER:
index 2572a56..b599aba 100644 (file)
@@ -1,3 +1,11 @@
+2002-06-19  Akim Demaille  <akim@epita.fr>
+
+       * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
+       decl.h's TYPENAME.
+       * spew.c, lex.c: Adjust.
+       * parse.y (explicit_instantiation): Add empty action to override
+       the default $$ = $1 where it introduces a type clash.
+
 2002-06-14  Jason Merrill  <jason@redhat.com>
 
        * semantics.c (begin_for_stmt): Push the 'for' scope before
@@ -75,8 +83,8 @@
        * mangle.c (start_mangling): Allocate G.substitutions here...
        (init_mangle): ... rather than here.
        (finish_mangling): Clear the varray pointer when done with it.
-       * spew.c (yylexstring): Don't use VARRAY_FREE. 
-       * search.c (bfs_walk): Don't use VARRAY_FREE. 
+       * spew.c (yylexstring): Don't use VARRAY_FREE.
+       * search.c (bfs_walk): Don't use VARRAY_FREE.
        * decl2.c (pending_statics): Use gengtype to mark.
        (deferred_fns): Likewise.
        (ssdf_decls): Likewise.
 
 2002-03-21  Aldy Hernandez  <aldyh@redhat.com>
 
-        * tree.c (cp_cannot_inline_tree_fn): Same.
+       * tree.c (cp_cannot_inline_tree_fn): Same.
 
 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 
 2002-02-21  Aldy Hernandez  <aldyh@redhat.com>
 
-        * cp/decl.c (duplicate_decls): Merge always_inline attribute.
+       * cp/decl.c (duplicate_decls): Merge always_inline attribute.
 
-        * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
-        unless DECL_ALWAYS_INLINE.
+       * cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
+       unless DECL_ALWAYS_INLINE.
 
 2002-02-20  Jakub Jelinek  <jakub@redhat.com>
 
index 6c5112a..ae2cd32 100644 (file)
@@ -86,10 +86,11 @@ extern YYSTYPE yylval;              /*  the semantic value of the           */
 int warn_traditional = 0;
 int flag_digraphs = 1;
 
-/* the declaration found for the last IDENTIFIER token read in.
-   yylex must look this up to detect typedefs, which get token type TYPENAME,
-   so it is left around in case the identifier is not a typedef but is
-   used in a context which makes it a reference to a variable.  */
+/* the declaration found for the last IDENTIFIER token read in.  yylex
+   must look this up to detect typedefs, which get token type
+   tTYPENAME, so it is left around in case the identifier is not a
+   typedef but is used in a context which makes it a reference to a
+   variable.  */
 tree lastiddecl;
 
 /* Array for holding counts of the numbers of tokens seen.  */
@@ -692,7 +693,7 @@ yyprint (file, yychar, yylval)
   switch (yychar)
     {
     case IDENTIFIER:
-    case TYPENAME:
+    case tTYPENAME:
     case TYPESPEC:
     case PTYPENAME:
     case PFUNCNAME:
@@ -914,7 +915,7 @@ check_for_missing_semicolon (type)
   if ((yychar > 255
        && yychar != SCSPEC
        && yychar != IDENTIFIER
-       && yychar != TYPENAME
+       && yychar != tTYPENAME
        && yychar != CV_QUALIFIER
        && yychar != SELFNAME)
       || yychar == 0  /* EOF */)
index e815add..4847b3f 100644 (file)
@@ -138,7 +138,7 @@ empty_parms ()
   tree parms;
 
 #ifndef NO_IMPLICIT_EXTERN_C
-  if (in_system_header && current_class_type == NULL 
+  if (in_system_header && current_class_type == NULL
       && current_lang_name == lang_name_c)
     parms = NULL_TREE;
   else
@@ -163,12 +163,12 @@ frob_specs (specs_attrs, lookups)
     {
       /* We have to indicate that there is an "extern", but that it
          was part of a language specifier.  For instance,
-        
+
            extern "C" typedef int (*Ptr) ();
 
          is well formed.  */
       current_declspecs = tree_cons (error_mark_node,
-                                    get_identifier ("extern"), 
+                                    get_identifier ("extern"),
                                     current_declspecs);
       used_extern_spec = 1;
     }
@@ -268,10 +268,10 @@ check_class_key (key, aggr)
 %start program
 
 %union { GTY(())
-  long itype; 
-  tree ttype; 
-  char *strtype; 
-  enum tree_code code; 
+  long itype;
+  tree ttype;
+  char *strtype;
+  enum tree_code code;
   flagged_type_tree ftype;
   struct unparsed_text *pi;
 }
@@ -283,7 +283,7 @@ check_class_key (key, aggr)
 /* All identifiers that are declared typedefs in the current block.
    In some contexts, they are treated just like IDENTIFIER,
    but they can also serve as typespecs in declarations.  */
-%token TYPENAME
+%token tTYPENAME
 %token SELFNAME
 
 /* A template function.  */
@@ -345,7 +345,7 @@ check_class_key (key, aggr)
 %nonassoc IF
 %nonassoc ELSE
 
-%left IDENTIFIER PFUNCNAME TYPENAME SELFNAME PTYPENAME SCSPEC TYPESPEC CV_QUALIFIER ENUM AGGR ELLIPSIS TYPEOF SIGOF OPERATOR NSNAME TYPENAME_KEYWORD ATTRIBUTE
+%left IDENTIFIER PFUNCNAME tTYPENAME SELFNAME PTYPENAME SCSPEC TYPESPEC CV_QUALIFIER ENUM AGGR ELLIPSIS TYPEOF SIGOF OPERATOR NSNAME TYPENAME_KEYWORD ATTRIBUTE
 
 %left '{' ',' ';'
 
@@ -375,7 +375,7 @@ check_class_key (key, aggr)
 
 %type <code> unop
 
-%type <ttype> identifier IDENTIFIER TYPENAME CONSTANT expr nonnull_exprlist
+%type <ttype> identifier IDENTIFIER tTYPENAME CONSTANT expr nonnull_exprlist
 %type <ttype> PFUNCNAME maybe_identifier
 %type <ttype> paren_expr_or_null nontrivial_exprlist SELFNAME
 %type <ttype> expr_no_commas expr_no_comma_rangle
@@ -396,14 +396,14 @@ check_class_key (key, aggr)
 %type <ttype> after_type_declarator_intern
 %type <ttype> direct_notype_declarator direct_after_type_declarator
 %type <itype> components notype_components
-%type <ttype> component_decl component_decl_1 
+%type <ttype> component_decl component_decl_1
 %type <ttype> component_declarator component_declarator0
 %type <ttype> notype_component_declarator notype_component_declarator0
 %type <ttype> after_type_component_declarator after_type_component_declarator0
 %type <ttype> absdcl cv_qualifiers
 %type <ttype> direct_abstract_declarator conversion_declarator
 %type <ttype> new_declarator direct_new_declarator
-%type <ttype> xexpr parmlist parms bad_parm 
+%type <ttype> xexpr parmlist parms bad_parm
 %type <ttype> identifiers_or_typenames
 %type <ttype> fcast_or_absdcl regcast_or_absdcl
 %type <ttype> expr_or_declarator expr_or_declarator_intern
@@ -412,7 +412,7 @@ check_class_key (key, aggr)
 %type <ttype> template_id do_id object_template_id notype_template_declarator
 %type <ttype> overqualified_id notype_qualified_id any_id
 %type <ttype> complex_direct_notype_declarator functional_cast
-%type <ttype> complex_parmlist parms_comma 
+%type <ttype> complex_parmlist parms_comma
 %type <ttype> namespace_qualifier namespace_using_decl
 
 %type <ftype> type_id new_type_id typed_typespecs typespec typed_declspecs
@@ -426,7 +426,7 @@ check_class_key (key, aggr)
 %token <ttype> PTYPENAME
 %token <ttype> EXTERN_LANG_STRING ALL
 %token <ttype> PRE_PARSED_CLASS_DECL DEFARG DEFARG_MARKER
-%token <pi> PRE_PARSED_FUNCTION_DECL 
+%token <pi> PRE_PARSED_FUNCTION_DECL
 %type <ttype> component_constructor_declarator
 %type <ttype> fn_def2 return_id constructor_declarator
 %type <ttype> begin_function_body_
@@ -569,7 +569,7 @@ extdef:
        ;
 
 namespace_alias:
-          NAMESPACE identifier '=' 
+          NAMESPACE identifier '='
                 { begin_only_namespace_names (); }
           any_id ';'
                {
@@ -656,7 +656,7 @@ template_parm_header:
 
 template_spec_header:
          TEMPLATE '<' '>'
-                { begin_specialization(); 
+                { begin_specialization();
                  $$ = NULL_TREE; }
        ;
 
@@ -809,7 +809,7 @@ eat_saved_input:
 function_body:
          begin_function_body_ ctor_initializer_opt save_lineno '{'
                { $<ttype>$ = begin_compound_stmt (/*has_no_scope=*/1); }
-         compstmtend 
+         compstmtend
                 {
                  STMT_LINENO ($<ttype>5) = $3;
                  finish_compound_stmt (/*has_no_scope=*/1, $<ttype>5);
@@ -827,15 +827,15 @@ fndef:
        ;
 
 constructor_declarator:
-         nested_name_specifier SELFNAME '(' 
+         nested_name_specifier SELFNAME '('
                 { $$ = begin_constructor_declarator ($1, $2); }
          parmlist ')' cv_qualifiers exception_specification_opt
                { $$ = make_call_declarator ($<ttype>4, $5, $7, $8); }
        | nested_name_specifier SELFNAME LEFT_RIGHT cv_qualifiers exception_specification_opt
-                { $$ = begin_constructor_declarator ($1, $2); 
+                { $$ = begin_constructor_declarator ($1, $2);
                  $$ = make_call_declarator ($$, empty_parms (), $4, $5);
                }
-       | global_scope nested_name_specifier SELFNAME '(' 
+       | global_scope nested_name_specifier SELFNAME '('
                 { $$ = begin_constructor_declarator ($2, $3); }
         parmlist ')' cv_qualifiers exception_specification_opt
                { $$ = make_call_declarator ($<ttype>5, $6, $8, $9); }
@@ -843,7 +843,7 @@ constructor_declarator:
                { $$ = begin_constructor_declarator ($2, $3);
                  $$ = make_call_declarator ($$, empty_parms (), $5, $6);
                }
-       | nested_name_specifier self_template_type '(' 
+       | nested_name_specifier self_template_type '('
                 { $$ = begin_constructor_declarator ($1, $2); }
          parmlist ')' cv_qualifiers exception_specification_opt
                { $$ = make_call_declarator ($<ttype>4, $5, $7, $8); }
@@ -851,12 +851,12 @@ constructor_declarator:
                { $$ = begin_constructor_declarator ($1, $2);
                  $$ = make_call_declarator ($$, empty_parms (), $4, $5);
                }
-       | global_scope nested_name_specifier self_template_type '(' 
+       | global_scope nested_name_specifier self_template_type '('
                 { $$ = begin_constructor_declarator ($2, $3); }
         parmlist ')' cv_qualifiers exception_specification_opt
                { $$ = make_call_declarator ($<ttype>5, $6, $8, $9); }
        | global_scope nested_name_specifier self_template_type LEFT_RIGHT cv_qualifiers exception_specification_opt
-               { $$ = begin_constructor_declarator ($2, $3); 
+               { $$ = begin_constructor_declarator ($2, $3);
                  $$ = make_call_declarator ($$, empty_parms (), $5, $6);
                }
        ;
@@ -911,19 +911,19 @@ fn_def2:
                    yychar = YYLEX;
                  snarf_method ($$); }
        | component_constructor_declarator
-               { $$ = parse_method ($1, NULL_TREE, NULL_TREE); 
+               { $$ = parse_method ($1, NULL_TREE, NULL_TREE);
                  goto rest_of_mdef; }
        | typed_declspecs declarator
                { $$ = parse_method ($2, $1.t, $1.lookups); goto rest_of_mdef;}
        | declmods notype_declarator
                { $$ = parse_method ($2, $1.t, $1.lookups); goto rest_of_mdef;}
        | notype_declarator
-               { $$ = parse_method ($1, NULL_TREE, NULL_TREE); 
+               { $$ = parse_method ($1, NULL_TREE, NULL_TREE);
                  goto rest_of_mdef; }
        | declmods constructor_declarator
                { $$ = parse_method ($2, $1.t, $1.lookups); goto rest_of_mdef;}
        | constructor_declarator
-               { $$ = parse_method ($1, NULL_TREE, NULL_TREE); 
+               { $$ = parse_method ($1, NULL_TREE, NULL_TREE);
                  goto rest_of_mdef; }
        ;
 
@@ -964,20 +964,20 @@ begin_function_body_:
 
 member_init_list:
          /* empty */
-               { 
-                 $$.new_type_flag = 0; 
-                 $$.t = NULL_TREE; 
+               {
+                 $$.new_type_flag = 0;
+                 $$.t = NULL_TREE;
                }
        | member_init
-               { 
-                 $$.new_type_flag = 1; 
-                 $$.t = $1; 
+               {
+                 $$.new_type_flag = 1;
+                 $$.t = $1;
                }
        | member_init_list ',' member_init
-                { 
-                 if ($3) 
+                {
+                 if ($3)
                    {
-                     $$.new_type_flag = 1; 
+                     $$.new_type_flag = 1;
                      TREE_CHAIN ($3) = $1.t;
                      $$.t = $3;
                    }
@@ -999,7 +999,7 @@ member_init:
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
                  $$ = expand_member_init (current_class_ref,
-                                          NULL_TREE, 
+                                          NULL_TREE,
                                           void_type_node);
                }
        | notype_identifier '(' nonnull_exprlist ')'
@@ -1023,7 +1023,7 @@ member_init:
 
 identifier:
          IDENTIFIER
-       | TYPENAME
+       | tTYPENAME
        | SELFNAME
        | PTYPENAME
        | NSNAME
@@ -1031,7 +1031,7 @@ identifier:
 
 notype_identifier:
          IDENTIFIER
-       | PTYPENAME 
+       | PTYPENAME
        | NSNAME  %prec EMPTY
        ;
 
@@ -1060,24 +1060,28 @@ explicit_instantiation:
                { do_type_instantiation ($4.t, $1, 1);
                  yyungetc (';', 1); }
           end_explicit_instantiation
-       | SCSPEC TEMPLATE begin_explicit_instantiation typed_declspecs 
+               {}
+       | SCSPEC TEMPLATE begin_explicit_instantiation typed_declspecs
           declarator
                { tree specs = strip_attrs ($4.t);
                  do_decl_instantiation (specs, $5, $1); }
           end_explicit_instantiation
+               {}
        | SCSPEC TEMPLATE begin_explicit_instantiation notype_declarator
                { do_decl_instantiation (NULL_TREE, $4, $1); }
           end_explicit_instantiation
+               {}
        | SCSPEC TEMPLATE begin_explicit_instantiation constructor_declarator
                { do_decl_instantiation (NULL_TREE, $4, $1); }
           end_explicit_instantiation
+               {}
        ;
 
-begin_explicit_instantiation: 
+begin_explicit_instantiation:
       { begin_explicit_instantiation(); }
         ;
 
-end_explicit_instantiation: 
+end_explicit_instantiation:
       { end_explicit_instantiation(); }
         ;
 
@@ -1089,7 +1093,7 @@ template_type:
          PTYPENAME '<' template_arg_list_opt template_close_bracket
            finish_template_type_
                 { $$ = $5; }
-       | TYPENAME  '<' template_arg_list_opt template_close_bracket
+       | tTYPENAME  '<' template_arg_list_opt template_close_bracket
            finish_template_type_
                 { $$ = $5; }
        | self_template_type
@@ -1109,18 +1113,18 @@ self_template_type:
        ;
 
 finish_template_type_:
-                { 
+                {
                  if (yychar == YYEMPTY)
                    yychar = YYLEX;
 
-                 $$ = finish_template_type ($<ttype>-3, $<ttype>-1, 
+                 $$ = finish_template_type ($<ttype>-3, $<ttype>-1,
                                             yychar == SCOPE);
                }
         ;
 
 template_close_bracket:
          '>'
-       | RSHIFT 
+       | RSHIFT
                {
                  /* Handle `Class<Class<Type>>' without space in the `>>' */
                  pedwarn ("`>>' should be `> >' in template class name");
@@ -1231,11 +1235,11 @@ condition:
                  $<ttype>$ = parse_decl ($<ttype>2, $4, 1);
                }
          init
-               { 
+               {
                  parse_end_decl ($<ttype>6, $7, $4);
-                 $$ = convert_from_reference ($<ttype>6); 
+                 $$ = convert_from_reference ($<ttype>6);
                  if (TREE_CODE (TREE_TYPE ($$)) == ARRAY_TYPE)
-                   error ("definition of array `%#D' in condition", $$); 
+                   error ("definition of array `%#D' in condition", $$);
                }
        | expr
        ;
@@ -1249,10 +1253,10 @@ compstmtend:
 
 nontrivial_exprlist:
          expr_no_commas ',' expr_no_commas
-               { $$ = tree_cons (NULL_TREE, $$, 
+               { $$ = tree_cons (NULL_TREE, $$,
                                  build_tree_list (NULL_TREE, $3)); }
        | expr_no_commas ',' error
-               { $$ = tree_cons (NULL_TREE, $$, 
+               { $$ = tree_cons (NULL_TREE, $$,
                                  build_tree_list (NULL_TREE, error_mark_node)); }
        | nontrivial_exprlist ',' expr_no_commas
                { chainon ($$, build_tree_list (NULL_TREE, $3)); }
@@ -1292,36 +1296,36 @@ unary_expr:
        | ALIGNOF unary_expr  %prec UNARY
                { $$ = finish_alignof ($2); }
        | ALIGNOF '(' type_id ')'  %prec HYPERUNARY
-               { $$ = finish_alignof (groktypename ($3.t)); 
+               { $$ = finish_alignof (groktypename ($3.t));
                  check_for_new_type ("alignof", $3); }
 
        /* The %prec EMPTY's here are required by the = init initializer
           syntax extension; see below.  */
        | new new_type_id  %prec EMPTY
-               { $$ = build_new (NULL_TREE, $2.t, NULL_TREE, $1); 
+               { $$ = build_new (NULL_TREE, $2.t, NULL_TREE, $1);
                  check_for_new_type ("new", $2); }
        | new new_type_id new_initializer
-               { $$ = build_new (NULL_TREE, $2.t, $3, $1); 
+               { $$ = build_new (NULL_TREE, $2.t, $3, $1);
                  check_for_new_type ("new", $2); }
        | new new_placement new_type_id  %prec EMPTY
-               { $$ = build_new ($2, $3.t, NULL_TREE, $1); 
+               { $$ = build_new ($2, $3.t, NULL_TREE, $1);
                  check_for_new_type ("new", $3); }
        | new new_placement new_type_id new_initializer
-               { $$ = build_new ($2, $3.t, $4, $1); 
+               { $$ = build_new ($2, $3.t, $4, $1);
                  check_for_new_type ("new", $3); }
        | new '(' type_id ')'
             %prec EMPTY
                { $$ = build_new (NULL_TREE, groktypename($3.t),
-                                 NULL_TREE, $1); 
+                                 NULL_TREE, $1);
                  check_for_new_type ("new", $3); }
        | new '(' type_id ')' new_initializer
-               { $$ = build_new (NULL_TREE, groktypename($3.t), $5, $1); 
+               { $$ = build_new (NULL_TREE, groktypename($3.t), $5, $1);
                  check_for_new_type ("new", $3); }
        | new new_placement '(' type_id ')' %prec EMPTY
-               { $$ = build_new ($2, groktypename($4.t), NULL_TREE, $1); 
+               { $$ = build_new ($2, groktypename($4.t), NULL_TREE, $1);
                  check_for_new_type ("new", $4); }
        | new new_placement '(' type_id ')' new_initializer
-               { $$ = build_new ($2, groktypename($4.t), $6, $1); 
+               { $$ = build_new ($2, groktypename($4.t), $6, $1);
                  check_for_new_type ("new", $4); }
 
        | delete cast_expr  %prec UNARY
@@ -1360,7 +1364,7 @@ new_initializer:
                }
        /* GNU extension so people can use initializer lists.  Note that
           this alters the meaning of `new int = 1', which was previously
-          syntactically valid but semantically invalid.  
+          syntactically valid but semantically invalid.
            This feature is now deprecated and will be removed in a future
            release.  */
        | '=' init
@@ -1383,7 +1387,7 @@ regcast_or_absdcl:
                  $$ = make_call_declarator (NULL_TREE, $2.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", $2); }
        | regcast_or_absdcl '(' type_id ')'  %prec EMPTY
-               { $3.t = finish_parmlist (build_tree_list (NULL_TREE, $3.t), 0); 
+               { $3.t = finish_parmlist (build_tree_list (NULL_TREE, $3.t), 0);
                  $$ = make_call_declarator ($$, $3.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", $3); }
        ;
@@ -1393,9 +1397,9 @@ cast_expr:
        | regcast_or_absdcl unary_expr  %prec UNARY
                { $$ = reparse_absdcl_as_casts ($$, $2); }
        | regcast_or_absdcl '{' initlist maybecomma '}'  %prec UNARY
-               { 
+               {
                  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
-                                       nreverse ($3)); 
+                                       nreverse ($3));
                  if (pedantic)
                    pedwarn ("ISO C++ forbids compound literals");
                  /* Indicate that this was a C99 compound literal.  */
@@ -1539,7 +1543,7 @@ do_id:
         ;
 
 template_id:
-          PFUNCNAME '<' do_id template_arg_list_opt template_close_bracket 
+          PFUNCNAME '<' do_id template_arg_list_opt template_close_bracket
                 { $$ = lookup_template_function ($3, $4); }
         | operator_name '<' do_id template_arg_list_opt template_close_bracket
                 { $$ = lookup_template_function ($3, $4); }
@@ -1550,14 +1554,14 @@ object_template_id:
                 { $$ = lookup_template_function ($2, $4); }
         | TEMPLATE PFUNCNAME '<' template_arg_list_opt template_close_bracket
                 { $$ = lookup_template_function ($2, $4); }
-        | TEMPLATE operator_name '<' template_arg_list_opt 
+        | TEMPLATE operator_name '<' template_arg_list_opt
           template_close_bracket
                 { $$ = lookup_template_function ($2, $4); }
         ;
 
 unqualified_id:
          notype_unqualified_id
-       | TYPENAME
+       | tTYPENAME
        | SELFNAME
        ;
 
@@ -1587,7 +1591,7 @@ notype_template_declarator:
        | NSNAME '<' template_arg_list template_close_bracket
                 { $$ = lookup_template_function ($1, $3); }
        ;
-               
+
 direct_notype_declarator:
          complex_direct_notype_declarator
        /* This precedence declaration is to prefer this reduce
@@ -1603,9 +1607,9 @@ primary:
                {
                  if (TREE_CODE ($1) == BIT_NOT_EXPR)
                    $$ = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND ($1, 0));
-                 else 
+                 else
                    $$ = finish_id_expr ($1);
-               }               
+               }
        | CONSTANT
        | boolean_literal
        | STRING
@@ -1639,8 +1643,8 @@ primary:
                      YYERROR;
                    }
                  if (pedantic)
-                   pedwarn ("ISO C++ forbids braced-groups within expressions");  
-                 $<ttype>$ = begin_stmt_expr (); 
+                   pedwarn ("ISO C++ forbids braced-groups within expressions");
+                 $<ttype>$ = begin_stmt_expr ();
                }
          compstmt_or_stmtexpr ')'
                { $$ = finish_stmt_expr ($<ttype>2); }
@@ -1720,8 +1724,8 @@ primary:
        | overqualified_id LEFT_RIGHT
                { $$ = finish_qualified_call_expr ($1, NULL_TREE); }
         | object object_template_id %prec UNARY
-                { 
-                 $$ = build_x_component_ref ($$, $2, NULL_TREE, 1); 
+                {
+                 $$ = build_x_component_ref ($$, $2, NULL_TREE, 1);
                }
         | object object_template_id '(' nonnull_exprlist ')'
                 { $$ = finish_object_call_expr ($2, $1, $4); }
@@ -1825,7 +1829,7 @@ object:
                { got_object = TREE_TYPE ($$); }
        | primary POINTSAT
                {
-                 $$ = build_x_arrow ($$); 
+                 $$ = build_x_arrow ($$);
                  got_object = TREE_TYPE ($$);
                }
        ;
@@ -1874,20 +1878,20 @@ fcast_or_absdcl:
 /* ISO type-id (8.1) */
 type_id:
          typed_typespecs absdcl
-               { $$.t = build_tree_list ($1.t, $2); 
+               { $$.t = build_tree_list ($1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | nonempty_cv_qualifiers absdcl
-               { $$.t = build_tree_list ($1.t, $2); 
+               { $$.t = build_tree_list ($1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | typespec absdcl
                { $$.t = build_tree_list (build_tree_list (NULL_TREE, $1.t),
-                                         $2); 
+                                         $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | typed_typespecs  %prec EMPTY
                { $$.t = build_tree_list ($1.t, NULL_TREE);
                  $$.new_type_flag = $1.new_type_flag;  }
        | nonempty_cv_qualifiers  %prec EMPTY
-               { $$.t = build_tree_list ($1.t, NULL_TREE); 
+               { $$.t = build_tree_list ($1.t, NULL_TREE);
                  $$.new_type_flag = $1.new_type_flag; }
        ;
 
@@ -1905,23 +1909,23 @@ typed_declspecs:
 
 typed_declspecs1:
          declmods typespec
-               { $$.t = tree_cons (NULL_TREE, $2.t, $1.t); 
+               { $$.t = tree_cons (NULL_TREE, $2.t, $1.t);
                  $$.new_type_flag = $2.new_type_flag; }
        | typespec reserved_declspecs  %prec HYPERUNARY
-               { $$.t = tree_cons (NULL_TREE, $1.t, $2); 
+               { $$.t = tree_cons (NULL_TREE, $1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | typespec reserved_typespecquals reserved_declspecs
-               { $$.t = tree_cons (NULL_TREE, $1.t, chainon ($2, $3)); 
+               { $$.t = tree_cons (NULL_TREE, $1.t, chainon ($2, $3));
                  $$.new_type_flag = $1.new_type_flag; }
        | declmods typespec reserved_declspecs
-               { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t)); 
+               { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t));
                  $$.new_type_flag = $2.new_type_flag; }
        | declmods typespec reserved_typespecquals
-               { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t)); 
+               { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t));
                  $$.new_type_flag = $2.new_type_flag; }
        | declmods typespec reserved_typespecquals reserved_declspecs
                { $$.t = tree_cons (NULL_TREE, $2.t,
-                                   chainon ($3, chainon ($4, $1.t))); 
+                                   chainon ($3, chainon ($4, $1.t)));
                  $$.new_type_flag = $2.new_type_flag; }
        ;
 
@@ -1987,16 +1991,16 @@ declmods:
 
 typed_typespecs:
          typespec  %prec EMPTY
-               { $$.t = build_tree_list (NULL_TREE, $1.t); 
+               { $$.t = build_tree_list (NULL_TREE, $1.t);
                  $$.new_type_flag = $1.new_type_flag; }
        | nonempty_cv_qualifiers typespec
-               { $$.t = tree_cons (NULL_TREE, $2.t, $1.t); 
+               { $$.t = tree_cons (NULL_TREE, $2.t, $1.t);
                  $$.new_type_flag = $2.new_type_flag; }
        | typespec reserved_typespecquals
-               { $$.t = tree_cons (NULL_TREE, $1.t, $2); 
+               { $$.t = tree_cons (NULL_TREE, $1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | nonempty_cv_qualifiers typespec reserved_typespecquals
-               { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t)); 
+               { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t));
                  $$.new_type_flag = $2.new_type_flag; }
        ;
 
@@ -2119,7 +2123,7 @@ initdcl0_innards:
                { $<ttype>$ = parse_decl0 ($<ttype>-1, $<ftype>-2.t,
                                           $<ftype>-2.lookups, $1, 1); }
           /* Note how the declaration of the variable is in effect
-            while its init is parsed! */ 
+            while its init is parsed! */
          init
                { parse_end_decl ($<ttype>3, $4, $<ttype>0); }
        | maybe_attribute
@@ -2127,7 +2131,7 @@ initdcl0_innards:
                                        $<ftype>-2.lookups, $1, 0);
                  parse_end_decl (d, NULL_TREE, $<ttype>0); }
        ;
-  
+
 initdcl0:
          declarator maybeasm initdcl0_innards
                 {}
@@ -2137,15 +2141,15 @@ notype_initdcl0:
           notype_declarator maybeasm initdcl0_innards
                 {}
         ;
-  
+
 nomods_initdcl0:
           notype_declarator maybeasm
             { /* Set things up as initdcl0_innards expects.  */
              $<ttype>$ = $2;
-             $2 = $1; 
+             $2 = $1;
               $<ftype>1.t = NULL_TREE;
              $<ftype>1.lookups = NULL_TREE; }
-          initdcl0_innards 
+          initdcl0_innards
             {}
        | constructor_declarator maybeasm maybe_attribute
                { tree d = parse_decl0 ($1, NULL_TREE, NULL_TREE, $3, 0);
@@ -2160,7 +2164,7 @@ maybe_attribute:
        | attributes
                { $$ = $1; }
        ;
+
 attributes:
       attribute
                { $$ = $1; }
@@ -2179,7 +2183,7 @@ attribute_list:
        | attribute_list ',' attrib
                { $$ = chainon ($1, $3); }
        ;
+
 attrib:
          /* empty */
                { $$ = NULL_TREE; }
@@ -2259,13 +2263,13 @@ pending_inline:
                  process_next_inline ($1);
                }
        | PRE_PARSED_FUNCTION_DECL maybe_return_init function_try_block
-               { 
-                 expand_body (finish_function (2)); 
+               {
+                 expand_body (finish_function (2));
                   process_next_inline ($1);
                }
        | PRE_PARSED_FUNCTION_DECL maybe_return_init error
-               { 
-                 finish_function (2); 
+               {
+                 finish_function (2);
                  process_next_inline ($1); }
        ;
 
@@ -2311,14 +2315,14 @@ structsp:
                  current_enum_type = $<ttype>3;
                  check_for_missing_semicolon ($$.t); }
        | ENUM identifier
-               { $$.t = xref_tag (enum_type_node, $2, 1); 
+               { $$.t = xref_tag (enum_type_node, $2, 1);
                  $$.new_type_flag = 0; }
        | ENUM complex_type_name
-               { $$.t = xref_tag (enum_type_node, $2, 1); 
+               { $$.t = xref_tag (enum_type_node, $2, 1);
                  $$.new_type_flag = 0; }
        | TYPENAME_KEYWORD typename_sub
                { $$.t = $2;
-                 $$.new_type_flag = 0; 
+                 $$.new_type_flag = 0;
                  if (!processing_template_decl)
                    pedwarn ("using `typename' outside of template"); }
        /* C++ extensions, merged with C to avoid shift/reduce conflicts */
@@ -2327,7 +2331,7 @@ structsp:
                  if ($2 && $1.t != error_mark_node)
                    {
                      tree type = TREE_TYPE ($1.t);
-                 
+
                      if (TREE_CODE (type) == TYPENAME_TYPE)
                        /* In a definition of a member class template,
                            we will get here with an implicit typename,
@@ -2336,11 +2340,11 @@ structsp:
                      maybe_process_partial_specialization (type);
                      xref_basetypes (current_aggr, $1.t, type, $2);
                    }
-                 $1.t = begin_class_definition (TREE_TYPE ($1.t)); 
+                 $1.t = begin_class_definition (TREE_TYPE ($1.t));
                  check_class_key (current_aggr, $1.t);
                   current_aggr = NULL_TREE; }
           opt.component_decl_list '}' maybe_attribute
-               { 
+               {
                  int semi;
                  tree t;
 
@@ -2365,7 +2369,7 @@ structsp:
          pending_inlines
                 {
                  $$.t = $<ttype>8;
-                 $$.new_type_flag = 1; 
+                 $$.new_type_flag = 1;
                }
        | class_head_decl
                {
@@ -2426,18 +2430,18 @@ class_head:
 
 class_head_apparent_template:
          aggr apparent_template_type
-               { 
-                 current_aggr = $1; 
+               {
+                 current_aggr = $1;
                  $$ = $2;
                }
        | aggr nested_name_specifier apparent_template_type
-               { 
-                 current_aggr = $1; 
+               {
+                 current_aggr = $1;
                  $$ = $3;
                }
        | aggr global_scope nested_name_specifier apparent_template_type
-               { 
-                 current_aggr = $1; 
+               {
+                 current_aggr = $1;
                  $$ = $4;
                }
        ;
@@ -2589,7 +2593,7 @@ base_class_access_list:
 opt.component_decl_list:
        | component_decl_list
        | opt.component_decl_list access_specifier component_decl_list
-       | opt.component_decl_list access_specifier 
+       | opt.component_decl_list access_specifier
        ;
 
 access_specifier:
@@ -2603,13 +2607,13 @@ access_specifier:
    ARM $9.2 says that the semicolon is optional, and therefore allowed.  */
 component_decl_list:
          component_decl
-               { 
+               {
                  finish_member_declaration ($1);
                  current_aggr = NULL_TREE;
                  reset_type_access_control ();
                }
        | component_decl_list component_decl
-               { 
+               {
                  finish_member_declaration ($2);
                  current_aggr = NULL_TREE;
                  reset_type_access_control ();
@@ -2637,7 +2641,7 @@ component_decl:
                { $$ = $2;
                  pedantic = $1; }
         | template_header component_decl
-                {  
+                {
                  if ($2)
                    $$ = finish_member_template_decl ($2);
                  else
@@ -2647,8 +2651,8 @@ component_decl:
                  finish_template_decl ($1);
                }
        | template_header typed_declspecs ';'
-                { 
-                 $$ = finish_member_class_template ($2.t); 
+                {
+                 $$ = finish_member_class_template ($2.t);
                  finish_template_decl ($1);
                }
        | bad_decl
@@ -2681,10 +2685,10 @@ component_decl_1:
                  $$ = NULL_TREE;
                }
        | declmods notype_components
-               { 
+               {
                  if (!$2)
                    grok_x_components ($1.t);
-                 $$ = NULL_TREE; 
+                 $$ = NULL_TREE;
                }
        | notype_declarator maybeasm maybe_attribute maybe_init
                { $$ = grokfield ($$, NULL_TREE, $4, $2, $3); }
@@ -2720,14 +2724,14 @@ components:
          /* empty: possibly anonymous */
                 { $$ = 0; }
        | component_declarator0
-                { 
+                {
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
                    $1 = finish_member_template_decl ($1);
-                 finish_member_declaration ($1); 
+                 finish_member_declaration ($1);
                  $$ = 1;
                }
        | components ',' component_declarator
-                { 
+                {
                  check_multiple_declarators ();
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
                    $3 = finish_member_template_decl ($3);
@@ -2740,18 +2744,18 @@ notype_components:
          /* empty: possibly anonymous */
                 { $$ = 0; }
        | notype_component_declarator0
-                { 
+                {
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
                    $1 = finish_member_template_decl ($1);
                  finish_member_declaration ($1);
                  $$ = 1;
                }
        | notype_components ',' notype_component_declarator
-                { 
+                {
                  check_multiple_declarators ();
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
                    $3 = finish_member_template_decl ($3);
-                 finish_member_declaration ($3); 
+                 finish_member_declaration ($3);
                  $$ = 2;
                }
        ;
@@ -2770,7 +2774,7 @@ after_type_component_declarator0:
          after_type_declarator maybeasm maybe_attribute maybe_init
                { $$ = parse_field0 ($1, $<ftype>0.t, $<ftype>0.lookups,
                                     $3, $2, $4); }
-       | TYPENAME ':' expr_no_commas maybe_attribute
+       | tTYPENAME ':' expr_no_commas maybe_attribute
                { $$ = parse_bitfield0 ($1, $<ftype>0.t, $<ftype>0.lookups,
                                        $4, $3); }
        ;
@@ -2793,7 +2797,7 @@ notype_component_declarator0:
 after_type_component_declarator:
          after_type_declarator maybeasm maybe_attribute maybe_init
                { $$ = parse_field ($1, $3, $2, $4); }
-       | TYPENAME ':' expr_no_commas maybe_attribute
+       | tTYPENAME ':' expr_no_commas maybe_attribute
                { $$ = parse_bitfield ($1, $4, $3); }
        ;
 
@@ -2830,10 +2834,10 @@ enumerator:
 /* ISO new-type-id (5.3.4) */
 new_type_id:
          type_specifier_seq new_declarator
-               { $$.t = build_tree_list ($1.t, $2); 
+               { $$.t = build_tree_list ($1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | type_specifier_seq  %prec EMPTY
-               { $$.t = build_tree_list ($1.t, NULL_TREE); 
+               { $$.t = build_tree_list ($1.t, NULL_TREE);
                  $$.new_type_flag = $1.new_type_flag; }
        /* GNU extension to allow arrays of arbitrary types with
           non-constant dimension.  */
@@ -2859,13 +2863,13 @@ nonempty_cv_qualifiers:
                { $$.t = hash_tree_cons (NULL_TREE, $1, NULL_TREE);
                  $$.new_type_flag = 0; }
        | nonempty_cv_qualifiers CV_QUALIFIER
-               { $$.t = hash_tree_cons (NULL_TREE, $2, $1.t); 
+               { $$.t = hash_tree_cons (NULL_TREE, $2, $1.t);
                  $$.new_type_flag = $1.new_type_flag; }
        | attributes %prec EMPTY
-               { $$.t = hash_tree_cons ($1, NULL_TREE, NULL_TREE); 
+               { $$.t = hash_tree_cons ($1, NULL_TREE, NULL_TREE);
                  $$.new_type_flag = 0; }
        | nonempty_cv_qualifiers attributes %prec EMPTY
-               { $$.t = hash_tree_cons ($2, NULL_TREE, $1.t); 
+               { $$.t = hash_tree_cons ($2, NULL_TREE, $1.t);
                  $$.new_type_flag = $1.new_type_flag; }
        ;
 
@@ -2974,7 +2978,7 @@ notype_declarator_intern:
                  $$ = tree_cons ($1, $2, NULL_TREE);
                }
        ;
-       
+
 notype_declarator:
          '*' nonempty_cv_qualifiers notype_declarator_intern  %prec UNARY
                { $$ = make_pointer_declarator ($2.t, $3); }
@@ -3022,7 +3026,7 @@ complex_direct_notype_declarator:
                 { enter_scope_of ($2); $$ = $2;}
        | global_scope notype_unqualified_id
                 { $$ = build_nt (SCOPE_REF, global_namespace, $2);
-                 enter_scope_of ($$); 
+                 enter_scope_of ($$);
                }
         | nested_name_specifier notype_template_declarator
                 { got_scope = NULL_TREE;
@@ -3065,7 +3069,7 @@ functional_cast:
        ;
 
 type_name:
-         TYPENAME
+         tTYPENAME
        | SELFNAME
        | template_type  %prec EMPTY
        ;
@@ -3075,21 +3079,21 @@ nested_name_specifier:
        | nested_name_specifier nested_name_specifier_1
                { $$ = $2; }
        | nested_name_specifier TEMPLATE explicit_template_type SCOPE
-                { got_scope = $$ 
+                { got_scope = $$
                    = make_typename_type ($1, $3, tf_error); }
        /* Error handling per Core 125.  */
        | nested_name_specifier IDENTIFIER SCOPE
-                { got_scope = $$ 
+                { got_scope = $$
                    = make_typename_type ($1, $2, tf_error); }
        | nested_name_specifier PTYPENAME SCOPE
-                { got_scope = $$ 
+                { got_scope = $$
                    = make_typename_type ($1, $2, tf_error); }
        ;
 
 /* Why the @#$%^& do type_name and notype_identifier need to be expanded
    inline here?!?  (jason) */
 nested_name_specifier_1:
-         TYPENAME SCOPE
+         tTYPENAME SCOPE
                {
                  if (TREE_CODE ($1) == IDENTIFIER_NODE)
                    {
@@ -3165,17 +3169,17 @@ typename_sub1:
                    }
                }
        | typename_sub1 explicit_template_type SCOPE
-                { got_scope = $$ 
+                { got_scope = $$
                    = make_typename_type ($1, $2, tf_error); }
        | typename_sub1 TEMPLATE explicit_template_type SCOPE
-                { got_scope = $$ 
+                { got_scope = $$
                    = make_typename_type ($1, $3, tf_error); }
        ;
 
 /* This needs to return a TYPE_DECL for simple names so that we don't
    forget what name was used.  */
 typename_sub2:
-         TYPENAME SCOPE
+         tTYPENAME SCOPE
                {
                  if (TREE_CODE ($1) != TYPE_DECL)
                    $$ = lastiddecl;
@@ -3276,7 +3280,7 @@ absdcl_intern:
                  $$ = tree_cons ($1, $2, NULL_TREE);
                }
        ;
-       
+
 /* ISO abstract-declarator (8.1) */
 absdcl:
          '*' nonempty_cv_qualifiers absdcl_intern
@@ -3362,7 +3366,7 @@ label_decls:
 
 label_decl:
          LABEL identifiers_or_typenames ';'
-                { 
+                {
                  while ($2)
                    {
                      finish_label_decl (TREE_VALUE ($2));
@@ -3374,7 +3378,7 @@ label_decl:
 compstmt_or_stmtexpr:
          save_lineno '{'
                 { $<ttype>$ = begin_compound_stmt (0); }
-         compstmtend 
+         compstmtend
                 { STMT_LINENO ($<ttype>3) = $1;
                  finish_compound_stmt (0, $<ttype>3); }
        ;
@@ -3397,9 +3401,9 @@ simple_if:
 
 implicitly_scoped_stmt:
          compstmt
-       | 
+       |
                { $<ttype>$ = begin_compound_stmt (0); }
-         save_lineno simple_stmt 
+         save_lineno simple_stmt
                { STMT_LINENO ($<ttype>1) = $2;
                  if ($3) STMT_LINENO ($3) = $2;
                  finish_compound_stmt (0, $<ttype>1); }
@@ -3420,9 +3424,9 @@ simple_stmt:
        | simple_if ELSE
                 { begin_else_clause (); }
          implicitly_scoped_stmt
-                { 
+                {
                  $$ = $1;
-                 finish_else_clause ($1); 
+                 finish_else_clause ($1);
                  finish_if_stmt ();
                }
        | simple_if  %prec IF
@@ -3459,7 +3463,7 @@ simple_stmt:
          implicitly_scoped_stmt
                 { $$ = $<ttype>2;
                  finish_for_stmt ($<ttype>2); }
-       | SWITCH 
+       | SWITCH
                 { $<ttype>$ = begin_switch_stmt (); }
            '(' condition ')'
                 { finish_switch_cond ($4, $<ttype>2); }
@@ -3510,7 +3514,7 @@ simple_stmt:
          asm_clobbers ')' ';'
                { $$ = finish_asm_stmt ($2, $4, $6, NULL_TREE, $8); }
        | GOTO '*' expr ';'
-                { 
+                {
                  if (pedantic)
                    pedwarn ("ISO C++ forbids computed gotos");
                  $$ = finish_goto_stmt ($3);
@@ -3601,7 +3605,7 @@ handler_args:
                  expand_start_catch_block ($2.t, $3); }
        This allows reference parameters...  */
        | '(' parm ')'
-               { 
+               {
                  check_for_new_type ("inside exception declarations", $2);
                  $$ = start_handler_parms (TREE_PURPOSE ($2.t),
                                            TREE_VALUE ($2.t));
@@ -3613,7 +3617,7 @@ label_colon:
                 { finish_label_stmt ($1); }
        | PTYPENAME ':'
                 { finish_label_stmt ($1); }
-       | TYPENAME ':'
+       | tTYPENAME ':'
                 { finish_label_stmt ($1); }
        | SELFNAME ':'
                 { finish_label_stmt ($1); }
@@ -3704,7 +3708,7 @@ complex_parmlist:
                 { $$ = finish_parmlist ($1, 1); }
        | type_id ELLIPSIS
                 { $$ = finish_parmlist (build_tree_list (NULL_TREE,
-                                                        $1.t), 1); } 
+                                                        $1.t), 1); }
        | ELLIPSIS
                 { $$ = finish_parmlist (NULL_TREE, 1); }
        | parms ':'
@@ -3724,7 +3728,7 @@ complex_parmlist:
                     parenthesis.  */
                  yyerror ("possibly missing ')'");
                  $$ = finish_parmlist (build_tree_list (NULL_TREE,
-                                                        $1.t), 0); 
+                                                        $1.t), 0);
                  yyungetc (':', 0);
                  yychar = ')';
                }
@@ -3776,20 +3780,20 @@ named_parm:
                { $$.new_type_flag = $1.new_type_flag;
                  $$.t = build_tree_list ($1.t, $2); }
        | typed_typespecs declarator
-               { $$.t = build_tree_list ($1.t, $2); 
+               { $$.t = build_tree_list ($1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | typespec declarator
                { $$.t = build_tree_list (build_tree_list (NULL_TREE, $1.t),
-                                         $2); 
+                                         $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | typed_declspecs1 absdcl
                { $$.t = build_tree_list ($1.t, $2);
                  $$.new_type_flag = $1.new_type_flag; }
        | typed_declspecs1  %prec EMPTY
-               { $$.t = build_tree_list ($1.t, NULL_TREE); 
+               { $$.t = build_tree_list ($1.t, NULL_TREE);
                  $$.new_type_flag = $1.new_type_flag; }
        | declmods notype_declarator
-               { $$.t = build_tree_list ($1.t, $2); 
+               { $$.t = build_tree_list ($1.t, $2);
                  $$.new_type_flag = 0; }
        ;
 
index d56f611..8abf8dc 100644 (file)
@@ -86,7 +86,7 @@ struct unparsed_text GTY(())
   struct token_chunk * tokens; /* Start of the token list.  */
 
   struct token_chunk *last_chunk; /* End of the token list.  */
-  short last_pos;      /* Number of tokens used in the last chunk of 
+  short last_pos;      /* Number of tokens used in the last chunk of
                           TOKENS. */
 
   short cur_pos;       /* Current token in 'cur_chunk', when rescanning.  */
@@ -126,7 +126,7 @@ static SPEW_INLINE void consume_token PARAMS ((void));
 static SPEW_INLINE int read_process_identifier PARAMS ((YYSTYPE *));
 
 static SPEW_INLINE void feed_input PARAMS ((struct unparsed_text *));
-static SPEW_INLINE struct token * space_for_token 
+static SPEW_INLINE struct token * space_for_token
   PARAMS ((struct unparsed_text *t));
 static SPEW_INLINE struct token * remove_last_token
   PARAMS ((struct unparsed_text *t));
@@ -161,10 +161,11 @@ static enum cpp_ttype last_token;
 static tree last_token_id;
 
 /* From lex.c: */
-/* the declaration found for the last IDENTIFIER token read in.
-   yylex must look this up to detect typedefs, which get token type TYPENAME,
-   so it is left around in case the identifier is not a typedef but is
-   used in a context which makes it a reference to a variable.  */
+/* the declaration found for the last IDENTIFIER token read in.  yylex
+   must look this up to detect typedefs, which get token type
+   tTYPENAME, so it is left around in case the identifier is not a
+   typedef but is used in a context which makes it a reference to a
+   variable.  */
 extern tree lastiddecl;                /* let our brains leak out here too */
 extern int     yychar;         /*  the lookahead symbol                */
 extern YYSTYPE yylval;         /*  the semantic value of the           */
@@ -178,7 +179,7 @@ static int first_token;
    through and parse all of them using do_pending_defargs.  Since yacc
    parsers are not reentrant, we retain defargs state in these two
    variables so that subsequent calls to do_pending_defargs can resume
-   where the previous call left off. DEFARG_FNS is a tree_list where 
+   where the previous call left off. DEFARG_FNS is a tree_list where
    the TREE_TYPE is the current_class_type, TREE_VALUE is the FUNCTION_DECL,
    and TREE_PURPOSE is the list unprocessed dependent functions.  */
 
@@ -359,7 +360,7 @@ read_token (t)
     case CPP_EOF:
       t->yychar = 0;
       break;
-      
+
     case CPP_NAME:
       t->yychar = read_process_identifier (&t->yylval);
       break;
@@ -486,12 +487,12 @@ next_token (t)
          feed->input->cur_chunk = feed->input->cur_chunk->next;
          feed->input->cur_pos = 0;
        }
-      memcpy (t, feed->input->cur_chunk->toks + feed->input->cur_pos, 
+      memcpy (t, feed->input->cur_chunk->toks + feed->input->cur_pos,
              sizeof (struct token));
       feed->input->cur_pos++;
       return t->yychar;
     }
-  
+
   memcpy (t, &Teosi, sizeof (struct token));
   return END_OF_SAVED_INPUT;
 }
@@ -579,7 +580,7 @@ scan_tokens (n)
        goto pad_tokens;
     }
   return;
-  
+
  pad_tokens:
   while (num_tokens () <= n)
     obstack_grow (&token_obstack, &Tpad, sizeof (struct token));
@@ -605,7 +606,7 @@ identifier_type (decl)
     {
       if (TREE_CODE (DECL_TEMPLATE_RESULT (decl)) == TYPE_DECL)
        return PTYPENAME;
-      else if (looking_for_template) 
+      else if (looking_for_template)
        return PFUNCNAME;
     }
   if (looking_for_template && really_overloaded_fn (decl))
@@ -615,7 +616,7 @@ identifier_type (decl)
        decl = TREE_VALUE (decl);
 
       for (t = decl; t != NULL_TREE; t = OVL_CHAIN (t))
-       if (DECL_FUNCTION_TEMPLATE_P (OVL_FUNCTION (t))) 
+       if (DECL_FUNCTION_TEMPLATE_P (OVL_FUNCTION (t)))
          return PFUNCNAME;
     }
   if (TREE_CODE (decl) == NAMESPACE_DECL)
@@ -636,11 +637,11 @@ identifier_type (decl)
   if (t && t == decl)
     return SELFNAME;
 
-  return TYPENAME;
+  return tTYPENAME;
 }
 
 /* token[0] == AGGR (struct/union/enum)
-   Thus, token[1] is either a TYPENAME or a TYPENAME_DEFN.
+   Thus, token[1] is either a tTYPENAME or a TYPENAME_DEFN.
    If token[2] == '{' or ':' then it's TYPENAME_DEFN.
    It's also a definition if it's a forward declaration (as in 'struct Foo;')
    which we can tell if token[2] == ';' *and* token[-1] != FRIEND or NEW.  */
@@ -649,10 +650,10 @@ static SPEW_INLINE void
 do_aggr ()
 {
   int yc1, yc2;
-  
+
   scan_tokens (2);
   yc1 = nth_token (1)->yychar;
-  if (yc1 != TYPENAME && yc1 != IDENTIFIER && yc1 != PTYPENAME)
+  if (yc1 != tTYPENAME && yc1 != IDENTIFIER && yc1 != PTYPENAME)
     return;
   yc2 = nth_token (2)->yychar;
   if (yc2 == ';')
@@ -667,7 +668,7 @@ do_aggr ()
 
   switch (yc1)
     {
-    case TYPENAME:
+    case tTYPENAME:
       nth_token (1)->yychar = TYPENAME_DEFN;
       break;
     case PTYPENAME:
@@ -679,7 +680,7 @@ do_aggr ()
     default:
       abort ();
     }
-}  
+}
 
 void
 see_typename ()
@@ -739,7 +740,7 @@ yylex ()
     {
     case EMPTY:
       /* This is a lexical no-op.  */
-#ifdef SPEW_DEBUG    
+#ifdef SPEW_DEBUG
       if (spew_debug)
        debug_yychar (yychr);
 #endif
@@ -758,14 +759,14 @@ yylex ()
     case IDENTIFIER:
     {
       int peek;
-      
+
       scan_tokens (1);
       peek = nth_token (1)->yychar;
       yychr = frob_id (yychr, peek, &nth_token (0)->yylval.ttype);
       break;
     }
     case IDENTIFIER_DEFN:
-    case TYPENAME:
+    case tTYPENAME:
     case TYPENAME_DEFN:
     case PTYPENAME:
     case PTYPENAME_DEFN:
@@ -831,13 +832,13 @@ yylex ()
   yychar = yychr;
   {
     struct token *tok = nth_token (0);
-    
+
     yylval = tok->yylval;
     if (tok->lineno)
       lineno = tok->lineno;
   }
 
-#ifdef SPEW_DEBUG    
+#ifdef SPEW_DEBUG
   if (spew_debug)
     debug_yychar (yychr);
 #endif
@@ -883,7 +884,7 @@ frob_id (yyc, peek, idp)
 {
   tree trrr;
   int old_looking_for_typename = 0;
-  
+
   if (peek == SCOPE)
     {
       /* Don't interfere with the setting from an 'aggr' prefix.  */
@@ -898,7 +899,7 @@ frob_id (yyc, peek, idp)
       yyc = identifier_type (trrr);
       switch(yyc)
         {
-          case TYPENAME:
+          case tTYPENAME:
           case SELFNAME:
           case NSNAME:
           case PTYPENAME:
@@ -1042,7 +1043,7 @@ space_for_token (t)
   t->last_chunk->next = ggc_alloc (sizeof (*t->last_chunk->next));
   t->last_chunk = t->last_chunk->next;
   t->last_chunk->next = NULL;
-  
+
   t->last_pos = 1;
   return t->last_chunk->toks;
 }
@@ -1134,7 +1135,7 @@ snarf_block (t)
            {
              if (!look_for_catch)
                break;
-             
+
              if (next_token (space_for_token (t)) != CATCH)
                {
                  push_token (remove_last_token (t));
@@ -1149,7 +1150,7 @@ snarf_block (t)
          if (look_for_lbrac)
            {
              struct token *fake;
-             
+
              error ("function body for constructor missing");
              /* fake a { } to avoid further errors */
              fake = space_for_token (t);
@@ -1183,7 +1184,7 @@ snarf_method (decl)
   struct unparsed_text *meth;
 
   meth = alloc_unparsed_text (starting_filename, starting_lineno, decl,
-                             (interface_unknown ? 1 
+                             (interface_unknown ? 1
                               : (interface_only ? 0 : 2)));
 
   snarf_block (meth);
@@ -1284,7 +1285,7 @@ add_defarg_fn (decl)
     TREE_VALUE (defarg_fns) = decl;
   else
     {
-      defarg_fns = tree_cons (NULL_TREE, decl, defarg_fns);  
+      defarg_fns = tree_cons (NULL_TREE, decl, defarg_fns);
       TREE_TYPE (defarg_fns) = current_class_type;
     }
 }
@@ -1313,7 +1314,7 @@ finish_defarg ()
     error ("parse error at end of saved function text");
 
   end_input ();
-}  
+}
 
 /* Main function for deferred parsing of default arguments.  Called from
    the parser.  */
@@ -1327,7 +1328,7 @@ do_pending_defargs ()
   for (; defarg_fns;)
     {
       tree current = defarg_fns;
-      
+
       tree defarg_fn = TREE_VALUE (defarg_fns);
       if (defarg_parm == NULL_TREE)
        {
@@ -1367,7 +1368,7 @@ do_pending_defargs ()
 
       poplevel (0, 0, 0);
       pop_nested_class ();
-      
+
       defarg_fns = TREE_CHAIN (defarg_fns);
       if (defarg_depfns)
         {
@@ -1375,8 +1376,8 @@ do_pending_defargs ()
              of defarg_fns. We will need to reprocess this function, and
              check for circular dependencies.  */
           tree a, b;
-          
-          for (a = defarg_depfns, b = TREE_PURPOSE (current); a && b; 
+
+          for (a = defarg_depfns, b = TREE_PURPOSE (current); a && b;
                a = TREE_CHAIN (a), b = TREE_CHAIN (b))
             if (TREE_VALUE (a) != TREE_VALUE (b))
               goto different;
@@ -1392,7 +1393,7 @@ do_pending_defargs ()
               cp_warning_at ("circular dependency in default args of `%#D'", defarg_fn);
               /* No need to say what else is dependent, as they will be
                  picked up in another pass.  */
-              
+
               /* Immediately repeat, but marked so that we break the loop. */
               defarg_fns = current;
               TREE_PURPOSE (current) = error_mark_node;
@@ -1413,7 +1414,7 @@ done_pending_defargs ()
     {
       tree fn = TREE_VALUE (defarg_fnsdone);
       tree parms;
-      
+
       if (TREE_CODE (fn) == FUNCTION_DECL)
         parms = TYPE_ARG_TYPES (TREE_TYPE (fn));
       else
@@ -1460,7 +1461,7 @@ replace_defarg (arg, init)
     }
 }
 
-#ifdef SPEW_DEBUG    
+#ifdef SPEW_DEBUG
 /* debug_yychar takes a yychar (token number) value and prints its name.  */
 
 static void
@@ -1469,7 +1470,7 @@ debug_yychar (yy)
 {
   if (yy<256)
     fprintf (stderr, "->%d < %c >\n", lineno, yy);
-  else if (yy == IDENTIFIER || yy == TYPENAME)
+  else if (yy == IDENTIFIER || yy == tTYPENAME)
     {
       const char *id;
       if (TREE_CODE (yylval.ttype) == IDENTIFIER_NODE)
index 22a26dd..3ff92d3 100644 (file)
@@ -73,6 +73,7 @@ typedef_struct: ENT_TYPEDEF_STRUCT options '{' struct_fields '}' ID
                     lexer_toplevel_done = 1;
                   }
                 ';'
+                  {}
                | ENT_STRUCT options '{' struct_fields '}'
                   {
                     new_structure ($1->u.s.tag, UNION_P ($1), &lexer_line,
@@ -80,6 +81,7 @@ typedef_struct: ENT_TYPEDEF_STRUCT options '{' struct_fields '}' ID
                     lexer_toplevel_done = 1;
                   }
                 ';'
+                  {}
                ;
 
 externstatic: ENT_EXTERNSTATIC options lasttype ID semiequal