OSDN Git Service

* builtins.c, c-common.c, c-decl.c, c-format.c, c-format.h,
[pf3gnuchains/gcc-fork.git] / gcc / c-parse.in
index 289e7c1..86880ac 100644 (file)
@@ -148,7 +148,6 @@ do {                                                                        \
 %token BREAK CONTINUE RETURN GOTO ASM_KEYWORD TYPEOF ALIGNOF
 %token ATTRIBUTE EXTENSION LABEL
 %token REALPART IMAGPART VA_ARG CHOOSE_EXPR TYPES_COMPATIBLE_P
-%token PTR_VALUE PTR_BASE PTR_EXTENT
 %token FUNC_NAME OFFSETOF
 
 /* Add precedence rules to solve dangling else s/r conflict */
@@ -179,7 +178,7 @@ do {                                                                        \
    Objective C, so that the token codes are the same in both.  */
 %token AT_INTERFACE AT_IMPLEMENTATION AT_END AT_SELECTOR AT_DEFS AT_ENCODE
 %token CLASSNAME AT_PUBLIC AT_PRIVATE AT_PROTECTED AT_PROTOCOL
-%token OBJECTNAME AT_CLASS AT_ALIAS
+%token AT_CLASS AT_ALIAS
 %token AT_THROW AT_TRY AT_CATCH AT_FINALLY AT_SYNCHRONIZED
 %token OBJC_STRING
 
@@ -260,7 +259,7 @@ do {                                                                        \
 %type <ttype> selectorarg keywordnamelist keywordname objcencodeexpr
 %type <ttype> non_empty_protocolrefs protocolrefs identifier_list objcprotocolexpr
 
-%type <ttype> CLASSNAME OBJECTNAME OBJC_STRING OBJC_TYPE_QUAL
+%type <ttype> CLASSNAME OBJC_STRING OBJC_TYPE_QUAL
 
 %type <ttype> superclass objc_quals objc_qual objc_typename
 %type <itype> objc_try_catch_stmt optellipsis
@@ -408,11 +407,7 @@ save_obstack_position:
 
 datadef:
          setspecs notype_initdecls ';'
-               { if (pedantic)
-                   error ("ISO C forbids data definition with no type or storage class");
-                 else
-                   warning ("data definition has no type or storage class");
-
+               { pedwarn ("data definition has no type or storage class");
                  POP_DECLSPEC_STACK; }
         | declspecs_nots setspecs notype_initdecls ';'
                { POP_DECLSPEC_STACK; }
@@ -473,7 +468,6 @@ identifier:
        IDENTIFIER
        | TYPENAME
 @@ifobjc
-       | OBJECTNAME
        | CLASSNAME
 @@end_ifobjc
        ;
@@ -739,7 +733,7 @@ primary:
                   c = fold ($3.value);
                   STRIP_NOPS (c);
                   if (TREE_CODE (c) != INTEGER_CST)
-                    error ("first argument to __builtin_choose_expr not"
+                    error ("first argument to %<__builtin_choose_expr%> not"
                           " a constant");
                   $$ = integer_zerop (c) ? $7 : $5;
                }
@@ -1282,7 +1276,7 @@ typespec_nonreserved_nonattr:
        | CLASSNAME protocolrefs
                { $$.kind = ctsk_objc;
                  $$.spec = objc_get_protocol_qualified_type ($1, $2); }
-       | OBJECTNAME protocolrefs
+       | TYPENAME non_empty_protocolrefs
                { $$.kind = ctsk_objc;
                  $$.spec = objc_get_protocol_qualified_type ($1, $2); }
 
@@ -1446,7 +1440,7 @@ initelt:
          designator_list '=' initval
                { if (pedantic && !flag_isoc99)
                    pedwarn ("ISO C90 forbids specifying subobject to initialize"); }
-       | designator initval
+       | array_designator initval
                { if (pedantic)
                    pedwarn ("obsolete use of designated initializer without %<=%>"); }
        | identifier ':'
@@ -1476,7 +1470,11 @@ designator_list:
 designator:
          '.' identifier
                { set_init_label ($2); }
-       | '[' expr_no_commas ELLIPSIS expr_no_commas ']'
+       | array_designator
+       ;
+
+array_designator:
+         '[' expr_no_commas ELLIPSIS expr_no_commas ']'
                { set_init_index ($2.value, $4.value);
                  if (pedantic)
                    pedwarn ("ISO C forbids specifying range of elements to initialize"); }
@@ -1565,10 +1563,6 @@ after_type_declarator:
                { $$ = make_pointer_declarator ($2, $3); }
        | TYPENAME
                { $$ = build_id_declarator ($1); }
-@@ifobjc
-       | OBJECTNAME
-               { $$ = build_id_declarator ($1); }
-@@end_ifobjc
        ;
 
 /* Kinds of declarator that can appear in a parameter list
@@ -1587,10 +1581,6 @@ parm_declarator_starttypename:
                { $$ = set_array_declarator_inner ($2, $1, false); }
        | TYPENAME
                { $$ = build_id_declarator ($1); }
-@@ifobjc
-       | OBJECTNAME
-               { $$ = build_id_declarator ($1); }
-@@end_ifobjc
        ;
 
 parm_declarator_nostarttypename:
@@ -2882,7 +2872,6 @@ selector:
          IDENTIFIER
        | TYPENAME
        | CLASSNAME
-       | OBJECTNAME
        | reservedwords
        ;
 
@@ -2890,7 +2879,7 @@ reservedwords:
          ENUM | STRUCT | UNION | IF | ELSE | WHILE | DO | FOR
        | SWITCH | CASE | DEFAULT | BREAK | CONTINUE | RETURN
        | GOTO | ASM_KEYWORD | SIZEOF | TYPEOF | ALIGNOF
-       | TYPESPEC | TYPE_QUAL
+       | TYPESPEC | TYPE_QUAL | OBJC_TYPE_QUAL
        ;
 
 objc_qual:
@@ -3093,12 +3082,6 @@ static const struct resword reswords[] =
   { "__inline",                RID_INLINE,     0 },
   { "__inline__",      RID_INLINE,     0 },
   { "__label__",       RID_LABEL,      0 },
-  { "__ptrbase",       RID_PTRBASE,    0 },
-  { "__ptrbase__",     RID_PTRBASE,    0 },
-  { "__ptrextent",     RID_PTREXTENT,  0 },
-  { "__ptrextent__",   RID_PTREXTENT,  0 },
-  { "__ptrvalue",      RID_PTRVALUE,   0 },
-  { "__ptrvalue__",    RID_PTRVALUE,   0 },
   { "__real",          RID_REALPART,   0 },
   { "__real__",                RID_REALPART,   0 },
   { "__restrict",      RID_RESTRICT,   0 },
@@ -3148,7 +3131,6 @@ static const struct resword reswords[] =
   { "while",           RID_WHILE,      0 },
 
 @@ifobjc
-  { "id",              RID_ID,                 D_OBJC },
 
   /* These objc keywords are recognized only immediately after
      an '@'.  */
@@ -3252,9 +3234,6 @@ static const short rid_to_yy[RID_MAX] =
   /* RID_IMAGPART */   IMAGPART,
   /* RID_REALPART */   REALPART,
   /* RID_LABEL */      LABEL,
-  /* RID_PTRBASE */    PTR_BASE,
-  /* RID_PTREXTENT */  PTR_EXTENT,
-  /* RID_PTRVALUE */   PTR_VALUE,
 
   /* RID_CHOOSE_EXPR */                        CHOOSE_EXPR,
   /* RID_TYPES_COMPATIBLE_P */         TYPES_COMPATIBLE_P,
@@ -3294,7 +3273,6 @@ static const short rid_to_yy[RID_MAX] =
   /* RID_STATCAST */   0,
 
   /* Objective C */
-  /* RID_ID */                 OBJECTNAME,
   /* RID_AT_ENCODE */          AT_ENCODE,
   /* RID_AT_END */             AT_END,
   /* RID_AT_CLASS */           AT_CLASS,
@@ -3363,15 +3341,6 @@ yylexname (void)
       enum rid rid_code = C_RID_CODE (yylval.ttype);
 
 @@ifobjc
-      /* Turn non-typedefed refs to "id" into plain identifiers; this
-        allows constructs like "void foo(id id);" to work.  */
-      if (rid_code == RID_ID)
-      {
-       decl = lookup_name (yylval.ttype);
-       if (decl == NULL_TREE || TREE_CODE (decl) != TYPE_DECL)
-         return IDENTIFIER;
-      }
-
       if (!OBJC_IS_AT_KEYWORD (rid_code)
          && (!OBJC_IS_PQ_KEYWORD (rid_code) || objc_pq_context))
 @@end_ifobjc
@@ -3534,7 +3503,6 @@ yyprint (FILE *file, int yychar, YYSTYPE yyl)
     {
     case IDENTIFIER:
     case TYPENAME:
-    case OBJECTNAME:
     case TYPESPEC:
     case TYPE_QUAL:
     case SCSPEC: