aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse-scan.y
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>1999-01-08 11:54:27 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-01-08 11:54:27 +0000
commit5c280133c9545b5828b1d2fcb805746506efe249 (patch)
treeb102e530e3dffebe955b98f5608c73da83507661 /gcc/java/parse-scan.y
parent9de843ca79e321b77f66484a3e4792aaae219d0c (diff)
downloadgcc-5c280133c9545b5828b1d2fcb805746506efe249.zip
gcc-5c280133c9545b5828b1d2fcb805746506efe249.tar.gz
gcc-5c280133c9545b5828b1d2fcb805746506efe249.tar.bz2
parse-scan.y (variable_declarator_id): Set or increment bracket_count.
* parse-scan.y (variable_declarator_id): Set or increment bracket_count. (bracket_count): New global. (formal_parameter): Handle case where bracket pairs trail variable declarator id. From-SVN: r24573
Diffstat (limited to 'gcc/java/parse-scan.y')
-rw-r--r--gcc/java/parse-scan.y35
1 files changed, 31 insertions, 4 deletions
diff --git a/gcc/java/parse-scan.y b/gcc/java/parse-scan.y
index 0223934..25f87c8 100644
--- a/gcc/java/parse-scan.y
+++ b/gcc/java/parse-scan.y
@@ -1,5 +1,5 @@
/* Parser grammar for quick source code scan of Java(TM) language programs.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999 Free Software Foundation, Inc.
Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
This file is part of GNU CC.
@@ -71,6 +71,10 @@ static int previous_output;
/* Record modifier uses */
static int modifier_value;
+/* Keep track of number of bracket pairs after a variable declarator
+ id. */
+static int bracket_count;
+
/* Record a method declaration */
struct method_declarator {
char *method_name;
@@ -399,8 +403,9 @@ variable_declarator:
variable_declarator_id:
identifier
- { USE_ABSORBER; }
+ { bracket_count = 0; USE_ABSORBER; }
| variable_declarator_id OSB_TK CSB_TK
+ { ++bracket_count; }
;
variable_initializer:
@@ -456,10 +461,32 @@ formal_parameter:
type variable_declarator_id
{
USE_ABSORBER;
- $$ = $1;
+ if (bracket_count)
+ {
+ int i;
+ char *n = xmalloc (bracket_count + 1 + strlen ($$));
+ for (i = 0; i < bracket_count; ++i)
+ n[i] = '[';
+ strcpy (n + bracket_count, $$);
+ $$ = n;
+ }
+ else
+ $$ = $1;
}
| modifiers type variable_declarator_id /* Added, JDK1.1 final locals */
- { $$ = $2; }
+ {
+ if (bracket_count)
+ {
+ int i;
+ char *n = xmalloc (bracket_count + 1 + strlen ($$));
+ for (i = 0; i < bracket_count; ++i)
+ n[i] = '[';
+ strcpy (n + bracket_count, $$);
+ $$ = n;
+ }
+ else
+ $$ = $2;
+ }
;
throws: