[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, master, updated. debian/0.24.6-1-356-g5718585

James Turnbull james at lovedthanlost.net
Fri Jan 23 14:20:58 UTC 2009


The following commit has been merged in the master branch:
commit 16793d221f95b2430260c38cd7c36bb8a5ef8d49
Author: Brice Figureau <brice-puppet at daysofwonder.com>
Date:   Sun Sep 14 15:49:34 2008 +0200

    Add an append (+=) variable operator:
    
    The append variable operator can be used to append something to
    a variable defined in a parent scope, containing either a string
    or an array.
    
    The main use is to append array elements in classes to a variable
    globally defined in a node.
    
    Example:
    $ssh_users = ['brice', 'admin1']
    
    class backup {
     $ssh_users += ['backup_operator']
     ...
    }
    
    Signed-off-by: Brice Figureau <brice-puppet at daysofwonder.com>

diff --git a/lib/puppet/parser/ast/vardef.rb b/lib/puppet/parser/ast/vardef.rb
index ee79159..a3094ac 100644
--- a/lib/puppet/parser/ast/vardef.rb
+++ b/lib/puppet/parser/ast/vardef.rb
@@ -3,7 +3,7 @@ require 'puppet/parser/ast/branch'
 class Puppet::Parser::AST
     # Define a variable.  Stores the value in the current scope.
     class VarDef < AST::Branch
-        attr_accessor :name, :value
+        attr_accessor :name, :value, :append
 
         @settor = true
 
@@ -14,7 +14,7 @@ class Puppet::Parser::AST
             value = @value.safeevaluate(scope)
 
             parsewrap do
-                scope.setvar(name,value, @file, @line)
+                scope.setvar(name,value, @file, @line, @append)
             end
         end
 
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index a2f6729..07666ac 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -5,7 +5,7 @@
 class Puppet::Parser::Parser
 
 token LBRACK DQTEXT SQTEXT RBRACK LBRACE RBRACE SYMBOL FARROW COMMA TRUE
-token FALSE EQUALS LESSEQUAL NOTEQUAL DOT COLON LLCOLLECT RRCOLLECT
+token FALSE EQUALS APPENDS LESSEQUAL NOTEQUAL DOT COLON LLCOLLECT RRCOLLECT
 token QMARK LPAREN RPAREN ISEQUAL GREATEREQUAL GREATERTHAN LESSTHAN
 token IF ELSE IMPORT DEFINE ELSIF VARIABLE CLASS INHERITS NODE BOOLEAN
 token NAME SEMIC CASE DEFAULT AT LCOLLECT RCOLLECT CLASSNAME CLASSREF
@@ -58,6 +58,7 @@ statement:    resource
             | hostclass
             | nodedef
             | resourceoverride
+            | append
 
 fstatement:   NAME LPAREN funcvalues RPAREN {
     args = aryfy(val[2])
@@ -291,6 +292,11 @@ assignment:     VARIABLE EQUALS rvalue {
     result = ast AST::VarDef, :name => variable, :value => val[2]
 }
 
+append:     VARIABLE APPENDS rvalue {
+    variable = ast AST::Name, :value => val[0]
+    result = ast AST::VarDef, :name => variable, :value => val[2], :append => true
+}
+
 params:   # nothing
 {
     result = ast AST::ASTArray
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb
index 2c5f66e..71210d9 100644
--- a/lib/puppet/parser/lexer.rb
+++ b/lib/puppet/parser/lexer.rb
@@ -105,6 +105,7 @@ class Puppet::Parser::Lexer
         '(' => :LPAREN,
         ')' => :RPAREN,
         '=' => :EQUALS,
+        '+=' => :APPENDS,
         '==' => :ISEQUAL,
         '>=' => :GREATEREQUAL,
         '>' => :GREATERTHAN,
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index 3d7f21d..69225cc 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -29,7 +29,7 @@ module Puppet
 
     class Parser < Racc::Parser
 
-module_eval <<'..end grammar.ra modeval..id9145566289', 'grammar.ra', 638
+module_eval <<'..end grammar.ra modeval..id7dbe8301d1', 'grammar.ra', 644
 
 # It got too annoying having code in a file that needs to be compiled.
 require 'puppet/parser/parser_support'
@@ -41,517 +41,525 @@ require 'puppet/parser/parser_support'
 
 # $Id$
 
-..end grammar.ra modeval..id9145566289
+..end grammar.ra modeval..id7dbe8301d1
 
 ##### racc 1.4.5 generates ###
 
 racc_reduce_table = [
  0, 0, :racc_error,
- 1, 52, :_reduce_1,
- 1, 52, :_reduce_none,
+ 1, 53, :_reduce_1,
  1, 53, :_reduce_none,
- 2, 53, :_reduce_4,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 1, 55, :_reduce_none,
- 4, 63, :_reduce_17,
- 3, 63, :_reduce_18,
- 2, 63, :_reduce_19,
- 1, 68, :_reduce_none,
- 1, 68, :_reduce_none,
- 1, 69, :_reduce_none,
- 3, 69, :_reduce_23,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_none,
- 1, 71, :_reduce_31,
+ 1, 54, :_reduce_none,
+ 2, 54, :_reduce_4,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 1, 56, :_reduce_none,
+ 4, 64, :_reduce_18,
+ 3, 64, :_reduce_19,
+ 2, 64, :_reduce_20,
  1, 70, :_reduce_none,
- 3, 70, :_reduce_33,
- 5, 56, :_reduce_34,
- 5, 56, :_reduce_35,
- 5, 56, :_reduce_36,
- 5, 67, :_reduce_37,
- 2, 57, :_reduce_38,
- 1, 87, :_reduce_39,
- 2, 87, :_reduce_40,
- 2, 58, :_reduce_41,
- 3, 88, :_reduce_42,
- 3, 88, :_reduce_43,
- 1, 89, :_reduce_none,
- 1, 89, :_reduce_none,
- 3, 89, :_reduce_46,
- 1, 90, :_reduce_none,
- 3, 90, :_reduce_48,
+ 1, 70, :_reduce_none,
+ 1, 71, :_reduce_none,
+ 3, 71, :_reduce_24,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_32,
+ 1, 72, :_reduce_none,
+ 3, 72, :_reduce_34,
+ 5, 57, :_reduce_35,
+ 5, 57, :_reduce_36,
+ 5, 57, :_reduce_37,
+ 5, 68, :_reduce_38,
+ 2, 58, :_reduce_39,
+ 1, 89, :_reduce_40,
+ 2, 89, :_reduce_41,
+ 2, 59, :_reduce_42,
+ 3, 90, :_reduce_43,
+ 3, 90, :_reduce_44,
  1, 91, :_reduce_none,
  1, 91, :_reduce_none,
- 3, 92, :_reduce_51,
- 3, 92, :_reduce_52,
+ 3, 91, :_reduce_47,
+ 1, 92, :_reduce_none,
+ 3, 92, :_reduce_49,
  1, 93, :_reduce_none,
  1, 93, :_reduce_none,
- 4, 95, :_reduce_55,
- 1, 81, :_reduce_none,
- 3, 81, :_reduce_57,
- 0, 82, :_reduce_none,
- 1, 82, :_reduce_none,
- 1, 97, :_reduce_60,
- 1, 72, :_reduce_61,
+ 3, 94, :_reduce_52,
+ 3, 94, :_reduce_53,
+ 1, 95, :_reduce_none,
+ 1, 95, :_reduce_none,
+ 4, 97, :_reduce_56,
+ 1, 83, :_reduce_none,
+ 3, 83, :_reduce_58,
+ 0, 84, :_reduce_none,
+ 1, 84, :_reduce_none,
+ 1, 99, :_reduce_61,
  1, 74, :_reduce_62,
+ 1, 76, :_reduce_63,
+ 1, 98, :_reduce_none,
+ 1, 98, :_reduce_none,
+ 1, 98, :_reduce_none,
+ 1, 98, :_reduce_none,
+ 1, 98, :_reduce_none,
+ 1, 98, :_reduce_none,
+ 3, 60, :_reduce_70,
+ 3, 69, :_reduce_71,
+ 0, 85, :_reduce_72,
+ 1, 85, :_reduce_73,
+ 3, 85, :_reduce_74,
+ 3, 102, :_reduce_75,
+ 3, 103, :_reduce_76,
+ 1, 104, :_reduce_none,
+ 1, 104, :_reduce_none,
+ 0, 88, :_reduce_79,
+ 1, 88, :_reduce_80,
+ 3, 88, :_reduce_81,
+ 1, 105, :_reduce_none,
+ 3, 105, :_reduce_83,
  1, 96, :_reduce_none,
  1, 96, :_reduce_none,
  1, 96, :_reduce_none,
  1, 96, :_reduce_none,
  1, 96, :_reduce_none,
  1, 96, :_reduce_none,
- 3, 59, :_reduce_69,
- 0, 83, :_reduce_70,
- 1, 83, :_reduce_71,
- 3, 83, :_reduce_72,
- 3, 100, :_reduce_73,
- 3, 101, :_reduce_74,
- 1, 102, :_reduce_none,
- 1, 102, :_reduce_none,
- 0, 86, :_reduce_77,
- 1, 86, :_reduce_78,
- 3, 86, :_reduce_79,
- 1, 103, :_reduce_none,
- 3, 103, :_reduce_81,
- 1, 94, :_reduce_none,
- 1, 94, :_reduce_none,
- 1, 94, :_reduce_none,
- 1, 94, :_reduce_none,
- 1, 94, :_reduce_none,
- 1, 94, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 1, 99, :_reduce_none,
- 4, 76, :_reduce_98,
- 3, 76, :_reduce_99,
- 1, 78, :_reduce_100,
- 1, 78, :_reduce_101,
- 1, 75, :_reduce_102,
- 4, 79, :_reduce_103,
- 4, 79, :_reduce_104,
- 6, 61, :_reduce_105,
- 0, 106, :_reduce_none,
- 4, 106, :_reduce_107,
- 1, 105, :_reduce_none,
- 5, 60, :_reduce_109,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 1, 101, :_reduce_none,
+ 4, 78, :_reduce_100,
+ 3, 78, :_reduce_101,
+ 1, 80, :_reduce_102,
+ 1, 80, :_reduce_103,
+ 1, 77, :_reduce_104,
+ 4, 81, :_reduce_105,
+ 4, 81, :_reduce_106,
+ 6, 62, :_reduce_107,
+ 0, 108, :_reduce_none,
+ 4, 108, :_reduce_109,
  1, 107, :_reduce_none,
- 2, 107, :_reduce_111,
- 5, 108, :_reduce_112,
- 4, 108, :_reduce_113,
+ 5, 61, :_reduce_111,
  1, 109, :_reduce_none,
- 3, 109, :_reduce_115,
- 3, 77, :_reduce_116,
+ 2, 109, :_reduce_113,
+ 5, 110, :_reduce_114,
+ 4, 110, :_reduce_115,
  1, 111, :_reduce_none,
- 4, 111, :_reduce_118,
+ 3, 111, :_reduce_117,
+ 3, 79, :_reduce_118,
  1, 113, :_reduce_none,
- 3, 113, :_reduce_120,
- 3, 112, :_reduce_121,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_129,
- 1, 114, :_reduce_130,
- 3, 114, :_reduce_131,
- 2, 62, :_reduce_132,
- 6, 64, :_reduce_133,
- 5, 64, :_reduce_134,
+ 4, 113, :_reduce_120,
+ 1, 115, :_reduce_none,
+ 3, 115, :_reduce_122,
+ 3, 114, :_reduce_123,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_131,
+ 1, 116, :_reduce_132,
+ 3, 116, :_reduce_133,
+ 2, 63, :_reduce_134,
  6, 65, :_reduce_135,
  5, 65, :_reduce_136,
  6, 66, :_reduce_137,
  5, 66, :_reduce_138,
- 1, 85, :_reduce_none,
- 1, 80, :_reduce_none,
- 1, 80, :_reduce_none,
- 1, 117, :_reduce_none,
- 3, 117, :_reduce_143,
- 1, 119, :_reduce_none,
- 1, 119, :_reduce_none,
- 1, 119, :_reduce_none,
+ 6, 67, :_reduce_139,
+ 5, 67, :_reduce_140,
+ 1, 87, :_reduce_none,
+ 1, 82, :_reduce_none,
+ 1, 82, :_reduce_none,
  1, 119, :_reduce_none,
- 0, 54, :_reduce_148,
- 0, 120, :_reduce_149,
- 1, 115, :_reduce_none,
- 3, 115, :_reduce_151,
- 3, 115, :_reduce_152,
+ 3, 119, :_reduce_145,
  1, 121, :_reduce_none,
- 3, 121, :_reduce_154,
- 3, 122, :_reduce_155,
- 1, 122, :_reduce_156,
- 3, 122, :_reduce_157,
- 1, 122, :_reduce_158,
- 1, 118, :_reduce_none,
- 2, 118, :_reduce_160,
- 1, 116, :_reduce_none,
- 2, 116, :_reduce_162,
- 1, 123, :_reduce_none,
+ 1, 121, :_reduce_none,
+ 1, 121, :_reduce_none,
+ 1, 121, :_reduce_none,
+ 0, 55, :_reduce_150,
+ 0, 122, :_reduce_151,
+ 1, 117, :_reduce_none,
+ 3, 117, :_reduce_153,
+ 3, 117, :_reduce_154,
  1, 123, :_reduce_none,
- 1, 73, :_reduce_165,
- 3, 98, :_reduce_166,
- 2, 98, :_reduce_167,
- 1, 104, :_reduce_none,
- 1, 104, :_reduce_none,
- 0, 84, :_reduce_none,
- 1, 84, :_reduce_171 ]
+ 3, 123, :_reduce_156,
+ 3, 124, :_reduce_157,
+ 1, 124, :_reduce_158,
+ 3, 124, :_reduce_159,
+ 1, 124, :_reduce_160,
+ 1, 120, :_reduce_none,
+ 2, 120, :_reduce_162,
+ 1, 118, :_reduce_none,
+ 2, 118, :_reduce_164,
+ 1, 125, :_reduce_none,
+ 1, 125, :_reduce_none,
+ 1, 75, :_reduce_167,
+ 3, 100, :_reduce_168,
+ 2, 100, :_reduce_169,
+ 1, 106, :_reduce_none,
+ 1, 106, :_reduce_none,
+ 0, 86, :_reduce_none,
+ 1, 86, :_reduce_173 ]
 
-racc_reduce_n = 172
+racc_reduce_n = 174
 
-racc_shift_n = 276
+racc_shift_n = 279
 
 racc_action_table = [
-    71,    51,    53,   184,   162,   102,    71,    51,    53,   132,
-   149,     5,   209,    47,  -127,    87,    71,    51,    53,    88,
-   208,    65,    71,    51,    53,   162,   144,    34,    35,    99,
-    65,    89,   126,  -127,    50,    54,    65,   126,    59,  -123,
-    50,    54,   207,    45,    59,   161,    65,    56,  -126,    45,
-    50,    54,    65,    56,    59,    90,    50,    54,   185,    45,
-    59,    36,   169,    56,    37,    45,    71,    51,    53,    56,
-   204,   206,    47,    51,    53,   200,   149,    51,    53,    33,
-   199,  -122,    71,    51,    53,   238,     1,    65,    71,    51,
-    53,    67,   144,    34,    35,    87,    65,   237,   234,  -123,
-    50,    54,    65,   200,    59,   233,    50,    54,   199,    45,
-    59,   252,    65,    56,    43,    45,    50,    54,    65,    56,
-    59,    33,    50,    54,   156,    45,    59,    36,     1,    56,
-    37,    45,    71,    51,    53,    56,   204,   206,    71,    51,
-    53,   149,   149,    34,    35,   188,   259,   196,    71,    51,
-    53,  -125,    65,    65,    71,    51,    53,   144,   144,    51,
-    53,   202,    65,   162,    33,   168,    50,    54,    65,   137,
-    59,     1,    50,    54,   168,    45,    59,    36,    65,    56,
-    37,    45,    50,   174,    65,    56,    59,  -122,    50,    54,
-   165,   111,    59,  -125,  -122,    56,   127,    45,    71,    51,
-    53,    56,    33,   211,    71,    51,    53,   204,   206,     1,
-     5,   135,   218,   186,    71,    51,    53,   188,   189,   106,
-   125,    51,    53,   221,   222,   231,   140,   140,    65,   225,
-   126,  -124,    50,    54,    65,   228,    59,    47,    50,    54,
-  -139,    45,    59,   123,    65,    56,   106,    45,    50,   112,
-    65,    56,    59,  -124,    50,   174,   134,   111,    59,    51,
-    53,    56,   164,   111,   239,    51,    53,    56,   240,   241,
-   242,  -124,    96,   140,  -126,    51,    53,    93,   179,   168,
-    91,    51,    53,   159,   181,   260,   262,    85,    65,   157,
-    88,   133,    50,   174,    65,    41,    59,  -124,    50,    54,
-   128,   111,    59,  -122,    65,    56,    43,    45,    50,   174,
-    65,    56,    59,  -125,    50,    54,  -123,   111,    59,    51,
-    53,    56,    43,    45,  -127,    51,    53,    56,   176,    40,
-   269,  -171,   270,  -128,  -123,    51,    53,   152,  -125,   nil,
-   nil,    51,    53,   nil,   nil,   nil,   nil,   nil,    65,   nil,
-   nil,   nil,    50,   174,    65,   nil,    59,   nil,    50,   174,
-    43,   111,    59,   nil,    65,    56,   nil,   111,    50,   174,
-    65,    56,    59,   254,    50,   174,   nil,   111,    59,    51,
-    53,    56,   nil,   111,   nil,    51,    53,    56,   nil,   nil,
-   nil,   nil,   nil,    15,   nil,    19,    21,   nil,    28,     2,
-   nil,     8,   nil,    13,   nil,    17,   nil,    22,    65,   nil,
-     1,     5,    50,   174,    65,   264,    59,   nil,    50,   174,
-   nil,   111,    59,   nil,   nil,    56,   nil,   111,   nil,   nil,
-   nil,    56,   nil,   nil,   271,    15,   nil,    19,    21,   nil,
-    28,     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,
-   nil,   nil,     1,     5,    15,   212,    19,    21,   nil,    28,
-     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,   nil,
-   nil,     1,     5,   nil,   230,    15,   nil,    19,    21,   nil,
-    28,     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,
-   nil,   nil,     1,     5,    15,   253,    19,    21,   nil,    28,
-     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,   nil,
-   nil,     1,     5,   nil,   214,    15,   nil,    19,    21,   nil,
-    28,     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,
-   nil,   nil,     1,     5,    15,   274,    19,    21,   nil,    28,
-     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,   nil,
-   nil,     1,     5,   nil,   235,    15,   nil,    19,    21,   nil,
-    28,     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,
-   nil,   nil,     1,     5,    15,   275,    19,    21,   nil,    28,
-     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,   nil,
-   nil,     1,     5,   nil,   nil,    15,   nil,    19,    21,   nil,
-    28,     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,
-   nil,   nil,     1,     5,    15,   nil,    19,    21,   nil,    28,
-     2,   nil,     8,   nil,    13,   nil,    17,   nil,    22,   nil,
-   nil,     1,     5,    15,   nil,    19,    21,   nil,    28,     2,
-   nil,     8,   nil,    13,   nil,    17,   nil,    22,   nil,   nil,
-     1,     5,    15,   nil,    19,    21,   nil,    28,     2,   nil,
-     8,   nil,    13,   nil,    17,   nil,    22,   nil,   nil,     1,
-     5,    15,   nil,    19,    21,   nil,    28,     2,   nil,     8,
-   nil,    13,   nil,    17,   nil,    22,   nil,   nil,     1,     5 ]
+    77,    57,    60,   246,   167,   105,    77,    57,    60,   101,
+   199,   235,  -124,   167,   241,   203,    77,    57,    60,   234,
+    54,    92,    77,    57,    60,    94,   131,   240,   208,   209,
+   104,    47,    77,    57,    60,    59,    63,    47,    95,    68,
+   131,    59,    63,   137,    55,    68,   166,    47,    65,   211,
+    55,    59,   178,    47,    65,    68,  -125,    59,    63,   173,
+   116,    68,    96,    47,    65,  -126,    55,    59,   119,  -128,
+    65,    68,    77,    57,    60,   147,   116,   208,   209,   147,
+    65,   213,    77,    57,    60,   147,    47,    40,    41,   212,
+    47,   151,    54,    57,    60,   151,    47,    35,    77,    57,
+    60,   151,   188,    47,     4,     9,   172,    59,    63,   199,
+     9,    68,    50,    47,   203,  -125,    55,    59,    63,   204,
+    65,    68,    42,    47,   205,    43,    55,    59,    63,    47,
+    65,    68,    35,    59,    63,    51,    55,    68,   167,     4,
+    65,   147,    55,    77,    57,    60,    65,    33,    34,    77,
+    57,    60,    47,   171,    40,    41,    35,   151,  -127,    77,
+    57,    60,  -129,     4,   214,    77,    57,    60,   208,   209,
+    40,    41,    57,    60,    47,    77,    57,    60,    59,    63,
+    47,   171,    68,  -124,    59,    63,  -130,    55,    68,    42,
+    47,    65,    43,    55,    59,    63,    47,    65,    68,  -125,
+    59,    63,   219,    55,    68,    42,    47,    65,    43,    55,
+    59,    63,   111,    65,    68,    77,    57,    60,    92,    55,
+   191,   262,  -127,    65,  -124,    77,    57,    60,   135,    57,
+    60,    35,    57,    60,   159,   189,   224,   225,     4,   191,
+   192,   145,    57,    60,   145,   228,    47,   131,    57,    60,
+    59,    63,   127,   133,    68,   231,    47,    54,   132,    55,
+    59,    63,    47,    65,    68,  -126,    59,    63,   168,    55,
+    68,  -141,    47,    65,    51,    55,    59,   178,    47,    65,
+    68,   238,    59,   178,   239,   116,    68,    57,    60,    65,
+  -126,   116,   242,    57,    60,    65,   129,   245,  -128,   138,
+  -129,   111,    94,    57,    60,  -127,   171,    91,   165,   263,
+   265,    90,   163,    57,    60,   139,   140,    47,    46,    57,
+    60,    59,   178,    47,  -129,    68,  -126,    59,   178,    51,
+   116,    68,  -124,    47,    65,  -127,   116,    59,   178,   184,
+    65,    68,  -125,    47,    57,    60,   116,    59,   178,    47,
+    65,    68,    45,    59,    63,   272,   116,    68,  -173,   273,
+    65,    51,    55,   160,    57,    60,    65,   179,   143,   145,
+   183,    57,    60,   nil,    47,   237,   nil,   nil,    59,   178,
+   nil,   nil,    68,   nil,   nil,   nil,   nil,   116,   nil,   nil,
+   nil,    65,   nil,   nil,    47,   nil,   278,   nil,    59,   178,
+   nil,    47,    68,   nil,   nil,    59,   178,   116,   nil,    68,
+   nil,    65,   nil,   nil,   116,   257,   nil,    20,    65,    24,
+    26,   nil,     1,     5,   nil,    12,   nil,    18,   nil,    22,
+   nil,    27,   nil,   nil,     4,     9,    20,   243,    24,    26,
+   nil,     1,     5,   nil,    12,   nil,    18,   nil,    22,   nil,
+    27,   nil,   nil,     4,     9,   nil,   270,   nil,    20,   nil,
+    24,    26,   nil,     1,     5,   nil,    12,   nil,    18,   nil,
+    22,   nil,    27,   nil,   nil,     4,     9,    20,   233,    24,
+    26,   nil,     1,     5,   nil,    12,   nil,    18,   nil,    22,
+   nil,    27,   nil,   nil,     4,     9,   nil,   277,   nil,    20,
+   nil,    24,    26,   nil,     1,     5,   nil,    12,   nil,    18,
+   nil,    22,   nil,    27,   nil,   nil,     4,     9,    20,   274,
+    24,    26,   nil,     1,     5,   nil,    12,   nil,    18,   nil,
+    22,   nil,    27,   nil,   nil,     4,     9,   nil,   217,   nil,
+    20,   nil,    24,    26,   nil,     1,     5,   nil,    12,   nil,
+    18,   nil,    22,   nil,    27,   nil,   nil,     4,     9,    20,
+   215,    24,    26,   nil,     1,     5,   nil,    12,   nil,    18,
+   nil,    22,   nil,    27,   nil,   nil,     4,     9,   nil,   256,
+   nil,    20,   nil,    24,    26,   nil,     1,     5,   nil,    12,
+   nil,    18,   nil,    22,   nil,    27,   nil,   nil,     4,     9,
+    20,   nil,    24,    26,   nil,     1,     5,   nil,    12,   nil,
+    18,   nil,    22,   nil,    27,   nil,   nil,     4,     9,    20,
+   nil,    24,    26,   nil,     1,     5,   nil,    12,   nil,    18,
+   nil,    22,   nil,    27,   nil,   nil,     4,     9,    20,   nil,
+    24,    26,   nil,     1,     5,   nil,    12,   nil,    18,   nil,
+    22,   nil,    27,   nil,   nil,     4,     9,    20,   nil,    24,
+    26,   nil,     1,     5,   nil,    12,   nil,    18,   nil,    22,
+   nil,    27,   nil,   nil,     4,     9,    20,   nil,    24,    26,
+   nil,     1,     5,   nil,    12,   nil,    18,   nil,    22,   nil,
+    27,   nil,   nil,     4,     9 ]
 
 racc_action_check = [
-    93,    93,    93,   127,   106,    38,    71,    71,    71,    71,
-    90,   127,   146,    54,    78,    23,    87,    87,    87,    23,
-   146,    90,   161,   161,   161,   112,    90,   102,   102,    38,
-    93,    23,    54,    64,    93,    93,    71,   112,    93,    62,
-    71,    71,   142,    93,    71,   106,    87,    93,    66,    71,
-    87,    87,   161,    71,    87,    23,   161,   161,   129,    87,
-   161,   102,   119,    87,   102,   161,   240,   240,   240,   161,
-   142,   142,    13,    13,    13,   238,   149,   135,   135,     2,
-   238,    74,    15,    15,    15,   197,     2,   149,    17,    17,
-    17,    13,   149,    99,    99,    61,   240,   197,   194,   118,
-   240,   240,    13,   137,   240,   194,    13,    13,   137,   240,
-    13,   210,    15,   240,    13,    13,    15,    15,    17,    13,
-    15,    96,    17,    17,    96,    15,    17,    99,    96,    15,
-    99,    17,   239,   239,   239,    17,   210,   210,   162,   162,
-   162,    89,   205,     8,     8,   227,   227,   136,   165,   165,
-   165,   116,    89,   205,    47,    47,    47,    89,   205,    19,
-    19,   139,   239,   140,    21,   141,   239,   239,   162,    84,
-   239,    21,   162,   162,   115,   239,   162,     8,   165,   239,
-     8,   162,   165,   165,    47,   162,   165,   114,    47,    47,
-   113,   165,    47,    60,    58,   165,    55,    47,   225,   225,
-   225,    47,    29,   151,   187,   187,   187,   151,   151,    29,
-    29,    83,   163,   131,    41,    41,    41,   131,   131,   164,
-    52,   192,   192,   166,   167,   192,   168,   169,   225,   170,
-   174,    46,   225,   225,   187,   182,   225,   184,   187,   187,
-    45,   225,   187,    42,    41,   225,    40,   187,    41,    41,
-   192,   187,    41,   110,   192,   192,    81,    41,   192,   208,
-   208,    41,   107,   192,   199,   126,   126,   192,   200,   201,
-   203,    70,    32,    88,    79,   209,   209,    28,   124,   224,
-    25,    67,    67,   100,   126,   230,   233,    22,   208,    97,
-    95,    73,   208,   208,   126,    11,   208,   245,   126,   126,
-    67,   208,   126,   246,   209,   208,   126,   126,   209,   209,
-    67,   126,   209,   248,    67,    67,   249,   209,    67,   125,
-   125,   209,    67,    67,   250,   123,   123,    67,   123,     9,
-   258,   259,   260,    77,    76,   176,   176,    91,    75,   nil,
-   nil,   134,   134,   nil,   nil,   nil,   nil,   nil,   125,   nil,
-   nil,   nil,   125,   125,   123,   nil,   125,   nil,   123,   123,
-   125,   125,   123,   nil,   176,   125,   nil,   123,   176,   176,
-   134,   123,   176,   215,   134,   134,   nil,   176,   134,   234,
-   234,   176,   nil,   134,   nil,   257,   257,   134,   nil,   nil,
-   nil,   nil,   nil,   215,   nil,   215,   215,   nil,   215,   215,
-   nil,   215,   nil,   215,   nil,   215,   nil,   215,   234,   nil,
-   215,   215,   234,   234,   257,   236,   234,   nil,   257,   257,
-   nil,   234,   257,   nil,   nil,   234,   nil,   257,   nil,   nil,
-   nil,   257,   nil,   nil,   262,   236,   nil,   236,   236,   nil,
-   236,   236,   nil,   236,   nil,   236,   nil,   236,   nil,   236,
-   nil,   nil,   236,   236,   262,   157,   262,   262,   nil,   262,
-   262,   nil,   262,   nil,   262,   nil,   262,   nil,   262,   nil,
-   nil,   262,   262,   nil,   190,   157,   nil,   157,   157,   nil,
-   157,   157,   nil,   157,   nil,   157,   nil,   157,   nil,   157,
-   nil,   nil,   157,   157,   190,   213,   190,   190,   nil,   190,
-   190,   nil,   190,   nil,   190,   nil,   190,   nil,   190,   nil,
-   nil,   190,   190,   nil,   159,   213,   nil,   213,   213,   nil,
-   213,   213,   nil,   213,   nil,   213,   nil,   213,   nil,   213,
-   nil,   nil,   213,   213,   159,   272,   159,   159,   nil,   159,
-   159,   nil,   159,   nil,   159,   nil,   159,   nil,   159,   nil,
-   nil,   159,   159,   nil,   196,   272,   nil,   272,   272,   nil,
-   272,   272,   nil,   272,   nil,   272,   nil,   272,   nil,   272,
-   nil,   nil,   272,   272,   196,   273,   196,   196,   nil,   196,
-   196,   nil,   196,   nil,   196,   nil,   196,   nil,   196,   nil,
-   nil,   196,   196,   nil,   nil,   273,   nil,   273,   273,   nil,
-   273,   273,   nil,   273,   nil,   273,   nil,   273,   nil,   273,
-   nil,   nil,   273,   273,   133,   nil,   133,   133,   nil,   133,
-   133,   nil,   133,   nil,   133,   nil,   133,   nil,   133,   nil,
-   nil,   133,   133,   270,   nil,   270,   270,   nil,   270,   270,
-   nil,   270,   nil,   270,   nil,   270,   nil,   270,   nil,   nil,
-   270,   270,    27,   nil,    27,    27,   nil,    27,    27,   nil,
-    27,   nil,    27,   nil,    27,   nil,    27,   nil,   nil,    27,
-    27,     0,   nil,     0,     0,   nil,     0,     0,   nil,     0,
-   nil,     0,   nil,     0,   nil,     0,   nil,   nil,     0,     0 ]
+   228,   228,   228,   207,   111,    44,    54,    54,    54,    36,
+   241,   195,    83,   119,   201,   241,   168,   168,   168,   195,
+    63,    30,    92,    92,    92,    30,   119,   201,   207,   207,
+    44,   228,    46,    46,    46,   228,   228,    54,    30,   228,
+    63,    54,    54,    82,   228,    54,   111,   168,   228,   149,
+    54,   168,   168,    92,    54,   168,    85,    92,    92,   128,
+   168,    92,    30,    46,   168,    80,    92,    46,    46,    75,
+    92,    46,   167,   167,   167,    95,    46,   149,   149,   147,
+    46,   153,   166,   166,   166,    96,    95,   105,   105,   153,
+   147,    95,    18,    18,    18,   147,    96,     6,    20,    20,
+    20,    96,   133,   167,     6,     6,   126,   167,   167,   140,
+   133,   167,    18,   166,   140,   125,   167,   166,   166,   142,
+   167,   166,   105,    18,   144,   105,   166,    18,    18,    20,
+   166,    18,     5,    20,    20,    18,    18,    20,   145,     5,
+    18,   210,    20,    22,    22,    22,    20,     1,     1,   242,
+   242,   242,   210,   146,    12,    12,    26,   210,   123,   238,
+   238,   238,    74,    26,   156,    34,    34,    34,   156,   156,
+   104,   104,   139,   139,    22,    33,    33,    33,    22,    22,
+   242,   122,    22,   121,   242,   242,    73,    22,   242,    12,
+   238,    22,    12,   242,   238,   238,    34,   242,   238,    72,
+    34,    34,   164,   238,    34,   104,    33,   238,   104,    34,
+    33,    33,   165,    34,    33,   190,   190,   190,    71,    33,
+   230,   230,    70,    33,    69,    77,    77,    77,    77,    24,
+    24,   101,    50,    50,   101,   136,   169,   170,   101,   136,
+   136,   171,   235,   235,   172,   174,   190,   178,   138,   138,
+   190,   190,    50,    66,   190,   185,    77,   188,    64,   190,
+    77,    77,    50,   190,    77,    58,    50,    50,   120,    77,
+    50,    55,   235,    77,    50,    50,   235,   235,   138,    50,
+   235,   199,   138,   138,   200,   235,   138,   132,   132,   235,
+   118,   138,   203,   260,   260,   138,    53,   206,    52,    86,
+    49,    45,    38,   213,   213,    84,   227,    29,   107,   233,
+   234,    27,   106,   212,   212,    88,    89,   132,    17,   131,
+   131,   132,   132,   260,   248,   132,   250,   260,   260,   132,
+   132,   260,   251,   213,   132,   253,   260,   213,   213,   131,
+   260,   213,   254,   212,   179,   179,   213,   212,   212,   131,
+   213,   212,    15,   131,   131,   261,   212,   131,   262,   263,
+   212,   131,   131,   102,   129,   129,   131,   129,    91,    94,
+   130,   197,   197,   nil,   179,   197,   nil,   nil,   179,   179,
+   nil,   nil,   179,   nil,   nil,   nil,   nil,   179,   nil,   nil,
+   nil,   179,   nil,   nil,   129,   nil,   276,   nil,   129,   129,
+   nil,   197,   129,   nil,   nil,   197,   197,   129,   nil,   197,
+   nil,   129,   nil,   nil,   197,   218,   nil,   276,   197,   276,
+   276,   nil,   276,   276,   nil,   276,   nil,   276,   nil,   276,
+   nil,   276,   nil,   nil,   276,   276,   218,   204,   218,   218,
+   nil,   218,   218,   nil,   218,   nil,   218,   nil,   218,   nil,
+   218,   nil,   nil,   218,   218,   nil,   244,   nil,   204,   nil,
+   204,   204,   nil,   204,   204,   nil,   204,   nil,   204,   nil,
+   204,   nil,   204,   nil,   nil,   204,   204,   244,   193,   244,
+   244,   nil,   244,   244,   nil,   244,   nil,   244,   nil,   244,
+   nil,   244,   nil,   nil,   244,   244,   nil,   275,   nil,   193,
+   nil,   193,   193,   nil,   193,   193,   nil,   193,   nil,   193,
+   nil,   193,   nil,   193,   nil,   nil,   193,   193,   275,   265,
+   275,   275,   nil,   275,   275,   nil,   275,   nil,   275,   nil,
+   275,   nil,   275,   nil,   nil,   275,   275,   nil,   163,   nil,
+   265,   nil,   265,   265,   nil,   265,   265,   nil,   265,   nil,
+   265,   nil,   265,   nil,   265,   nil,   nil,   265,   265,   163,
+   160,   163,   163,   nil,   163,   163,   nil,   163,   nil,   163,
+   nil,   163,   nil,   163,   nil,   nil,   163,   163,   nil,   216,
+   nil,   160,   nil,   160,   160,   nil,   160,   160,   nil,   160,
+   nil,   160,   nil,   160,   nil,   160,   nil,   nil,   160,   160,
+   216,   nil,   216,   216,   nil,   216,   216,   nil,   216,   nil,
+   216,   nil,   216,   nil,   216,   nil,   nil,   216,   216,   273,
+   nil,   273,   273,   nil,   273,   273,   nil,   273,   nil,   273,
+   nil,   273,   nil,   273,   nil,   nil,   273,   273,    32,   nil,
+    32,    32,   nil,    32,    32,   nil,    32,   nil,    32,   nil,
+    32,   nil,    32,   nil,   nil,    32,    32,   137,   nil,   137,
+   137,   nil,   137,   137,   nil,   137,   nil,   137,   nil,   137,
+   nil,   137,   nil,   nil,   137,   137,     0,   nil,     0,     0,
+   nil,     0,     0,   nil,     0,   nil,     0,   nil,     0,   nil,
+     0,   nil,   nil,     0,     0 ]
 
 racc_action_pointer = [
-   644,   nil,    42,   nil,   nil,   nil,   nil,   nil,   140,   323,
-   nil,   289,   nil,    70,   nil,    80,   nil,    86,   nil,   156,
-   nil,   127,   246,    13,   nil,   280,   nil,   625,   264,   165,
-   nil,   nil,   238,   nil,   nil,   nil,   nil,   nil,    -5,   nil,
-   209,   212,   223,   nil,   nil,   238,   211,   152,   nil,   nil,
-   nil,   nil,   210,   nil,    11,   186,   nil,   nil,   174,   nil,
-   173,    93,    19,   nil,    13,   nil,    28,   278,   nil,   nil,
-   251,     4,   nil,   285,    61,   318,   314,   313,    -6,   254,
-   nil,   250,   nil,   201,   148,   nil,   nil,    14,   236,   120,
-   -11,   337,   nil,    -2,   nil,   284,    84,   283,   nil,    90,
-   277,   nil,    24,   nil,   nil,   nil,    -5,   252,   nil,   nil,
-   233,   nil,    16,   152,   167,   164,   131,   nil,    79,    45,
-   nil,   nil,   nil,   322,   273,   316,   262,   -34,   nil,    36,
-   nil,   208,   nil,   587,   338,    74,   141,    71,   nil,   156,
-   154,   155,    23,   nil,   nil,   nil,    -3,   nil,   nil,    55,
-   nil,   160,   nil,   nil,   nil,   nil,   nil,   448,   nil,   507,
-   nil,    20,   136,   205,   182,   146,   216,   217,   189,   190,
-   220,   nil,   nil,   nil,   209,   nil,   332,   nil,   nil,   nil,
-   nil,   nil,   213,   nil,   235,   nil,   nil,   202,   nil,   nil,
-   467,   nil,   218,   nil,    88,   nil,   547,    75,   nil,   251,
-   255,   247,   nil,   263,   nil,   121,   nil,   nil,   256,   272,
-    89,   nil,   nil,   488,   nil,   366,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   269,   196,   nil,   136,   nil,   nil,
-   257,   nil,   nil,   280,   376,   nil,   408,   nil,    43,   130,
-    64,   nil,   nil,   nil,   nil,   277,   283,   nil,   293,   296,
-   304,   nil,   nil,   nil,   nil,   nil,   nil,   382,   323,   324,
-   326,   nil,   427,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   606,   nil,   528,   568,   nil,   nil ]
+   648,   134,   nil,   nil,   nil,    94,    59,   nil,   nil,   nil,
+   nil,   nil,   151,   nil,   nil,   346,   nil,   312,    90,   nil,
+    96,   nil,   141,   nil,   226,   nil,   118,   269,   nil,   307,
+    19,   nil,   610,   173,   163,   nil,   -26,   nil,   296,   nil,
+   nil,   nil,   nil,   nil,    -5,   263,    30,   nil,   nil,   279,
+   229,   nil,   277,   275,     4,   269,   nil,   nil,   244,   nil,
+   nil,   nil,   nil,    18,   248,   nil,   243,   nil,   nil,   203,
+   201,   216,   178,   165,   141,    48,   nil,   223,   nil,   nil,
+    44,   nil,    37,    -9,   284,    35,   293,   nil,   305,   294,
+   nil,   368,    20,   nil,   331,    53,    63,   nil,   nil,   nil,
+   nil,   193,   357,   nil,   167,    84,   306,   298,   nil,   nil,
+   nil,    -5,   nil,   nil,   nil,   nil,   nil,   nil,   269,     4,
+   229,   162,   171,   137,   nil,    94,    88,   nil,    36,   361,
+   365,   316,   284,    64,   nil,   nil,   230,   629,   245,   169,
+    76,   nil,   113,   nil,   119,   129,   143,    57,   nil,    29,
+   nil,   nil,   nil,    65,   nil,   nil,   120,   nil,   nil,   nil,
+   553,   nil,   nil,   531,   195,   174,    80,    70,    14,   229,
+   230,   203,   206,   nil,   236,   nil,   nil,   nil,   225,   341,
+   nil,   nil,   nil,   nil,   nil,   232,   nil,   nil,   255,   nil,
+   213,   nil,   nil,   471,   nil,     1,   nil,   368,   nil,   268,
+   261,     4,   nil,   279,   430,   nil,   290,   -20,   nil,   nil,
+   119,   nil,   310,   300,   nil,   nil,   572,   nil,   408,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   296,    -2,   nil,
+   211,   nil,   nil,   280,   304,   239,   nil,   nil,   157,   nil,
+   nil,   -23,   147,   nil,   449,   nil,   nil,   nil,   303,   nil,
+   305,   311,   nil,   314,   321,   nil,   nil,   nil,   nil,   nil,
+   290,   348,   351,   353,   nil,   512,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   591,   nil,   490,   389,   nil,   nil ]
 
 racc_action_default = [
-  -148,  -141,  -172,   -15,    -3,  -139,   -16,    -5,  -172,  -172,
-    -6,  -172,    -7,  -140,    -8,  -172,    -9,  -172,   -10,  -172,
-   -11,  -172,   -39,  -172,   -12,  -172,   -13,    -1,  -172,  -172,
-   -14,    -2,  -148,  -140,  -146,  -145,  -144,  -147,  -148,  -142,
-   -77,   -70,  -172,   -31,   -29,   -62,   -30,  -172,   -32,   -19,
-  -102,  -100,   -20,  -101,   -61,   -21,   -60,   -22,   -24,  -129,
-   -25,  -172,   -26,  -128,   -27,  -165,   -28,  -172,  -108,   -92,
-   -88,  -172,   -95,  -172,   -89,   -93,   -90,   -97,   -91,   -96,
-   -94,  -172,  -130,  -132,  -148,   -40,   -41,  -172,   -70,  -148,
-  -148,  -172,    -4,  -172,   -38,  -172,  -172,  -172,  -161,  -172,
-  -172,  -159,  -172,   -75,   -76,   -78,  -172,  -170,   -66,   -71,
-   -63,   -62,   -61,   -58,   -64,  -170,   -67,   -56,   -65,  -172,
-  -127,  -126,   -68,  -172,  -172,  -172,  -172,  -172,   -18,  -172,
-   -80,  -172,  -167,  -172,  -172,  -172,  -172,  -149,  -150,  -172,
-  -172,  -170,  -172,   -45,   -61,   -47,  -172,   -54,   -53,  -148,
-   -44,  -172,   276,   -69,  -162,  -163,  -164,  -172,  -160,  -172,
-  -143,  -172,  -172,  -172,  -171,   -59,  -172,  -172,  -171,   -70,
-  -172,  -124,  -116,  -117,   -61,  -122,  -172,  -125,  -123,  -103,
-   -23,   -99,  -172,   -33,  -172,   -17,  -166,  -172,  -168,  -169,
-  -172,  -114,  -172,  -110,  -172,  -131,  -172,  -172,  -153,  -156,
-  -158,  -172,  -104,  -172,   -50,  -172,   -49,   -43,  -172,  -172,
-  -172,   -42,  -136,  -172,  -138,  -172,   -74,   -73,   -37,   -79,
-   -57,   -34,   -35,   -72,  -170,  -172,  -119,  -170,   -98,   -81,
-  -106,  -109,  -111,  -172,  -172,  -134,  -172,  -152,  -172,  -172,
-  -172,  -151,   -36,   -46,   -86,   -82,   -83,   -51,   -87,   -84,
-   -85,   -52,   -48,  -135,  -137,   -55,  -121,  -172,  -172,  -169,
-  -172,  -105,  -172,  -115,  -133,  -154,  -155,  -157,  -120,  -118,
-  -172,  -113,  -172,  -172,  -112,  -107 ]
+  -150,  -174,   -14,    -2,  -143,  -174,  -174,   -15,    -3,  -141,
+   -16,    -5,  -174,   -17,    -6,  -174,    -7,  -174,  -142,    -8,
+  -174,    -9,  -174,   -10,  -174,   -11,  -174,   -40,   -12,  -174,
+  -174,   -13,    -1,  -174,  -174,  -142,  -150,   -39,  -174,  -144,
+  -148,  -147,  -146,  -149,  -150,   -79,   -72,  -167,  -130,   -28,
+  -174,   -32,   -29,  -174,  -174,   -63,   -30,  -102,   -31,  -104,
+  -103,   -33,   -20,   -62,   -21,   -61,   -22,   -23,  -131,   -25,
+   -26,  -174,   -27,   -99,   -93,   -98,   -96,  -174,  -110,   -94,
+   -90,   -97,  -174,   -91,   -95,   -92,  -174,  -132,  -134,  -150,
+   -41,  -174,  -174,   -42,   -72,  -150,  -150,    -4,   -70,   -71,
+  -163,  -174,  -174,  -161,  -174,  -174,  -174,  -172,   -77,   -78,
+   -80,  -174,  -129,  -128,   -69,   -67,   -63,   -73,   -64,   -62,
+   -59,   -65,  -172,   -68,   -57,   -66,  -174,   -19,  -174,  -174,
+  -174,  -174,  -174,  -174,   -82,  -169,  -174,  -174,  -174,  -174,
+  -151,  -152,  -174,   279,  -174,  -174,  -172,  -150,   -45,  -174,
+   -46,   -62,   -48,  -174,   -55,   -54,  -174,  -164,  -165,  -166,
+  -174,  -162,  -145,  -174,  -174,  -173,  -174,  -174,   -60,  -174,
+  -174,  -173,   -72,   -18,  -174,  -126,  -118,  -119,   -62,  -174,
+  -124,  -127,  -125,  -105,  -101,  -174,   -24,   -34,  -174,  -168,
+  -174,  -170,  -171,  -174,  -112,  -174,  -116,  -174,  -133,  -160,
+  -174,  -174,  -155,  -158,  -174,  -106,  -174,  -174,   -51,   -50,
+  -174,   -44,  -174,  -174,   -43,  -138,  -174,  -140,  -174,   -38,
+   -81,   -76,   -75,   -58,   -35,   -36,   -74,  -172,  -174,  -121,
+  -172,  -100,   -83,  -108,  -174,  -174,  -113,  -111,  -174,  -153,
+  -154,  -174,  -174,  -136,  -174,   -37,   -49,   -47,   -87,   -88,
+   -84,   -85,   -52,   -89,   -86,   -53,  -137,  -139,   -56,  -123,
+  -174,  -174,  -171,  -174,  -107,  -174,  -117,  -159,  -156,  -157,
+  -135,  -122,  -120,  -174,  -115,  -174,  -174,  -114,  -109 ]
 
 racc_goto_table = [
-    23,    27,   122,    92,   173,   105,   198,    49,   117,    46,
-   187,    39,    31,   170,    32,    82,   193,   103,   115,    25,
-   142,   151,   243,    44,   191,   247,   251,    23,   131,    95,
-    64,    86,    73,    84,   261,   192,   107,   110,   166,   172,
-   113,   227,    83,    62,    98,   163,   136,    97,    38,   100,
-   101,   108,   180,   167,   201,   197,    94,   226,   120,   154,
-   nil,   129,   nil,    46,    66,   141,   170,   nil,   nil,   nil,
-   nil,   118,   nil,   nil,   232,   nil,   nil,    44,   nil,   203,
-   210,   nil,   191,   nil,    64,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   121,   nil,   nil,   nil,   138,    62,   nil,   nil,
-   nil,   nil,   158,   nil,   nil,   160,   257,   265,   155,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    66,   171,
-   182,    46,    46,   nil,   263,   nil,   122,   nil,   nil,   219,
-   171,   195,   220,    23,   190,    44,    44,   nil,   268,   nil,
-   120,   103,    64,    64,   nil,   223,   224,   170,   nil,   nil,
-   nil,   120,   nil,   178,   nil,    62,    62,    23,   213,    23,
-   215,   110,   255,   nil,   178,   258,    92,   nil,   nil,   nil,
-    60,   nil,   171,   nil,   121,   108,    66,    66,   nil,   nil,
-    58,   nil,   120,   nil,   nil,   121,   nil,   nil,   171,    92,
-    23,    92,   nil,   120,   nil,   118,    23,   236,   116,   nil,
-   nil,   nil,   nil,   nil,   245,   245,   178,   nil,   114,   120,
-   nil,   nil,    92,    23,   nil,    23,   121,   nil,   244,   244,
-   nil,   nil,   178,   nil,    60,   250,   250,   121,   nil,   nil,
-   171,   nil,   nil,   nil,    58,   nil,    23,   nil,   249,   249,
-   nil,   nil,   nil,   121,   nil,   nil,   148,   148,    92,    92,
-   nil,   120,   nil,   171,   nil,   nil,   147,   147,   nil,   121,
-   121,   nil,    23,   272,   178,   nil,   nil,   nil,   nil,   nil,
-    23,   273,    23,    23,   120,    68,   nil,    81,   nil,    77,
-   177,    77,    60,    60,    48,   121,    72,   178,    72,   nil,
-   175,   177,    58,    58,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   175,   nil,   nil,   nil,   nil,   148,   124,   121,   nil,
-   nil,    77,   nil,   nil,   nil,   nil,   147,   nil,    72,   nil,
-   nil,   nil,   116,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   130,   114,   177,   nil,    77,   nil,   nil,    48,   nil,
-   nil,   nil,    72,   175,   nil,   nil,   nil,   139,   nil,   177,
-   nil,    77,   nil,   153,   nil,   nil,   nil,    77,    72,   175,
-   nil,   nil,   148,   nil,    72,   248,   248,   nil,   nil,   nil,
-   nil,   nil,   147,   nil,   nil,   246,   246,   nil,   nil,   nil,
+    30,    32,    56,   108,   174,    97,    38,   110,    52,    39,
+   122,   177,    62,   196,   190,     3,   202,   114,   194,    29,
+    58,   124,   149,   156,   164,   247,    87,   136,    36,    93,
+   115,    82,    30,   264,    56,   197,   113,   252,   255,   170,
+    52,   107,   169,   176,   128,   120,   230,    88,   118,    89,
+   142,   100,    58,   102,   174,    44,   106,   186,   146,   103,
+    49,   229,   200,   206,   201,    37,   157,   nil,   nil,   nil,
+   nil,    61,   196,    81,   207,    81,   nil,   236,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    81,    81,   112,   nil,
+   nil,   nil,    49,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   161,   162,    61,   141,   nil,   nil,    81,   260,   nil,
+   266,   nil,   nil,   nil,   nil,    56,    56,   268,    72,   113,
+   nil,    52,    52,   108,   158,   185,   nil,   220,   113,   226,
+    81,   175,   nil,    58,    58,   174,   227,    30,   193,   114,
+   175,   198,   271,   223,   258,    81,   125,   261,   nil,   nil,
+    72,   nil,   115,   nil,   nil,   nil,   nil,   nil,   113,   nil,
+    30,   216,   nil,    30,   218,   nil,    97,   nil,   nil,   113,
+   118,   112,   nil,    49,    49,   nil,   nil,   nil,   nil,    70,
+   112,   175,   nil,   nil,    61,   nil,   187,   113,   nil,    97,
+   nil,    97,   nil,    30,   nil,   nil,   249,   249,   nil,   175,
+   nil,   nil,   113,   113,    30,   244,   nil,   123,   nil,   nil,
+   112,    70,   nil,   nil,   250,   250,    30,    97,    30,    81,
+    81,   112,   nil,   nil,   nil,   113,   nil,   nil,   nil,   182,
+   nil,    72,    72,   nil,   nil,   nil,   nil,   175,   182,   112,
+   nil,   nil,   nil,    81,    30,   nil,   nil,   nil,    97,    97,
+   113,   nil,   nil,   nil,   248,   248,   155,   155,   nil,   nil,
+   nil,   nil,   175,   nil,   nil,    30,   275,   nil,   125,    78,
+   nil,    86,    69,    30,   276,    30,    30,   112,   nil,   182,
+   nil,    81,    98,    99,   nil,   nil,   nil,   nil,   nil,   nil,
+   181,    81,    70,    70,   nil,    81,   nil,   182,   nil,   181,
+   121,   nil,   112,   130,    69,   nil,   nil,   nil,   155,    73,
+   nil,    73,   254,   254,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    73,    73,   nil,   nil,   134,   nil,   nil,   123,
+   nil,   nil,   nil,   nil,   nil,   182,   nil,   nil,   nil,   nil,
+   181,   144,   nil,    73,   nil,   nil,   nil,   nil,   nil,   154,
+   154,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   181,   nil,
+   182,   nil,   nil,   nil,   nil,   nil,    73,   nil,   nil,   nil,
+   nil,   155,   nil,   253,   253,   nil,   nil,   nil,   nil,   nil,
+   nil,    73,   nil,   180,   nil,    69,    69,   nil,   nil,   nil,
+   nil,   nil,   180,   nil,   nil,   nil,   181,   nil,   nil,   nil,
+   nil,   154,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   221,   222,   nil,   nil,   nil,
+   nil,   181,   121,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   180,   nil,   nil,   nil,   nil,   nil,   232,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   177,   nil,   nil,   nil,   nil,   nil,    48,   183,   nil,
-   nil,   175,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   177,   nil,   nil,   nil,   nil,   nil,
-   nil,   216,   217,   nil,   175,    77,    77,   nil,   nil,   nil,
-   nil,   nil,    72,    72,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   229,   nil,   nil,
-   nil,    77,   nil,   nil,   nil,   nil,   nil,   nil,    72,   nil,
+   nil,   180,   nil,   nil,   nil,    73,    73,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   154,   nil,   251,   251,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   259,   nil,    73,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   267,   nil,   180,
+   nil,   269,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   256,   nil,   nil,   nil,    77,
-   nil,   nil,   nil,   nil,   nil,   nil,    72,   nil,   nil,   266,
-   267,   nil,   nil,    77,    77,   nil,   nil,   nil,   nil,   nil,
-    72,    72 ]
+   nil,   nil,   nil,   nil,   180,   nil,   nil,    73,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    73,   nil,   nil,
+   nil,    73 ]
 
 racc_goto_check = [
-    34,     2,    47,     4,    61,    51,    71,    17,    44,    27,
-    53,    68,     3,    59,    29,    27,    57,    49,    32,     1,
-    38,    38,    39,    26,    59,    43,    43,    34,    52,    34,
-    24,    37,    54,    29,    55,    56,    35,    27,    31,    60,
-    30,    62,    63,    23,     3,    33,    64,    65,    66,    67,
-     3,    26,    20,    33,    69,    70,     5,    61,    24,    72,
-   nil,    17,   nil,    27,    25,    32,    59,   nil,   nil,   nil,
-   nil,    23,   nil,   nil,    57,   nil,   nil,    26,   nil,    33,
-    38,   nil,    59,   nil,    24,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    25,   nil,   nil,   nil,     3,    23,   nil,   nil,
-   nil,   nil,    68,   nil,   nil,    68,    53,    71,    29,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    25,    27,
-    17,    27,    27,   nil,    59,   nil,    47,   nil,   nil,    51,
-    27,    27,    44,    34,     2,    26,    26,   nil,    61,   nil,
-    24,    49,    24,    24,   nil,    49,    32,    59,   nil,   nil,
-   nil,    24,   nil,    23,   nil,    23,    23,    34,     2,    34,
-     2,    27,    33,   nil,    23,    33,     4,   nil,   nil,   nil,
-    22,   nil,    27,   nil,    25,    26,    25,    25,   nil,   nil,
-    21,   nil,    24,   nil,   nil,    25,   nil,   nil,    27,     4,
-    34,     4,   nil,    24,   nil,    23,    34,     2,    22,   nil,
-   nil,   nil,   nil,   nil,    27,    27,    23,   nil,    21,    24,
-   nil,   nil,     4,    34,   nil,    34,    25,   nil,    26,    26,
-   nil,   nil,    23,   nil,    22,    24,    24,    25,   nil,   nil,
-    27,   nil,   nil,   nil,    21,   nil,    34,   nil,    23,    23,
-   nil,   nil,   nil,    25,   nil,   nil,    22,    22,     4,     4,
-   nil,    24,   nil,    27,   nil,   nil,    21,    21,   nil,    25,
-    25,   nil,    34,     2,    23,   nil,   nil,   nil,   nil,   nil,
-    34,     2,    34,    34,    24,    48,   nil,    48,   nil,    46,
-    22,    46,    22,    22,    28,    25,    28,    23,    28,   nil,
-    21,    22,    21,    21,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    21,   nil,   nil,   nil,   nil,    22,    48,    25,   nil,
-   nil,    46,   nil,   nil,   nil,   nil,    21,   nil,    28,   nil,
-   nil,   nil,    22,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    48,    21,    22,   nil,    46,   nil,   nil,    28,   nil,
-   nil,   nil,    28,    21,   nil,   nil,   nil,    48,   nil,    22,
-   nil,    46,   nil,    48,   nil,   nil,   nil,    46,    28,    21,
-   nil,   nil,    22,   nil,    28,    22,    22,   nil,   nil,   nil,
-   nil,   nil,    21,   nil,   nil,    21,    21,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    22,   nil,   nil,   nil,   nil,   nil,    28,    28,   nil,
-   nil,    21,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    22,   nil,   nil,   nil,   nil,   nil,
-   nil,    48,    48,   nil,    21,    46,    46,   nil,   nil,   nil,
-   nil,   nil,    28,    28,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    48,   nil,   nil,
-   nil,    46,   nil,   nil,   nil,   nil,   nil,   nil,    28,   nil,
+    35,     2,    27,    50,    60,     4,    35,    52,    26,    69,
+    33,    62,    18,    60,    54,     3,    72,    48,    58,     1,
+    28,    45,    39,    39,    34,    40,    28,    53,    30,    38,
+    27,    55,    35,    56,    27,    57,    26,    44,    44,    34,
+    26,    36,    32,    61,    18,    31,    63,    64,    28,    30,
+    65,     3,    28,    66,    60,    67,    68,    21,    33,     3,
+    25,    62,    70,    34,    71,     5,    73,   nil,   nil,   nil,
+   nil,    29,    60,    29,    39,    29,   nil,    58,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    29,    29,    25,   nil,
+   nil,   nil,    25,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    69,    69,    29,     3,   nil,   nil,    29,    54,   nil,
+    60,   nil,   nil,   nil,   nil,    27,    27,    72,    24,    26,
+   nil,    26,    26,    50,    30,    18,   nil,    52,    26,    50,
+    29,    28,   nil,    28,    28,    60,    33,    35,     2,    48,
+    28,    28,    62,    45,    34,    29,    24,    34,   nil,   nil,
+    24,   nil,    27,   nil,   nil,   nil,   nil,   nil,    26,   nil,
+    35,     2,   nil,    35,     2,   nil,     4,   nil,   nil,    26,
+    28,    25,   nil,    25,    25,   nil,   nil,   nil,   nil,    23,
+    25,    28,   nil,   nil,    29,   nil,    29,    26,   nil,     4,
+   nil,     4,   nil,    35,   nil,   nil,    27,    27,   nil,    28,
+   nil,   nil,    26,    26,    35,     2,   nil,    23,   nil,   nil,
+    25,    23,   nil,   nil,    28,    28,    35,     4,    35,    29,
+    29,    25,   nil,   nil,   nil,    26,   nil,   nil,   nil,    24,
+   nil,    24,    24,   nil,   nil,   nil,   nil,    28,    24,    25,
+   nil,   nil,   nil,    29,    35,   nil,   nil,   nil,     4,     4,
+    26,   nil,   nil,   nil,    25,    25,    23,    23,   nil,   nil,
+   nil,   nil,    28,   nil,   nil,    35,     2,   nil,    24,    49,
+   nil,    49,    22,    35,     2,    35,    35,    25,   nil,    24,
+   nil,    29,    49,    49,   nil,   nil,   nil,   nil,   nil,   nil,
+    23,    29,    23,    23,   nil,    29,   nil,    24,   nil,    23,
+    22,   nil,    25,    49,    22,   nil,   nil,   nil,    23,    47,
+   nil,    47,    24,    24,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    47,    47,   nil,   nil,    49,   nil,   nil,    23,
+   nil,   nil,   nil,   nil,   nil,    24,   nil,   nil,   nil,   nil,
+    23,    49,   nil,    47,   nil,   nil,   nil,   nil,   nil,    22,
+    22,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,
+    24,   nil,   nil,   nil,   nil,   nil,    47,   nil,   nil,   nil,
+   nil,    23,   nil,    23,    23,   nil,   nil,   nil,   nil,   nil,
+   nil,    47,   nil,    22,   nil,    22,    22,   nil,   nil,   nil,
+   nil,   nil,    22,   nil,   nil,   nil,    23,   nil,   nil,   nil,
+   nil,    22,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    49,    49,   nil,   nil,   nil,
+   nil,    23,    22,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,    22,   nil,   nil,   nil,   nil,   nil,    49,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    22,   nil,   nil,   nil,    47,    47,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    22,   nil,    22,    22,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    49,   nil,    47,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    49,   nil,    22,
+   nil,    49,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    48,   nil,   nil,   nil,    46,
-   nil,   nil,   nil,   nil,   nil,   nil,    28,   nil,   nil,    48,
-    48,   nil,   nil,    46,    46,   nil,   nil,   nil,   nil,   nil,
-    28,    28 ]
+   nil,   nil,   nil,   nil,    22,   nil,   nil,    47,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    47,   nil,   nil,
+   nil,    47 ]
 
 racc_goto_pointer = [
-   nil,    19,     1,    12,   -24,    27,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    -6,   nil,   nil,
-   -73,   167,   157,    30,    17,    51,    10,    -4,   271,    12,
-    -1,   -75,   -23,   -62,     0,    -4,   nil,     8,   -69,  -183,
-   nil,   nil,   nil,  -183,   -33,   nil,   264,   -39,   260,   -23,
-   nil,   -35,   -43,  -121,    17,  -196,   -99,  -118,   nil,  -110,
-   -84,  -119,  -135,    23,   -38,    15,    40,    11,     3,   -83,
-   -82,  -131,   -37 ]
+   nil,    19,     1,    15,   -27,    59,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    -6,   nil,
+   nil,   -75,   254,   161,   100,    42,   -10,   -16,     2,    53,
+    23,    -1,   -78,   -36,   -83,     0,    -4,   nil,    -1,   -73,
+  -185,   nil,   nil,   nil,  -175,   -25,   nil,   289,   -29,   249,
+   -42,   nil,   -38,   -50,  -122,    11,  -200,  -103,  -120,   nil,
+  -125,   -86,  -118,  -133,    23,   -39,    17,    43,    12,    -3,
+   -78,   -76,  -124,   -35 ]
 
 racc_goto_default = [
-   nil,   nil,   nil,   150,     4,     7,    10,    12,    14,    16,
-    18,    20,    24,    26,    30,     3,     6,   nil,    52,    55,
-    57,    74,    75,    76,    78,    79,    69,    70,     9,    11,
-   nil,   nil,   nil,   nil,    61,   nil,    29,   nil,   nil,   143,
-   205,   145,   146,   nil,   nil,   119,    63,    80,   nil,   109,
-   104,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   194,    42,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil ]
+   nil,   nil,   nil,   148,     8,    11,    14,    16,    19,    21,
+    23,    25,    28,    31,     2,     7,    10,    13,   nil,    64,
+    66,    67,    83,    84,    85,    74,    75,    79,    80,    15,
+    17,   nil,   nil,   nil,   nil,    71,   nil,     6,   nil,   nil,
+   150,   210,   152,   153,   nil,   nil,   126,    48,    76,   nil,
+   117,   109,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   195,
+    53,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil ]
 
 racc_token_table = {
  false => 0,
@@ -568,47 +576,48 @@ racc_token_table = {
  :TRUE => 11,
  :FALSE => 12,
  :EQUALS => 13,
- :LESSEQUAL => 14,
- :NOTEQUAL => 15,
- :DOT => 16,
- :COLON => 17,
- :LLCOLLECT => 18,
- :RRCOLLECT => 19,
- :QMARK => 20,
- :LPAREN => 21,
- :RPAREN => 22,
- :ISEQUAL => 23,
- :GREATEREQUAL => 24,
- :GREATERTHAN => 25,
- :LESSTHAN => 26,
- :IF => 27,
- :ELSE => 28,
- :IMPORT => 29,
- :DEFINE => 30,
- :ELSIF => 31,
- :VARIABLE => 32,
- :CLASS => 33,
- :INHERITS => 34,
- :NODE => 35,
- :BOOLEAN => 36,
- :NAME => 37,
- :SEMIC => 38,
- :CASE => 39,
- :DEFAULT => 40,
- :AT => 41,
- :LCOLLECT => 42,
- :RCOLLECT => 43,
- :CLASSNAME => 44,
- :CLASSREF => 45,
- :NOT => 46,
- :OR => 47,
- :AND => 48,
- :UNDEF => 49,
- :PARROW => 50 }
+ :APPENDS => 14,
+ :LESSEQUAL => 15,
+ :NOTEQUAL => 16,
+ :DOT => 17,
+ :COLON => 18,
+ :LLCOLLECT => 19,
+ :RRCOLLECT => 20,
+ :QMARK => 21,
+ :LPAREN => 22,
+ :RPAREN => 23,
+ :ISEQUAL => 24,
+ :GREATEREQUAL => 25,
+ :GREATERTHAN => 26,
+ :LESSTHAN => 27,
+ :IF => 28,
+ :ELSE => 29,
+ :IMPORT => 30,
+ :DEFINE => 31,
+ :ELSIF => 32,
+ :VARIABLE => 33,
+ :CLASS => 34,
+ :INHERITS => 35,
+ :NODE => 36,
+ :BOOLEAN => 37,
+ :NAME => 38,
+ :SEMIC => 39,
+ :CASE => 40,
+ :DEFAULT => 41,
+ :AT => 42,
+ :LCOLLECT => 43,
+ :RCOLLECT => 44,
+ :CLASSNAME => 45,
+ :CLASSREF => 46,
+ :NOT => 47,
+ :OR => 48,
+ :AND => 49,
+ :UNDEF => 50,
+ :PARROW => 51 }
 
 racc_use_result_var = true
 
-racc_nt_base = 51
+racc_nt_base = 52
 
 Racc_arg = [
  racc_action_table,
@@ -641,6 +650,7 @@ Racc_token_to_s_table = [
 'TRUE',
 'FALSE',
 'EQUALS',
+'APPENDS',
 'LESSEQUAL',
 'NOTEQUAL',
 'DOT',
@@ -695,6 +705,7 @@ Racc_token_to_s_table = [
 'hostclass',
 'nodedef',
 'resourceoverride',
+'append',
 'funcvalues',
 'namestrings',
 'resourcerefs',
@@ -823,8 +834,10 @@ module_eval <<'.,.,', 'grammar.ra', 46
 
  # reduce 16 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 68
-  def _reduce_17( val, _values, result )
+ # reduce 17 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 69
+  def _reduce_18( val, _values, result )
     args = aryfy(val[2])
     result = ast AST::Function,
         :name => val[0],
@@ -834,8 +847,8 @@ module_eval <<'.,.,', 'grammar.ra', 68
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 74
-  def _reduce_18( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 75
+  def _reduce_19( val, _values, result )
     result = ast AST::Function,
         :name => val[0],
         :arguments => AST::ASTArray.new({}),
@@ -844,8 +857,8 @@ module_eval <<'.,.,', 'grammar.ra', 74
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 81
-  def _reduce_19( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 82
+  def _reduce_20( val, _values, result )
     args = aryfy(val[1])
     result = ast AST::Function,
         :name => val[0],
@@ -855,14 +868,14 @@ module_eval <<'.,.,', 'grammar.ra', 81
   end
 .,.,
 
- # reduce 20 omitted
-
  # reduce 21 omitted
 
  # reduce 22 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 91
-  def _reduce_23( val, _values, result )
+ # reduce 23 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 92
+  def _reduce_24( val, _values, result )
     result = aryfy(val[0], val[2])
     result.line = @lexer.line
     result.file = @lexer.file
@@ -870,8 +883,6 @@ module_eval <<'.,.,', 'grammar.ra', 91
   end
 .,.,
 
- # reduce 24 omitted
-
  # reduce 25 omitted
 
  # reduce 26 omitted
@@ -884,17 +895,19 @@ module_eval <<'.,.,', 'grammar.ra', 91
 
  # reduce 30 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 104
-  def _reduce_31( val, _values, result )
+ # reduce 31 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 105
+  def _reduce_32( val, _values, result )
                     result = ast AST::Name, :value => val[0]
    result
   end
 .,.,
 
- # reduce 32 omitted
+ # reduce 33 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 115
-  def _reduce_33( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 116
+  def _reduce_34( val, _values, result )
     unless val[0].is_a?(AST::ASTArray)
         val[0] = aryfy(val[0])
     end
@@ -906,8 +919,8 @@ module_eval <<'.,.,', 'grammar.ra', 115
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 136
-  def _reduce_34( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 137
+  def _reduce_35( val, _values, result )
     array = val[2]
     if array.instance_of?(AST::ResourceInstance)
         array = [array]
@@ -930,31 +943,31 @@ module_eval <<'.,.,', 'grammar.ra', 136
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 139
-  def _reduce_35( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 140
+  def _reduce_36( val, _values, result )
     # This is a deprecated syntax.
     error "All resource specifications require names"
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 142
-  def _reduce_36( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 143
+  def _reduce_37( val, _values, result )
     # a defaults setting for a type
     result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2])
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 147
-  def _reduce_37( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 148
+  def _reduce_38( val, _values, result )
     result = ast AST::ResourceOverride, :object => val[0], :params => val[2]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 174
-  def _reduce_38( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 175
+  def _reduce_39( val, _values, result )
     type = val[0]
 
     if (type == :exported and ! Puppet[:storeconfigs]) and ! Puppet[:parseonly]
@@ -981,22 +994,22 @@ module_eval <<'.,.,', 'grammar.ra', 174
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 175
-  def _reduce_39( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 176
+  def _reduce_40( val, _values, result )
  result = :virtual
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 176
-  def _reduce_40( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 177
+  def _reduce_41( val, _values, result )
  result = :exported
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 199
-  def _reduce_41( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 200
+  def _reduce_42( val, _values, result )
     if val[0] =~ /^[a-z]/
         Puppet.warning addcontext("Collection names must now be capitalized")
     end
@@ -1018,8 +1031,8 @@ module_eval <<'.,.,', 'grammar.ra', 199
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 209
-  def _reduce_42( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 210
+  def _reduce_43( val, _values, result )
     if val[1]
         result = val[1]
         result.form = :virtual
@@ -1030,8 +1043,8 @@ module_eval <<'.,.,', 'grammar.ra', 209
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 217
-  def _reduce_43( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 218
+  def _reduce_44( val, _values, result )
     if val[1]
         result = val[1]
         result.form = :exported
@@ -1042,33 +1055,33 @@ module_eval <<'.,.,', 'grammar.ra', 217
   end
 .,.,
 
- # reduce 44 omitted
-
  # reduce 45 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 225
-  def _reduce_46( val, _values, result )
+ # reduce 46 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 226
+  def _reduce_47( val, _values, result )
     result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
    result
   end
 .,.,
 
- # reduce 47 omitted
+ # reduce 48 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 231
-  def _reduce_48( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 232
+  def _reduce_49( val, _values, result )
     result = val[1]
     result.parens = true
    result
   end
 .,.,
 
- # reduce 49 omitted
-
  # reduce 50 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 239
-  def _reduce_51( val, _values, result )
+ # reduce 51 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 240
+  def _reduce_52( val, _values, result )
     result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
     #result = ast AST::CollExpr
     #result.push *val
@@ -1076,8 +1089,8 @@ module_eval <<'.,.,', 'grammar.ra', 239
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 244
-  def _reduce_52( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 245
+  def _reduce_53( val, _values, result )
     result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
     #result = ast AST::CollExpr
     #result.push *val
@@ -1085,21 +1098,21 @@ module_eval <<'.,.,', 'grammar.ra', 244
   end
 .,.,
 
- # reduce 53 omitted
-
  # reduce 54 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 251
-  def _reduce_55( val, _values, result )
+ # reduce 55 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 252
+  def _reduce_56( val, _values, result )
     result = ast AST::ResourceInstance, :children => [val[0],val[2]]
    result
   end
 .,.,
 
- # reduce 56 omitted
+ # reduce 57 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 261
-  def _reduce_57( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 262
+  def _reduce_58( val, _values, result )
     if val[0].instance_of?(AST::ResourceInstance)
         result = ast AST::ASTArray, :children => [val[0],val[2]]
     else
@@ -1110,33 +1123,31 @@ module_eval <<'.,.,', 'grammar.ra', 261
   end
 .,.,
 
- # reduce 58 omitted
-
  # reduce 59 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 268
-  def _reduce_60( val, _values, result )
+ # reduce 60 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 269
+  def _reduce_61( val, _values, result )
     result = ast AST::Undef, :value => :undef
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 272
-  def _reduce_61( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 273
+  def _reduce_62( val, _values, result )
     result = ast AST::Name, :value => val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 276
-  def _reduce_62( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 277
+  def _reduce_63( val, _values, result )
     result = ast AST::Type, :value => val[0]
    result
   end
 .,.,
 
- # reduce 63 omitted
-
  # reduce 64 omitted
 
  # reduce 65 omitted
@@ -1147,8 +1158,10 @@ module_eval <<'.,.,', 'grammar.ra', 276
 
  # reduce 68 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 292
-  def _reduce_69( val, _values, result )
+ # reduce 69 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 293
+  def _reduce_70( val, _values, result )
     if val[0] =~ /::/
         raise Puppet::ParseError, "Cannot assign to variables in other namespaces"
     end
@@ -1159,22 +1172,30 @@ module_eval <<'.,.,', 'grammar.ra', 292
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 297
-  def _reduce_70( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 298
+  def _reduce_71( val, _values, result )
+    variable = ast AST::Name, :value => val[0]
+    result = ast AST::VarDef, :name => variable, :value => val[2], :append => true
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'grammar.ra', 303
+  def _reduce_72( val, _values, result )
     result = ast AST::ASTArray
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 297
-  def _reduce_71( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 303
+  def _reduce_73( val, _values, result )
  result = val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 306
-  def _reduce_72( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 312
+  def _reduce_74( val, _values, result )
     if val[0].instance_of?(AST::ASTArray)
         val[0].push(val[2])
         result = val[0]
@@ -1185,41 +1206,41 @@ module_eval <<'.,.,', 'grammar.ra', 306
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 310
-  def _reduce_73( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 316
+  def _reduce_75( val, _values, result )
     result = ast AST::ResourceParam, :param => val[0], :value => val[2]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 315
-  def _reduce_74( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 321
+  def _reduce_76( val, _values, result )
     result = ast AST::ResourceParam, :param => val[0], :value => val[2],
                                      :add => true
    result
   end
 .,.,
 
- # reduce 75 omitted
+ # reduce 77 omitted
 
- # reduce 76 omitted
+ # reduce 78 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 323
-  def _reduce_77( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 329
+  def _reduce_79( val, _values, result )
     result = ast AST::ASTArray
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 323
-  def _reduce_78( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 329
+  def _reduce_80( val, _values, result )
  result = val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 332
-  def _reduce_79( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 338
+  def _reduce_81( val, _values, result )
     if val[0].instance_of?(AST::ASTArray)
         val[0].push(val[2])
         result = val[0]
@@ -1230,10 +1251,10 @@ module_eval <<'.,.,', 'grammar.ra', 332
   end
 .,.,
 
- # reduce 80 omitted
+ # reduce 82 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 341
-  def _reduce_81( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 347
+  def _reduce_83( val, _values, result )
     if val[0].instance_of?(AST::ASTArray)
         result = val[0].push(val[2])
     else
@@ -1243,10 +1264,6 @@ module_eval <<'.,.,', 'grammar.ra', 341
   end
 .,.,
 
- # reduce 82 omitted
-
- # reduce 83 omitted
-
  # reduce 84 omitted
 
  # reduce 85 omitted
@@ -1275,8 +1292,12 @@ module_eval <<'.,.,', 'grammar.ra', 341
 
  # reduce 97 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 368
-  def _reduce_98( val, _values, result )
+ # reduce 98 omitted
+
+ # reduce 99 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 374
+  def _reduce_100( val, _values, result )
     args = aryfy(val[2])
     result = ast AST::Function,
         :name => val[0],
@@ -1286,8 +1307,8 @@ module_eval <<'.,.,', 'grammar.ra', 368
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 373
-  def _reduce_99( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 379
+  def _reduce_101( val, _values, result )
     result = ast AST::Function,
         :name => val[0],
         :arguments => AST::ASTArray.new({}),
@@ -1296,44 +1317,44 @@ module_eval <<'.,.,', 'grammar.ra', 373
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 377
-  def _reduce_100( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 383
+  def _reduce_102( val, _values, result )
     result = ast AST::String, :value => val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 379
-  def _reduce_101( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 385
+  def _reduce_103( val, _values, result )
     result = ast AST::FlatString, :value => val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 383
-  def _reduce_102( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 389
+  def _reduce_104( val, _values, result )
     result = ast AST::Boolean, :value => val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 388
-  def _reduce_103( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 394
+  def _reduce_105( val, _values, result )
     Puppet.warning addcontext("Deprecation notice:  Resource references should now be capitalized")
     result = ast AST::ResourceReference, :type => val[0], :title => val[2]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 390
-  def _reduce_104( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 396
+  def _reduce_106( val, _values, result )
     result = ast AST::ResourceReference, :type => val[0], :title => val[2]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 403
-  def _reduce_105( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 409
+  def _reduce_107( val, _values, result )
     args = {
         :test => val[1],
         :statements => val[3]
@@ -1348,19 +1369,19 @@ module_eval <<'.,.,', 'grammar.ra', 403
   end
 .,.,
 
- # reduce 106 omitted
+ # reduce 108 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 408
-  def _reduce_107( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 414
+  def _reduce_109( val, _values, result )
     result = ast AST::Else, :statements => val[2]
    result
   end
 .,.,
 
- # reduce 108 omitted
+ # reduce 110 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 420
-  def _reduce_109( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 426
+  def _reduce_111( val, _values, result )
     options = val[3]
     unless options.instance_of?(AST::ASTArray)
         options = ast AST::ASTArray, :children => [val[3]]
@@ -1370,10 +1391,10 @@ module_eval <<'.,.,', 'grammar.ra', 420
   end
 .,.,
 
- # reduce 110 omitted
+ # reduce 112 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 430
-  def _reduce_111( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 436
+  def _reduce_113( val, _values, result )
     if val[0].instance_of?(AST::ASTArray)
         val[0].push val[1]
         result = val[0]
@@ -1384,15 +1405,15 @@ module_eval <<'.,.,', 'grammar.ra', 430
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 434
-  def _reduce_112( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 440
+  def _reduce_114( val, _values, result )
     result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 439
-  def _reduce_113( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 445
+  def _reduce_115( val, _values, result )
     result = ast(AST::CaseOpt,
         :value => val[0],
         :statements => ast(AST::ASTArray)
@@ -1401,10 +1422,10 @@ module_eval <<'.,.,', 'grammar.ra', 439
   end
 .,.,
 
- # reduce 114 omitted
+ # reduce 116 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 449
-  def _reduce_115( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 455
+  def _reduce_117( val, _values, result )
     if val[0].instance_of?(AST::ASTArray)
         val[0].push(val[2])
         result = val[0]
@@ -1415,26 +1436,26 @@ module_eval <<'.,.,', 'grammar.ra', 449
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 453
-  def _reduce_116( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 459
+  def _reduce_118( val, _values, result )
     result = ast AST::Selector, :param => val[0], :values => val[2]
    result
   end
 .,.,
 
- # reduce 117 omitted
+ # reduce 119 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 455
-  def _reduce_118( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 461
+  def _reduce_120( val, _values, result )
  result = val[1]
    result
   end
 .,.,
 
- # reduce 119 omitted
+ # reduce 121 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 466
-  def _reduce_120( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 472
+  def _reduce_122( val, _values, result )
     if val[0].instance_of?(AST::ASTArray)
         val[0].push(val[2])
         result = val[0]
@@ -1445,17 +1466,13 @@ module_eval <<'.,.,', 'grammar.ra', 466
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 470
-  def _reduce_121( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 476
+  def _reduce_123( val, _values, result )
     result = ast AST::ResourceParam, :param => val[0], :value => val[2]
    result
   end
 .,.,
 
- # reduce 122 omitted
-
- # reduce 123 omitted
-
  # reduce 124 omitted
 
  # reduce 125 omitted
@@ -1466,29 +1483,33 @@ module_eval <<'.,.,', 'grammar.ra', 470
 
  # reduce 128 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 481
-  def _reduce_129( val, _values, result )
+ # reduce 129 omitted
+
+ # reduce 130 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 487
+  def _reduce_131( val, _values, result )
     result = ast AST::Default, :value => val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 483
-  def _reduce_130( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 489
+  def _reduce_132( val, _values, result )
  result = [val[0].value]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 487
-  def _reduce_131( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 493
+  def _reduce_133( val, _values, result )
     results = val[0] << val[2].value
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 495
-  def _reduce_132( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 501
+  def _reduce_134( val, _values, result )
     val[1].each do |file|
         import(file)
     end
@@ -1498,8 +1519,8 @@ module_eval <<'.,.,', 'grammar.ra', 495
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 505
-  def _reduce_133( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 511
+  def _reduce_135( val, _values, result )
     newdefine classname(val[1]), :arguments => val[2], :code => val[4]
     @lexer.indefine = false
     result = nil
@@ -1509,8 +1530,8 @@ module_eval <<'.,.,', 'grammar.ra', 505
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 509
-  def _reduce_134( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 515
+  def _reduce_136( val, _values, result )
     newdefine classname(val[1]), :arguments => val[2]
     @lexer.indefine = false
     result = nil
@@ -1518,8 +1539,8 @@ module_eval <<'.,.,', 'grammar.ra', 509
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 517
-  def _reduce_135( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 523
+  def _reduce_137( val, _values, result )
     # Our class gets defined in the parent namespace, not our own.
     @lexer.namepop
     newclass classname(val[1]), :code => val[4], :parent => val[2]
@@ -1528,8 +1549,8 @@ module_eval <<'.,.,', 'grammar.ra', 517
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 522
-  def _reduce_136( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 528
+  def _reduce_138( val, _values, result )
     # Our class gets defined in the parent namespace, not our own.
     @lexer.namepop
     newclass classname(val[1]), :parent => val[2]
@@ -1538,32 +1559,32 @@ module_eval <<'.,.,', 'grammar.ra', 522
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 527
-  def _reduce_137( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 533
+  def _reduce_139( val, _values, result )
     newnode val[1], :parent => val[2], :code => val[4]
     result = nil
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 530
-  def _reduce_138( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 536
+  def _reduce_140( val, _values, result )
     newnode val[1], :parent => val[2]
     result = nil
    result
   end
 .,.,
 
- # reduce 139 omitted
-
- # reduce 140 omitted
-
  # reduce 141 omitted
 
  # reduce 142 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 544
-  def _reduce_143( val, _values, result )
+ # reduce 143 omitted
+
+ # reduce 144 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 550
+  def _reduce_145( val, _values, result )
     result = val[0]
     result = [result] unless result.is_a?(Array)
     result << val[2]
@@ -1571,49 +1592,49 @@ module_eval <<'.,.,', 'grammar.ra', 544
   end
 .,.,
 
- # reduce 144 omitted
-
- # reduce 145 omitted
-
  # reduce 146 omitted
 
  # reduce 147 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 553
-  def _reduce_148( val, _values, result )
+ # reduce 148 omitted
+
+ # reduce 149 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 559
+  def _reduce_150( val, _values, result )
     result = nil
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 557
-  def _reduce_149( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 563
+  def _reduce_151( val, _values, result )
     result = ast AST::ASTArray, :children => []
    result
   end
 .,.,
 
- # reduce 150 omitted
+ # reduce 152 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 562
-  def _reduce_151( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 568
+  def _reduce_153( val, _values, result )
     result = nil
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 566
-  def _reduce_152( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 572
+  def _reduce_154( val, _values, result )
     result = val[1]
     result = [result] unless result[0].is_a?(Array)
    result
   end
 .,.,
 
- # reduce 153 omitted
+ # reduce 155 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 573
-  def _reduce_154( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 579
+  def _reduce_156( val, _values, result )
     result = val[0]
     result = [result] unless result[0].is_a?(Array)
     result << val[2]
@@ -1621,67 +1642,67 @@ module_eval <<'.,.,', 'grammar.ra', 573
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 578
-  def _reduce_155( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 584
+  def _reduce_157( val, _values, result )
     Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
     result = [val[0], val[2]]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 582
-  def _reduce_156( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 588
+  def _reduce_158( val, _values, result )
     Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
     result = [val[0]]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 584
-  def _reduce_157( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 590
+  def _reduce_159( val, _values, result )
     result = [val[0], val[2]]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 586
-  def _reduce_158( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 592
+  def _reduce_160( val, _values, result )
     result = [val[0]]
    result
   end
 .,.,
 
- # reduce 159 omitted
+ # reduce 161 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 591
-  def _reduce_160( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 597
+  def _reduce_162( val, _values, result )
     result = val[1]
    result
   end
 .,.,
 
- # reduce 161 omitted
+ # reduce 163 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 596
-  def _reduce_162( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 602
+  def _reduce_164( val, _values, result )
     result = val[1]
    result
   end
 .,.,
 
- # reduce 163 omitted
+ # reduce 165 omitted
 
- # reduce 164 omitted
+ # reduce 166 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 602
-  def _reduce_165( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 608
+  def _reduce_167( val, _values, result )
     result = ast AST::Variable, :value => val[0]
    result
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 610
-  def _reduce_166( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 616
+  def _reduce_168( val, _values, result )
     if val[1].instance_of?(AST::ASTArray)
         result = val[1]
     else
@@ -1691,21 +1712,21 @@ module_eval <<'.,.,', 'grammar.ra', 610
   end
 .,.,
 
-module_eval <<'.,.,', 'grammar.ra', 612
-  def _reduce_167( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 618
+  def _reduce_169( val, _values, result )
     result = ast AST::ASTArray
    result
   end
 .,.,
 
- # reduce 168 omitted
+ # reduce 170 omitted
 
- # reduce 169 omitted
+ # reduce 171 omitted
 
- # reduce 170 omitted
+ # reduce 172 omitted
 
-module_eval <<'.,.,', 'grammar.ra', 617
-  def _reduce_171( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 623
+  def _reduce_173( val, _values, result )
  result = nil
    result
   end
diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb
index 32b127a..1ff998d 100644
--- a/lib/puppet/parser/scope.rb
+++ b/lib/puppet/parser/scope.rb
@@ -260,11 +260,15 @@ class Puppet::Parser::Scope
     # Set a variable in the current scope.  This will override settings
     # in scopes above, but will not allow variables in the current scope
     # to be reassigned.
-    def setvar(name,value, file = nil, line = nil)
-        #Puppet.debug "Setting %s to '%s' at level %s" %
-        #    [name.inspect,value,self.level]
+    def setvar(name,value, file = nil, line = nil, append = false)
+        #Puppet.debug "Setting %s to '%s' at level %s mode append %s" %
+        #    [name.inspect,value,self.level, append]
         if @symtable.include?(name)
-            error = Puppet::ParseError.new("Cannot reassign variable %s" % name)
+            unless append
+                error = Puppet::ParseError.new("Cannot reassign variable %s" % name)
+            else
+                error = Puppet::ParseError.new("Cannot append, variable %s is defined in this scope" % name)
+            end
             if file
                 error.file = file
             end
@@ -273,7 +277,19 @@ class Puppet::Parser::Scope
             end
             raise error
         end
-        @symtable[name] = value
+        
+        unless append
+            @symtable[name] = value
+        else # append case
+            # lookup the value in the scope if it exists and insert the var
+            @symtable[name] = lookupvar(name)
+            # concatenate if string, append if array, nothing for other types
+            if value.is_a?(Array)
+                @symtable[name] += value
+            else
+                @symtable[name] << value
+            end
+        end
     end
 
     # Return an interpolated string.

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list