From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Petit-Bianco To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org Subject: Re: java/2412: jv-scan reports parse error Date: Fri, 30 Mar 2001 14:56:00 -0000 Message-id: <20010330225600.31876.qmail@sourceware.cygnus.com> X-SW-Source: 2001-03/msg00370.html List-Id: The following reply was made to PR java/2412; it has been noted by GNATS. From: Alexandre Petit-Bianco To: Mika.Riekkinen@tellabs.com Cc: gcc-gnats@gcc.gnu.org Subject: Re: java/2412: jv-scan reports parse error Date: Fri, 30 Mar 2001 14:46:06 -0800 (PST) Mika.Riekkinen@tellabs.com writes: > jv-scan reports parse error on the following code. Thanks. Here's a patch that fixes the problem. I also wrote a patch to take care of the other jv-scan related parse errors reported by `make check.' I intend to check this in pretty soon, in the branch and in the trunk. ./A 2001-03-30 Alexandre Petit-Bianco * parse-scan.y (array_type:): Rewritten. (type_declaration:): `empty_statement' replaces `SC_TK.' (class_member_declaration:): `empty statement' added. (method_body:): Simplified. (static_initializer:): Likewise. (primary_no_new_array:): Use `type_literals.' (type_literals:): New rule. (dims:): Set and update `bracket_count.' Fixes PR java/2412. Index: parse-scan.y =================================================================== RCS file: /cvs/gcc/gcc/gcc/java/parse-scan.y,v retrieving revision 1.20 diff -u -p -r1.20 parse-scan.y --- parse-scan.y 2000/11/20 22:56:14 1.20 +++ parse-scan.y 2001/03/30 21:56:13 @@ -242,14 +243,15 @@ interface_type: ; array_type: - primitive_type OSB_TK CSB_TK -| name OSB_TK CSB_TK + primitive_type dims { - $$ = concat ("[", $1, NULL); + while (bracket_count-- > 0) + $$ = concat ("[", $1, NULL); } -| array_type OSB_TK CSB_TK - { - $$ = concat ("[", $1, NULL); +| name dims + { + while (bracket_count-- > 0) + $$ = concat ("[", $1, NULL); } ; @@ -316,7 +318,7 @@ type_import_on_demand_declaration: type_declaration: class_declaration | interface_declaration -| SC_TK +| empty_statement ; /* 19.7 Shortened from the original: @@ -393,6 +395,7 @@ class_member_declaration: | method_declaration | class_declaration /* Added, JDK1.1 inner classes */ | interface_declaration /* Added, JDK1.1 inner classes */ +| empty_statement ; /* 19.8.2 Productions from 8.3: Field Declarations */ @@ -513,14 +516,12 @@ class_type_list: method_body: block -| block SC_TK | SC_TK ; /* 19.8.4 Productions from 8.5: Static Initializers */ static_initializer: static block -| static block SC_TK /* Shouldn't be here. FIXME */ ; static: /* Test lval.sub_token here */ @@ -892,14 +893,7 @@ primary_no_new_array: | field_access | method_invocation | array_access - /* type DOT_TK CLASS_TK doens't work. So we split the rule - 'type' into its components. Missing is something for array, - which will complete the reference_type part. FIXME */ -| name DOT_TK CLASS_TK /* Added, JDK1.1 class literals */ - { USE_ABSORBER; } -| primitive_type DOT_TK CLASS_TK /* Added, JDK1.1 class literals */ - { USE_ABSORBER; } -| VOID_TK DOT_TK CLASS_TK /* Added, JDK1.1 class literals */ +| type_literals /* Added, JDK1.1 inner classes. Documentation is wrong refering to a 'ClassName' (class_name) rule that doesn't exist. Used name instead. */ @@ -907,6 +901,17 @@ primary_no_new_array: { USE_ABSORBER; } ; +type_literals: + name DOT_TK CLASS_TK + { USE_ABSORBER; } +| array_type DOT_TK CLASS_TK + { USE_ABSORBER; } +| primitive_type DOT_TK CLASS_TK + { USE_ABSORBER; } +| VOID_TK DOT_TK CLASS_TK + { USE_ABSORBER; } +; + class_instance_creation_expression: NEW_TK class_type OP_TK argument_list CP_TK | NEW_TK class_type OP_TK CP_TK @@ -960,7 +965,9 @@ dim_expr: dims: OSB_TK CSB_TK + { bracket_count = 1; } | dims OSB_TK CSB_TK + { bracket_count++; } ; field_access: