support declaration of local multi-dimensional array variables
authorJuerg Billeter <j@bitron.ch>
Sat, 8 Mar 2008 15:50:40 +0000 (15:50 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 8 Mar 2008 15:50:40 +0000 (15:50 +0000)
2008-03-08  Juerg Billeter  <j@bitron.ch>

* vala/parser.y, vala/scanner.l: support declaration of local
  multi-dimensional array variables

svn path=/trunk/; revision=1108

ChangeLog
vala/parser.y
vala/scanner.l

index bfeac0a..19712a9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2008-03-08  Jürg Billeter  <j@bitron.ch>
 
+       * vala/parser.y, vala/scanner.l: support declaration of local
+         multi-dimensional array variables
+
+2008-03-08  Jürg Billeter  <j@bitron.ch>
+
        * vapigen/valagidlparser.vala: improve instance delegate detection
 
        * vapi/atk.vapi, vapi/gdk-2.0.vapi, vapi/gdk-pixbuf-2.0.vapi,
index dd7ff7b..36d8c18 100644 (file)
@@ -106,6 +106,7 @@ static gboolean check_is_struct (ValaSymbol *symbol, ValaSourceReference *src);
 %token OPEN_CAST_PARENS "cast ("
 %token CLOSE_PARENS ")"
 %token BRACKET_PAIR "[]"
+%token OPEN_ARRAY_TYPE_BRACKET "array ["
 %token OPEN_BRACKET "["
 %token CLOSE_BRACKET "]"
 %token ELLIPSIS "..."
@@ -768,9 +769,9 @@ opt_bracket_pair
        ;
 
 bracket_pair
-       : BRACKET_PAIR
+       : OPEN_ARRAY_TYPE_BRACKET opt_comma_list CLOSE_BRACKET
          {
-               $$ = 1;
+               $$ = $2;
          }
        ;
 
index 4565e0a..5d04ecd 100644 (file)
@@ -81,7 +81,7 @@ generic_type                  {type_name}("<"{space}{type_name}("?"|"*"+)?(","{space}{type_name
 "("({space}"weak")?{space}{ident}("."{ident})?("<"({ident}".")?{ident}(","({ident}".")?{ident})*">")?("["{space}"]")*{space}")"{space}("("|{ident}|{literal})  { yyless (1); uploc; return OPEN_CAST_PARENS; }
 "("            { uploc; return OPEN_PARENS; }
 ")"            { uploc; return CLOSE_PARENS; }
-"[]"           { uploc; return BRACKET_PAIR; }
+"["{space}(","{space})*"]"     { yyless (1); uploc; return OPEN_ARRAY_TYPE_BRACKET; }
 "["            { uploc; return OPEN_BRACKET; }
 "]"            { uploc; return CLOSE_BRACKET; }
 "..."          { uploc; return ELLIPSIS; }