Index: trunk/lib/Text/FormBuilder/grammar
===================================================================
--- trunk/lib/Text/FormBuilder/grammar	(revision 64)
+++ trunk/lib/Text/FormBuilder/grammar	(revision 66)
@@ -1,3 +1,4 @@
-{ 
+{
+    #$::RD_TRACE = 1;
     my (
 	$context,      # line or group
@@ -56,5 +57,5 @@
     { $lists{$item{var_name}} = [ @options ]; @options = () }
 
-static_list: '{' option(s /,\s*/) /,?/ '}'
+static_list: '{' /\s*/ option(s /\s*,\s*/) /,?/ /\s*/ '}'
 
 dynamic_list: '&' <perl_codeblock>
@@ -160,12 +161,13 @@
 
 # this is the real heart of the thing
-field: name field_size(?) growable(?) label(?) hint(?) type(?) default(?) option_list(?) validate(?)
+field: name field_size(?) growable(?) label(?) hint(?) type(?) other(?) default(?) option_list(?) validate(?) comment(?)
     {
 	my $field = {
 	    name     => $item{name},
-	    growable => ($item{'growable(?)'}[0] ? 1 : 0),
+	    growable => $item{'growable(?)'}[0],
 	    label    => $item{'label(?)'}[0],
 	    comment  => $item{'hint(?)'}[0],
 	    type     => $item{'type(?)'}[0],
+	    other    => $item{'other(?)'}[0],
 	    value    => $item{'default(?)'}[0],
 	    list     => $list_var,
@@ -214,5 +216,7 @@
     { $rows = $item[1]; $cols = $item[3] }
 
-growable: '*'
+growable: '*' limit(?) { $item{'limit(?)'}[0] || 1 }
+
+limit: /\d+/
 
 label: '|' (simple_multiword | quoted_string) { $item[2] }
@@ -224,9 +228,10 @@
 builtin_field: /textarea|text|password|file|checkbox|radio|select|hidden|static/
 
+other: '+' 'other' { 1 }
 
 default: '=' (simple_multiword | quoted_string) { $item[2] }
 
 # for simple multiword values not involving punctuation
-simple_multiword: <skip:''> /[\w\t ]+/ { $item[2] }
+simple_multiword: <skip:''> /\w[\w\t ]+/ { $item[2] }
 
 # my attempt at a single-quoted, non-interpolating string
@@ -237,9 +242,9 @@
 option_list: options | list_var
     
-options: '{' option(s /,\s*/) '}'
+options: '{' option(s /,/) '}'
 
 list_var: /@[A-Z_]+/ { $list_var = $item[1] }
 
-option: (simple_multiword | value | quoted_string) display_text(?)
+option: (simple_multiword | quoted_string) display_text(?)
     { push @options, { $item[1] => $item{'display_text(?)'}[0] } }
 
