diff options
author | Tom Tromey <tromey@cygnus.com> | 1999-01-08 11:54:27 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-01-08 11:54:27 +0000 |
commit | 5c280133c9545b5828b1d2fcb805746506efe249 (patch) | |
tree | b102e530e3dffebe955b98f5608c73da83507661 /gcc/java/parse-scan.y | |
parent | 9de843ca79e321b77f66484a3e4792aaae219d0c (diff) | |
download | gcc-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.y | 35 |
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: |