[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Paul Berry paul at puppetlabs.com
Tue May 10 07:59:01 UTC 2011


The following commit has been merged in the experimental branch:
commit 25048ecc40db746f7e88bb6c5e1fc4f2c0150a4f
Author: Paul Berry <paul at puppetlabs.com>
Date:   Wed Sep 1 14:18:41 2010 -0700

    [#4685] Classes, defines, and nodes allowed inside of non-evaluated conditionals
    
    Previously, ASTArray#evaluate() was responsible for checking whether
    the user had tried to declare a class, define, or node in a prohibited
    location (such as a conditional construct).  This meant that errors
    would only be reported to the user if the conditional code was
    actually evaluated.
    
    Moved the checking into the parser, so that errors are always
    reported.

diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb
index 432300c..e856570 100644
--- a/lib/puppet/parser/ast/astarray.rb
+++ b/lib/puppet/parser/ast/astarray.rb
@@ -9,11 +9,6 @@ class Puppet::Parser::AST
   class ASTArray < Branch
     include Enumerable
 
-    # True if this ASTArray represents a list of statements in a
-    # context that defines a namespace.  Classes and definitions may
-    # only appear in such a context.
-    attr_accessor :is_a_namespace
-
     # Return a child by index.  Probably never used.
     def [](index)
       @children[index]
@@ -37,17 +32,10 @@ class Puppet::Parser::AST
       }
 
       rets = items.flatten.collect { |child|
-        if child.respond_to? :instantiate
-          if is_a_namespace
-            # no problem, just don't evaluate it.
-          else
-            msg = "Classes, definitions, and nodes may only appear at toplevel or inside other classes"
-            error = Puppet::Error.new(msg)
-            error.line = child.line
-            error.file = child.file
-            raise error
-          end
-        else
+        # Skip things that respond to :instantiate (classes, nodes,
+        # and definitions), because they have already been
+        # instantiated.
+        if !child.respond_to?(:instantiate)
           child.safeevaluate(scope)
         end
       }
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 3185c43..9377c0b 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -28,22 +28,30 @@ prechigh
 preclow
 
 rule
-program:    statements {
-  val[0].is_a_namespace = true
-  result = val[0]
-}
+program:    statements_and_declarations
   | nil
 
-  statements:   statement {
+  statements_and_declarations:   statement_or_declaration {
     result = ast AST::ASTArray, :children => [val[0]]
   }
-  | statements statement {
+  | statements_and_declarations statement_or_declaration {
     val[0].push(val[1])
     result = val[0]
   }
 
+# statements is like statements_and_declarations, but it doesn't allow
+# nested definitions, classes, or nodes.
+statements: statements_and_declarations {
+  val[0].each do |stmt|
+    if stmt.is_a?(AST::TopLevelConstruct)
+      error "Classes, definitions, and nodes may only appear at toplevel or inside other classes"
+    end
+  end
+  result = val[0]
+}
+
 # The main list of valid statements
-statement:    resource
+statement_or_declaration:    resource
   | virtualresource
   | collection
   | assignment
@@ -659,11 +667,10 @@ definition: DEFINE classname argumentlist LBRACE statements RBRACE {
 }
 
 #hostclass: CLASS NAME argumentlist parent LBRACE statements RBRACE {
-hostclass: CLASS classname argumentlist classparent LBRACE statements RBRACE {
+hostclass: CLASS classname argumentlist classparent LBRACE statements_and_declarations RBRACE {
   @lexer.commentpop
   # Our class gets defined in the parent namespace, not our own.
   @lexer.namepop
-  val[5].is_a_namespace = true
   result = Puppet::Parser::AST::Hostclass.new(classname(val[1]),
                                               ast_context(true).merge(:arguments => val[2], :parent => val[3],
                                                                       :code => val[5], :line => val[0][:line]))
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index e4f5149..868716e 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -21,7 +21,7 @@ module Puppet
   module Parser
     class Parser < Racc::Parser
 
-module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 851)
+module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 858)
 
 # It got too annoying having code in a file that needs to be compiled.
 require 'puppet/parser/parser_support'
@@ -36,651 +36,608 @@ require 'puppet/parser/parser_support'
 ##### State transition tables begin ###
 
 racc_action_table = [
-   256,   257,   228,    82,    54,    72,    75,   181,   251,    48,
-    72,    75,   194,   205,   210,   163,   156,   348,    46,    47,
-   344,   184,   201,   203,   206,   209,   162,   352,    54,   182,
-   351,   169,    54,  -168,    72,    75,   241,   242,   102,   305,
-   106,   158,    58,   193,   230,    60,   204,   208,   193,   306,
-   213,   196,   197,   198,   200,   202,    97,   207,   211,    72,
-    75,    72,    75,   163,   199,    59,    58,    71,   245,    60,
-    58,    83,    86,    60,   162,    92,   244,    72,    75,   169,
-    78,   100,   352,   269,    89,   351,    63,    94,    64,    59,
-   228,   326,    71,    59,   162,    59,    83,    86,    83,   268,
-    92,    65,    92,   184,    76,    78,   307,   137,   163,    89,
-   162,    89,    72,    75,    83,   268,   241,   242,    92,   162,
-    59,   163,    59,   137,   169,    62,   254,    89,   207,   211,
-    72,    75,   162,   308,   102,   199,   106,   169,    59,   255,
-   213,   196,   197,   198,  -166,   162,   309,   207,   211,    83,
-   268,   310,    97,    92,   199,    72,    75,   355,   137,   102,
-  -170,   106,    89,    71,   218,   356,   173,    83,    86,   220,
-   313,    92,  -171,    59,    72,    75,    78,   100,    37,   218,
-    89,   249,    38,    94,   220,   246,   247,   173,    71,    11,
-   210,    59,    83,    86,   246,   367,    92,   271,   201,    37,
-  -167,    78,    37,    38,   270,    89,    38,    71,   246,   247,
-    11,    83,    86,    11,    14,    92,    59,    72,    75,    76,
-    78,   102,   278,   106,    89,   277,   213,   196,   197,   198,
-   200,   202,   275,   207,   211,    59,   246,   274,   152,    97,
-   199,    37,   318,    72,    75,   127,   319,   102,  -169,   106,
-    71,    63,    11,    14,    83,    86,  -167,    37,    92,   207,
-   211,   127,  -169,    78,   100,    97,   199,    89,    11,    14,
-    94,  -166,   117,    72,    75,  -185,    71,    82,    59,   336,
-    83,    86,   197,   198,    92,   231,   338,   207,   211,    78,
-   100,   181,    48,    89,   199,    74,    94,   240,  -168,    72,
-    75,   241,   242,   102,    59,   106,    71,   184,   176,    37,
-    83,    86,    59,    38,    92,   345,   322,   175,    76,    78,
-    11,    97,  -172,    89,  -171,    72,    75,  -170,    59,   102,
-   214,   106,    71,    64,    59,   215,    83,    86,   173,   217,
-    92,   -23,   -23,   -23,   -23,    78,   100,    97,   155,    89,
-    72,    75,    94,   122,   102,   152,   106,    82,    71,   223,
-    59,   122,    83,    86,    72,    75,    92,  -168,   102,   225,
-   106,    78,   100,  -166,   276,    89,   226,   117,    94,    44,
-    45,    41,    42,    71,  -169,  -167,    59,    83,    86,    72,
-    75,    92,   226,   102,   229,   106,    78,    71,    52,  -168,
-    89,    83,    86,    72,    75,    92,  -166,   102,  -169,   106,
-    78,    59,   197,   198,    89,  -167,  -171,   207,   211,   365,
-   231,   152,    71,   234,   199,    59,    83,    86,    50,   210,
-    92,   -21,   -21,   -21,   -21,    78,    71,   201,   372,    89,
-    83,    86,    49,   374,    92,    72,    75,   228,  -220,    78,
-    59,   226,   354,    89,   377,    72,    75,    40,    39,   102,
-   237,   106,   341,   nil,    59,   213,   196,   197,   198,   200,
-   202,   nil,   207,   211,   nil,   nil,   nil,    97,   162,   199,
-   nil,   nil,    83,   268,   nil,   nil,    92,   nil,    71,   nil,
-   nil,   137,    83,    86,   nil,    89,    92,    44,    45,    41,
-    42,    78,   100,    72,    75,    89,    59,   102,    94,   106,
-   213,   196,   197,   198,   200,   202,    59,   207,   211,   nil,
-   213,   196,   197,   198,   199,    97,   nil,   207,   211,    72,
-    75,   nil,   nil,   102,   199,   106,    71,   nil,   nil,   nil,
-    83,    86,   nil,   nil,    92,   nil,   nil,   nil,   nil,    78,
-   100,    97,   nil,    89,   nil,   nil,    94,   nil,   nil,    72,
-    75,   nil,    71,   102,    59,   106,    83,    86,   nil,   nil,
-    92,   nil,   nil,   nil,   nil,    78,   100,   nil,   nil,    89,
-   nil,    97,    94,   nil,   nil,    72,    75,   nil,   nil,   102,
-    59,   106,    71,   nil,   nil,   nil,    83,    86,   nil,   nil,
-    92,   nil,   nil,   nil,   nil,    78,   100,    97,   nil,    89,
-    72,    75,    94,   nil,   102,   nil,   106,   nil,    71,   nil,
-    59,   nil,    83,    86,    72,    75,    92,   nil,   102,   nil,
-   nil,    78,   100,   nil,   nil,    89,   nil,   nil,    94,   nil,
-   nil,   nil,   nil,    71,   nil,   nil,    59,    83,    86,    72,
-    75,    92,   nil,   102,   nil,   106,    78,    71,   nil,   nil,
-    89,    83,   143,   nil,   nil,    92,   nil,   nil,   nil,   nil,
-   137,    59,   nil,   nil,    89,    72,    75,   nil,   nil,   102,
-   nil,   106,    71,   nil,   nil,    59,    83,    86,   nil,   nil,
-    92,   nil,   nil,   nil,   nil,    78,   nil,    97,   nil,    89,
-   nil,    72,    75,   nil,   nil,   102,   nil,   106,    71,   nil,
-    59,   nil,    83,    86,   nil,   nil,    92,   nil,   nil,   nil,
-   nil,    78,   100,    97,   nil,    89,   nil,   nil,    94,   nil,
-   nil,    72,    75,   nil,    71,   102,    59,   106,    83,    86,
-   nil,   nil,    92,   nil,   nil,   nil,   nil,    78,   100,   nil,
-   nil,    89,   nil,    97,    94,   nil,   nil,    72,    75,   nil,
-   nil,   102,    59,   106,    71,   nil,   nil,   nil,    83,    86,
-   nil,   nil,    92,   nil,   nil,   nil,   nil,    78,   100,    97,
-   nil,    89,    72,    75,    94,   nil,   102,   nil,   106,   nil,
-    71,   nil,    59,   nil,    83,    86,   nil,   nil,    92,   nil,
-   nil,   nil,   nil,    78,   100,   nil,   nil,    89,    72,    75,
-    94,   nil,   102,   nil,   106,    71,   nil,   nil,    59,    83,
-    86,   nil,   nil,    92,   nil,   nil,   nil,   nil,    78,   nil,
-    97,   nil,    89,   nil,    72,    75,   nil,   nil,   102,   nil,
-   106,    71,   nil,    59,   nil,    83,    86,   nil,   nil,    92,
-   nil,   nil,    72,    75,    78,   100,    97,   nil,    89,    72,
-    75,    94,   nil,   102,   nil,   106,   nil,    71,   nil,    59,
-   nil,    83,    86,   nil,   nil,    92,   nil,   nil,   nil,   nil,
-    78,   100,   nil,   nil,    89,   162,   nil,    94,   nil,    83,
-   268,   nil,    71,    92,   nil,    59,    83,    86,   137,   nil,
-    92,   nil,    89,   nil,   nil,    78,    72,    75,   nil,    89,
-   102,   nil,   106,    59,   nil,   nil,   nil,   nil,   nil,   nil,
-    59,   nil,   nil,   nil,   nil,    72,    75,   nil,    97,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    71,
-   nil,   nil,   nil,    83,    86,   nil,   nil,    92,   177,   nil,
-    72,    75,    78,   100,   nil,   nil,    89,   nil,    71,    94,
-   nil,   nil,    83,    86,   nil,   nil,    92,    59,    72,    75,
-    76,    78,   102,   339,   106,    89,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    71,   nil,   nil,    59,    83,    86,   nil,
-    97,    92,   nil,    72,    75,    76,    78,   102,   nil,   106,
-    89,    71,   nil,    72,    75,    83,    86,   nil,   nil,    92,
-   nil,    59,   nil,   nil,    78,   100,   nil,   nil,    89,    72,
-    75,    94,   nil,   nil,   nil,   nil,    71,   nil,   nil,    59,
-    83,    86,   nil,   nil,    92,   nil,   162,   nil,   nil,    78,
-    83,   268,   nil,    89,    92,   nil,    72,    75,   nil,   137,
-   102,   nil,   162,    89,    59,   nil,    83,   268,   nil,   nil,
-    92,   nil,    72,    75,    59,   137,   102,   nil,   106,    89,
-   nil,   nil,    72,    75,   nil,   nil,   102,   nil,   106,    71,
-    59,   nil,   nil,    83,   268,   nil,   nil,    92,   nil,   nil,
-   nil,   nil,   137,   nil,    97,    71,    89,   nil,   nil,    83,
-    86,   nil,   nil,    92,   nil,    71,   nil,    59,    78,    83,
-    86,   nil,    89,    92,   nil,   nil,   nil,   nil,    78,   100,
-    72,    75,    89,    59,   102,    94,   106,   213,   196,   197,
-   198,   200,   202,    59,   207,   211,   nil,   nil,   nil,    72,
-    75,   199,    97,   102,   189,   106,    72,    75,   nil,   nil,
-   102,   nil,   106,    71,   nil,   nil,   nil,    83,    86,   nil,
-   nil,    92,   nil,   nil,   nil,   nil,    78,   100,    72,    75,
-    89,   nil,    71,    94,   nil,   nil,    83,    86,   nil,    71,
-    92,    59,   nil,    83,    86,    78,   nil,    92,   nil,    89,
-   nil,   nil,    78,    72,    75,   nil,    89,   102,   nil,   106,
-    59,   162,   nil,   nil,   nil,    83,   268,    59,   nil,    92,
-   nil,    72,    75,   nil,   137,   102,   nil,   106,    89,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    71,   nil,   nil,    59,
-    83,    86,   nil,    97,    92,   nil,   nil,   nil,   nil,    78,
-   nil,    72,    75,    89,    71,   102,   nil,   106,    83,    86,
-   nil,   nil,    92,   nil,    59,   nil,   nil,    78,   100,   nil,
-   nil,    89,   nil,    97,    94,   nil,   nil,    72,    75,   nil,
-   nil,   102,    59,   106,    71,   nil,   nil,   nil,    83,    86,
-   nil,   nil,    92,   nil,   nil,   nil,   nil,    78,   100,    97,
-   nil,    89,   nil,   nil,    94,   nil,   nil,   nil,   nil,   nil,
-    71,   nil,    59,   nil,    83,    86,   212,   nil,    92,   nil,
-   nil,   nil,   nil,    78,   100,   205,   210,    89,   nil,   nil,
-    94,   nil,   nil,   nil,   201,   203,   206,   209,    59,   nil,
-   205,   210,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   201,
-   203,   206,   209,   nil,   nil,   nil,   nil,   nil,   204,   208,
-   nil,   nil,   213,   196,   197,   198,   200,   202,   nil,   207,
-   211,   nil,   nil,   204,   208,   nil,   199,   213,   196,   197,
-   198,   200,   202,   nil,   207,   211,   205,   210,   nil,   nil,
-   nil,   199,   nil,   nil,   nil,   201,   203,   206,   209,   nil,
-   nil,   205,   210,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   201,   203,   206,   209,   nil,   nil,   nil,   nil,   nil,   204,
-   208,   nil,   nil,   213,   196,   197,   198,   200,   202,   nil,
-   207,   211,   nil,   nil,   204,   208,   nil,   199,   213,   196,
-   197,   198,   200,   202,   nil,   207,   211,   205,   210,   nil,
-   nil,   nil,   199,   nil,   nil,   nil,   201,   203,   206,   209,
-   nil,   nil,   205,   210,   nil,   nil,   nil,   nil,   nil,   nil,
-   273,   201,   203,   206,   209,   nil,   nil,   nil,   nil,   nil,
-   nil,   208,   nil,   nil,   213,   196,   197,   198,   200,   202,
-   nil,   207,   211,   nil,   nil,   204,   208,   nil,   199,   213,
-   196,   197,   198,   200,   202,   nil,   207,   211,   205,   210,
-   nil,   nil,   nil,   199,   nil,   nil,   nil,   201,   203,   206,
-   209,   nil,   nil,    26,   210,    33,     1,   nil,     7,    12,
-   nil,    17,   201,    23,   nil,    29,   nil,     3,   nil,   nil,
-    11,    14,   nil,   210,   nil,   213,   196,   197,   198,   200,
-   202,   201,   207,   211,   nil,   nil,   nil,   nil,   nil,   199,
-   213,   196,   197,   198,   200,   202,   nil,   207,   211,   nil,
-   nil,   324,   nil,   nil,   199,   nil,   nil,   nil,   nil,   213,
-   196,   197,   198,   200,   202,   nil,   207,   211,   nil,   nil,
-   379,   nil,    26,   199,    33,     1,   nil,     7,    12,   nil,
-    17,   nil,    23,   nil,    29,   nil,     3,   nil,   nil,    11,
-    14,    26,   382,    33,     1,   nil,     7,    12,   nil,    17,
-   nil,    23,   nil,    29,   nil,     3,   nil,   nil,    11,    14,
-   nil,   296,   nil,    26,   nil,    33,     1,   nil,     7,    12,
-   nil,    17,   nil,    23,   nil,    29,   nil,     3,   nil,   nil,
-    11,    14,    26,   364,    33,     1,   nil,     7,    12,   nil,
-    17,   nil,    23,   nil,    29,   nil,     3,   nil,   nil,    11,
-    14,   nil,   381,   nil,    26,   nil,    33,     1,   nil,     7,
-    12,   nil,    17,   nil,    23,   nil,    29,   nil,     3,   nil,
-   nil,    11,    14,    26,   383,    33,     1,   nil,     7,    12,
-   nil,    17,   nil,    23,   nil,    29,   nil,     3,   nil,   nil,
-    11,    14,   nil,   357,   nil,    26,   nil,    33,     1,   nil,
-     7,    12,   nil,    17,   nil,    23,   nil,    29,   nil,     3,
-   nil,   nil,    11,    14,    26,   363,    33,     1,   nil,     7,
-    12,   nil,    17,   nil,    23,   nil,    29,   nil,     3,   nil,
-   nil,    11,    14,   nil,   375,   nil,    26,   nil,    33,     1,
-   nil,     7,    12,   nil,    17,   nil,    23,   nil,    29,   nil,
-     3,   nil,   nil,    11,    14,    26,   304,    33,     1,   nil,
-     7,    12,   nil,    17,   nil,    23,   nil,    29,   nil,     3,
-   nil,   nil,    11,    14,   nil,   349,   nil,    26,   nil,    33,
-     1,   nil,     7,    12,   nil,    17,   nil,    23,   nil,    29,
-   nil,     3,   nil,   nil,    11,    14,    26,   nil,    33,     1,
-   nil,     7,    12,   nil,    17,   nil,    23,   nil,    29,   nil,
-     3,   nil,   nil,    11,    14,    26,   nil,    33,     1,   nil,
-     7,    12,   nil,    17,   nil,    23,   nil,    29,   nil,     3,
-   nil,   nil,    11,    14 ]
+   242,   243,    55,   231,   356,   112,   157,   113,    78,   298,
+    68,    71,   357,   181,   186,   326,   344,   340,    55,   295,
+   114,   231,   177,   179,   182,   185,   170,   294,    68,    71,
+   286,   158,   100,   285,   103,    68,    71,   291,   292,    55,
+    59,   291,   292,    61,   111,   233,   180,   184,   198,   231,
+   189,   172,   173,   174,   176,   178,    59,   183,   187,    61,
+  -168,    66,   170,    60,   175,    79,    81,   186,   202,    88,
+   112,   166,    79,   252,    74,   177,    88,    59,    84,    60,
+    61,   139,    68,    71,   333,    84,   100,   117,   103,    60,
+    36,  -170,    68,    71,    38,   306,    60,   307,   203,   240,
+    60,    10,   203,   189,   172,   173,   174,   176,   178,   202,
+   183,   187,   241,   202,   209,    66,   218,   175,   209,    79,
+    81,   219,   284,    88,   309,   202,   256,   283,    74,    79,
+   252,   308,    84,    88,   203,    68,    71,   310,   139,   100,
+   203,   103,    84,    60,   218,   202,   256,   367,    36,   219,
+   209,   202,    38,    60,    68,    71,   209,    95,   100,    10,
+   103,    68,    71,    68,    71,   100,   337,   103,    66,   335,
+   199,   154,    79,    81,   173,   174,    88,   183,   187,   183,
+   187,    74,    99,    95,   175,    84,   175,    66,    90,   311,
+   337,    79,    81,   335,    66,    88,    60,   287,    79,    81,
+    74,   198,    88,   315,    84,    68,    71,    74,    99,  -172,
+   213,    84,    68,    71,    90,    60,   100,    36,   103,    68,
+    71,    38,    60,   100,   318,   103,    68,    71,    10,    15,
+    36,  -167,   213,   355,    38,   167,    36,   313,   202,   154,
+   127,    10,    79,   252,   323,    66,    88,    10,    15,    79,
+    81,   139,    66,    88,   166,    84,    79,    81,    74,   202,
+    88,   229,    84,    79,   252,    74,    60,    88,    49,    84,
+    68,    71,   139,    60,    78,  -186,    84,    47,    48,    49,
+    60,   329,    36,   170,   183,   187,   127,    60,  -169,    68,
+    71,   175,    70,    10,    15,    68,    71,   161,  -171,   100,
+   289,   103,  -169,    66,   291,   292,    60,    79,    81,   258,
+  -167,    88,  -170,   256,   257,    72,    74,    95,  -168,    60,
+    84,   156,    66,   154,    68,    71,    79,    81,    66,   122,
+    88,    60,    79,    81,    72,    74,    88,  -170,  -173,    84,
+  -172,    74,    99,    68,    71,    84,  -171,   100,    90,   103,
+    60,   200,   334,    68,    71,   213,    60,   202,   215,   254,
+   338,    79,   252,   173,   174,    88,   122,   296,   183,   187,
+   139,   256,   257,   216,    84,   175,    66,   234,    68,    71,
+    79,    81,   113,   117,    88,    60,   202,   217,    78,    74,
+    79,   252,   353,    84,    88,    53,    68,    71,   223,   139,
+   100,   260,   103,    84,    60,    43,    44,    40,    41,   358,
+    52,    66,    51,   225,    60,    79,    81,  -169,   229,    88,
+   365,    68,    71,    72,    74,   100,   238,   103,    84,    66,
+   228,  -167,   234,    79,    81,   372,   373,    88,  -169,    60,
+  -167,  -170,    74,    95,  -168,  -172,    84,    68,    71,    45,
+   375,   100,   229,   103,    66,  -221,   232,    60,    79,    81,
+   378,    39,    88,   -24,   -24,   -24,   -24,    74,    99,    95,
+  -168,    84,   383,   384,    90,   nil,   nil,    68,    71,   nil,
+    66,   100,    60,   103,    79,    81,   nil,   nil,    88,   -22,
+   -22,   -22,   -22,    74,    99,   nil,   nil,    84,   nil,    95,
+    90,   nil,   nil,    68,    71,   nil,   nil,   100,    60,   103,
+    66,   nil,   nil,   nil,    79,    81,   nil,   nil,    88,    43,
+    44,    40,    41,    74,    99,    95,   nil,    84,   nil,   nil,
+    90,   nil,   nil,    68,    71,   nil,    66,   100,    60,   103,
+    79,    81,   nil,   nil,    88,   nil,   nil,   nil,   nil,    74,
+    99,   nil,   nil,    84,   nil,    95,    90,   nil,   nil,    68,
+    71,   nil,   nil,   100,    60,   103,    66,   nil,   nil,   nil,
+    79,    81,   nil,   nil,    88,   nil,   nil,    68,    71,    74,
+    99,   100,   nil,    84,    68,    71,    90,   nil,   100,   nil,
+   103,   nil,    66,   nil,    60,   nil,    79,    81,   nil,   nil,
+    88,   nil,   nil,   nil,   nil,    74,    95,   nil,   nil,    84,
+    66,   nil,   nil,   nil,    79,   144,   nil,    66,    88,   nil,
+    60,    79,    81,   139,   nil,    88,   nil,    84,   nil,   nil,
+    74,    99,   nil,   nil,    84,    68,    71,    90,    60,   100,
+   nil,   103,   nil,   nil,   nil,    60,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    68,    71,   nil,    95,   100,   nil,
+   103,    68,    71,   nil,   nil,   100,   nil,   103,    66,   nil,
+   nil,   nil,    79,    81,   nil,   nil,    88,   nil,   nil,    68,
+    71,    74,    99,   nil,   nil,    84,   nil,    66,    90,   nil,
+   nil,    79,    81,   nil,    66,    88,    60,   nil,    79,    81,
+    74,   nil,    88,   nil,    84,    68,    71,    74,   nil,   nil,
+   nil,    84,   202,   nil,   nil,    60,    79,   252,   nil,   nil,
+    88,   nil,    60,   nil,   nil,   139,    68,    71,   162,    84,
+   100,   nil,   103,   nil,   nil,   nil,   nil,   nil,    66,   nil,
+    60,   nil,    79,    81,   nil,   nil,    88,   nil,    95,   nil,
+    72,    74,    68,    71,   nil,    84,   100,   nil,   103,    66,
+   nil,   nil,   nil,    79,    81,   nil,    60,    88,   nil,   nil,
+   nil,   nil,    74,    99,    95,   nil,    84,    68,    71,    90,
+   nil,   nil,   nil,   nil,   nil,    66,   nil,    60,   nil,    79,
+    81,   nil,   nil,    88,   nil,   nil,   nil,   nil,    74,    99,
+   327,   nil,    84,    68,    71,    90,   nil,   100,   nil,   103,
+    66,   nil,   nil,    60,    79,    81,   nil,   nil,    88,   nil,
+   nil,   nil,    72,    74,   nil,    95,   nil,    84,    68,    71,
+   nil,   nil,   100,   nil,   103,   nil,    66,   nil,    60,   nil,
+    79,    81,    68,    71,    88,   nil,   100,   nil,   103,    74,
+    99,   nil,   nil,    84,   nil,   nil,    90,   nil,   nil,   nil,
+   nil,    66,   nil,   nil,    60,    79,    81,    68,    71,    88,
+   nil,   100,   nil,   103,    74,    66,   nil,   nil,    84,    79,
+    81,    68,    71,    88,   nil,   100,   nil,   nil,    74,    60,
+   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    66,   nil,   nil,    60,    79,    81,   nil,   nil,    88,   nil,
+   nil,    68,    71,    74,    66,   nil,   nil,    84,    79,   252,
+   nil,   nil,    88,   nil,   nil,   nil,   nil,   139,    60,    68,
+    71,    84,   nil,   100,   nil,   103,   nil,   nil,   nil,   nil,
+   nil,   nil,    60,   nil,   202,   nil,   nil,   nil,    79,   252,
+   nil,    95,    88,   nil,   nil,   nil,   nil,   139,   nil,    68,
+    71,    84,    66,   100,   nil,   103,    79,    81,   nil,   nil,
+    88,   nil,    60,   nil,   nil,    74,    99,   nil,   nil,    84,
+   nil,    95,    90,   nil,   nil,    68,    71,   nil,   nil,   100,
+    60,   103,    66,   nil,   nil,   nil,    79,    81,   nil,   nil,
+    88,   nil,   nil,   nil,   nil,    74,    99,    95,   nil,    84,
+   nil,   nil,    90,   nil,   nil,    68,    71,   nil,    66,   100,
+    60,   103,    79,    81,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,    74,    99,   nil,   nil,    84,   nil,    95,    90,   nil,
+   nil,    68,    71,   nil,   nil,   100,    60,   103,    66,   nil,
+   nil,   nil,    79,    81,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,    74,    99,    95,   nil,    84,   nil,   nil,    90,   nil,
+   nil,    68,    71,   nil,    66,   100,    60,   103,    79,    81,
+   nil,   nil,    88,   nil,   nil,   nil,   nil,    74,    99,   nil,
+   nil,    84,   nil,    95,    90,   nil,   nil,    68,    71,   nil,
+   nil,   100,    60,   103,    66,   nil,   nil,   nil,    79,    81,
+   nil,   nil,    88,   nil,   nil,   nil,   nil,    74,    99,    95,
+   nil,    84,   nil,   nil,    90,   nil,   nil,    68,    71,   nil,
+    66,   100,    60,   103,    79,    81,   nil,   nil,    88,   nil,
+   nil,   nil,   nil,    74,    99,   nil,   nil,    84,   nil,    95,
+    90,   nil,   nil,    68,    71,   nil,   nil,   100,    60,   103,
+    66,   nil,   nil,   nil,    79,    81,   nil,   nil,    88,   nil,
+   nil,   nil,   nil,    74,    99,    95,   nil,    84,    68,    71,
+    90,   nil,   100,   193,   103,   nil,    66,   nil,    60,   nil,
+    79,    81,   nil,   nil,    88,   nil,   nil,   nil,   nil,    74,
+    99,   nil,   nil,    84,    68,    71,    90,   nil,   100,   nil,
+   103,    66,   nil,   nil,    60,    79,    81,   nil,   nil,    88,
+   nil,   nil,   nil,   nil,    74,   nil,    95,   nil,    84,   nil,
+    68,    71,   nil,   nil,   100,   nil,   103,    66,   nil,    60,
+   nil,    79,    81,   nil,   nil,    88,   nil,   nil,   nil,   nil,
+    74,    99,    95,   nil,    84,   nil,   nil,    90,   nil,   nil,
+   nil,   nil,   nil,    66,   nil,    60,   nil,    79,    81,   188,
+   nil,    88,   nil,   nil,   nil,   nil,    74,    99,   181,   186,
+    84,   nil,   nil,    90,   nil,   nil,   nil,   177,   179,   182,
+   185,    60,   nil,   181,   186,   nil,   nil,   nil,   nil,   nil,
+   nil,   282,   177,   179,   182,   185,   nil,   nil,   nil,   nil,
+   nil,   180,   184,   nil,   nil,   189,   172,   173,   174,   176,
+   178,   nil,   183,   187,   nil,   nil,   180,   184,   nil,   175,
+   189,   172,   173,   174,   176,   178,   nil,   183,   187,   181,
+   186,   nil,   nil,   nil,   175,   nil,   nil,   nil,   177,   179,
+   182,   185,   nil,   nil,   181,   186,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   177,   179,   182,   185,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   189,   172,   173,   174,
+   176,   178,   nil,   183,   187,   nil,   nil,   180,   184,   nil,
+   175,   189,   172,   173,   174,   176,   178,   nil,   183,   187,
+   181,   186,   nil,   nil,   nil,   175,   nil,   nil,   nil,   177,
+   179,   182,   185,   nil,   nil,   181,   186,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   177,   179,   182,   185,   nil,   nil,
+   nil,   nil,   nil,   180,   184,   nil,   nil,   189,   172,   173,
+   174,   176,   178,   nil,   183,   187,   nil,   nil,   nil,   184,
+   nil,   175,   189,   172,   173,   174,   176,   178,   nil,   183,
+   187,   181,   186,   nil,   nil,   nil,   175,   nil,   nil,   nil,
+   177,   179,   182,   185,   nil,   nil,   nil,   186,   nil,   189,
+   172,   173,   174,   176,   178,   177,   183,   187,   nil,   nil,
+   nil,   nil,   nil,   175,   180,   184,   186,   nil,   189,   172,
+   173,   174,   176,   178,   177,   183,   187,   nil,   nil,   nil,
+   nil,   186,   175,   189,   172,   173,   174,   176,   178,   177,
+   183,   187,   nil,   nil,   nil,   nil,   nil,   175,   nil,   nil,
+   nil,   nil,   189,   172,   173,   174,   176,   178,   nil,   183,
+   187,   280,   nil,   nil,   nil,   nil,   175,   189,   172,   173,
+   174,   176,   178,   nil,   183,   187,   nil,   nil,   nil,   nil,
+   325,   175,    26,   nil,    32,     1,   nil,     8,    11,   nil,
+    18,   nil,    23,   nil,    29,   nil,     2,   nil,   nil,    10,
+    15,    26,   363,    32,     1,   nil,     8,    11,   nil,    18,
+   nil,    23,   nil,    29,   nil,     2,   nil,   nil,    10,    15,
+   nil,   382,   nil,    26,   nil,    32,     1,   nil,     8,    11,
+   nil,    18,   nil,    23,   nil,    29,   nil,     2,   nil,   nil,
+    10,    15,    26,   380,    32,     1,   nil,     8,    11,   nil,
+    18,   nil,    23,   nil,    29,   nil,     2,   nil,   nil,    10,
+    15,   nil,   376,   nil,    26,   nil,    32,     1,   nil,     8,
+    11,   nil,    18,   nil,    23,   nil,    29,   nil,     2,   nil,
+   nil,    10,    15,    26,   305,    32,     1,   nil,     8,    11,
+   nil,    18,   nil,    23,   nil,    29,   nil,     2,   nil,   nil,
+    10,    15,   nil,   nil,   nil,    26,   nil,    32,     1,   nil,
+     8,    11,   nil,    18,   nil,    23,   nil,    29,   nil,     2,
+   nil,   nil,    10,    15,    26,   nil,    32,     1,   nil,     8,
+    11,   nil,    18,   nil,    23,   nil,    29,   nil,     2,   nil,
+   nil,    10,    15,    26,   nil,    32,     1,   nil,     8,    11,
+   nil,    18,   nil,    23,   nil,    29,   nil,     2,   nil,   nil,
+    10,    15,    26,   nil,    32,     1,   nil,     8,    11,   nil,
+    18,   nil,    23,   nil,    29,   nil,     2,   nil,   nil,    10,
+    15,   189,   172,   173,   174,   176,   178,   nil,   183,   187,
+   189,   172,   173,   174,   nil,   175,   nil,   183,   187,   189,
+   172,   173,   174,   nil,   175,   nil,   183,   187,   nil,   nil,
+   nil,   nil,   nil,   175 ]
 
 racc_action_check = [
-   180,   180,   152,    86,   156,   106,   106,   272,   174,     7,
-   277,   277,   106,   180,   180,    65,    55,   277,     7,     7,
-   272,    86,   180,   180,   180,   180,    65,   296,    17,    80,
-   296,    65,   158,    95,   202,   202,   174,   174,   202,   218,
-   202,    55,   156,   106,   152,   156,   180,   180,   277,   219,
-   180,   180,   180,   180,   180,   180,   202,   180,   180,   181,
-   181,   368,   368,   239,   180,   156,    17,   202,   165,    17,
-   158,   202,   202,   158,   239,   202,   165,   182,   182,   239,
-   202,   202,   349,   182,   202,   349,    22,   202,    22,    17,
-   143,   243,   181,   158,   368,   202,   181,   181,   368,   368,
-   181,    22,   368,   143,   181,   181,   220,   368,   163,   181,
-   182,   368,   355,   355,   182,   182,   243,   243,   182,   163,
-   181,    62,   368,   182,   163,    22,   178,   182,   281,   281,
-   351,   351,    62,   221,   351,   281,   351,    62,   182,   178,
-   285,   285,   285,   285,   101,   355,   221,   285,   285,   355,
-   355,   224,   351,   355,   285,   341,   341,   300,   355,   341,
-    91,   341,   355,   351,   308,   300,   226,   351,   351,   308,
-   227,   351,    90,   355,   184,   184,   351,   351,    12,   122,
-   351,   171,    12,   351,   122,   171,   171,   229,   341,    12,
-   286,   351,   341,   341,   343,   343,   341,   184,   286,     1,
-    87,   341,    30,     1,   183,   341,    30,   184,   183,   183,
-     1,   184,   184,    30,    30,   184,   341,   196,   196,   184,
-   184,   196,   195,   196,   184,   195,   286,   286,   286,   286,
-   286,   286,   188,   286,   286,   184,   188,   188,   231,   196,
-   286,   120,   232,   197,   197,   120,   233,   197,   103,   197,
-   196,    85,   120,   120,   196,   196,   105,    43,   196,   280,
-   280,    43,    84,   196,   196,   197,   280,   196,    43,    43,
-   196,    81,   215,    23,    23,    78,   197,    23,   196,   250,
-   197,   197,   279,   279,   197,   252,   253,   279,   279,   197,
-   197,    77,    71,   197,   279,    23,   197,   160,    68,    26,
-    26,   160,   160,    26,   197,    26,    23,   268,    67,   234,
-    23,    23,   211,   234,    23,   274,   234,    66,    23,    23,
-   234,    26,   107,    23,   108,   198,   198,   109,   207,   198,
-   114,   198,    26,   115,    23,   119,    26,    26,    64,   121,
-    26,    35,    35,    35,    35,    26,    26,   198,    52,    26,
-    29,    29,    26,    51,    29,    50,    29,   127,   198,   132,
-    26,    36,   198,   198,   307,   307,   198,   133,   307,   136,
-   307,   198,   198,   138,   192,   198,   139,    33,   198,    34,
-    34,    34,    34,    29,   140,   142,   198,    29,    29,   305,
-   305,    29,   315,   305,   144,   305,    29,   307,    16,   327,
-    29,   307,   307,   199,   199,   307,   328,   199,   330,   199,
-   307,    29,   297,   297,   307,   331,   332,   297,   297,   337,
-   153,   175,   305,   154,   297,   307,   305,   305,     9,   288,
-   305,    28,    28,    28,    28,   305,   199,   288,   352,   305,
-   199,   199,     8,   356,   199,   298,   298,   173,   367,   199,
-   305,   172,   298,   199,   369,   200,   200,     3,     2,   200,
-   157,   200,   263,   nil,   199,   288,   288,   288,   288,   288,
-   288,   nil,   288,   288,   nil,   nil,   nil,   200,   298,   288,
-   nil,   nil,   298,   298,   nil,   nil,   298,   nil,   200,   nil,
-   nil,   298,   200,   200,   nil,   298,   200,     4,     4,     4,
-     4,   200,   200,    39,    39,   200,   298,    39,   200,    39,
-   293,   293,   293,   293,   293,   293,   200,   293,   293,   nil,
-   283,   283,   283,   283,   293,    39,   nil,   283,   283,   201,
-   201,   nil,   nil,   201,   283,   201,    39,   nil,   nil,   nil,
-    39,    39,   nil,   nil,    39,   nil,   nil,   nil,   nil,    39,
-    39,   201,   nil,    39,   nil,   nil,    39,   nil,   nil,    46,
-    46,   nil,   201,    46,    39,    46,   201,   201,   nil,   nil,
-   201,   nil,   nil,   nil,   nil,   201,   201,   nil,   nil,   201,
-   nil,    46,   201,   nil,   nil,    47,    47,   nil,   nil,    47,
-   201,    47,    46,   nil,   nil,   nil,    46,    46,   nil,   nil,
-    46,   nil,   nil,   nil,   nil,    46,    46,    47,   nil,    46,
-    48,    48,    46,   nil,    48,   nil,    48,   nil,    47,   nil,
-    46,   nil,    47,    47,    49,    49,    47,   nil,    49,   nil,
-   nil,    47,    47,   nil,   nil,    47,   nil,   nil,    47,   nil,
-   nil,   nil,   nil,    48,   nil,   nil,    47,    48,    48,   176,
-   176,    48,   nil,   176,   nil,   176,    48,    49,   nil,   nil,
-    48,    49,    49,   nil,   nil,    49,   nil,   nil,   nil,   nil,
-    49,    48,   nil,   nil,    49,   203,   203,   nil,   nil,   203,
-   nil,   203,   176,   nil,   nil,    49,   176,   176,   nil,   nil,
-   176,   nil,   nil,   nil,   nil,   176,   nil,   203,   nil,   176,
-   nil,   204,   204,   nil,   nil,   204,   nil,   204,   203,   nil,
-   176,   nil,   203,   203,   nil,   nil,   203,   nil,   nil,   nil,
-   nil,   203,   203,   204,   nil,   203,   nil,   nil,   203,   nil,
-   nil,   205,   205,   nil,   204,   205,   203,   205,   204,   204,
-   nil,   nil,   204,   nil,   nil,   nil,   nil,   204,   204,   nil,
-   nil,   204,   nil,   205,   204,   nil,   nil,   100,   100,   nil,
-   nil,   100,   204,   100,   205,   nil,   nil,   nil,   205,   205,
-   nil,   nil,   205,   nil,   nil,   nil,   nil,   205,   205,   100,
-   nil,   205,    63,    63,   205,   nil,    63,   nil,    63,   nil,
-   100,   nil,   205,   nil,   100,   100,   nil,   nil,   100,   nil,
-   nil,   nil,   nil,   100,   100,   nil,   nil,   100,   208,   208,
-   100,   nil,   208,   nil,   208,    63,   nil,   nil,   100,    63,
-    63,   nil,   nil,    63,   nil,   nil,   nil,   nil,    63,   nil,
-   208,   nil,    63,   nil,   209,   209,   nil,   nil,   209,   nil,
-   209,   208,   nil,    63,   nil,   208,   208,   nil,   nil,   208,
-   nil,   nil,   269,   269,   208,   208,   209,   nil,   208,   276,
-   276,   208,   nil,   276,   nil,   276,   nil,   209,   nil,   208,
-   nil,   209,   209,   nil,   nil,   209,   nil,   nil,   nil,   nil,
-   209,   209,   nil,   nil,   209,   269,   nil,   209,   nil,   269,
-   269,   nil,   276,   269,   nil,   209,   276,   276,   269,   nil,
-   276,   nil,   269,   nil,   nil,   276,   256,   256,   nil,   276,
-   256,   nil,   256,   269,   nil,   nil,   nil,   nil,   nil,   nil,
-   276,   nil,   nil,   nil,   nil,    74,    74,   nil,   256,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   256,
-   nil,   nil,   nil,   256,   256,   nil,   nil,   256,    74,   nil,
-   254,   254,   256,   256,   nil,   nil,   256,   nil,    74,   256,
-   nil,   nil,    74,    74,   nil,   nil,    74,   256,    75,    75,
-    74,    74,    75,   254,    75,    74,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   254,   nil,   nil,    74,   254,   254,   nil,
-    75,   254,   nil,   248,   248,   254,   254,   248,   nil,   248,
-   254,    75,   nil,   245,   245,    75,    75,   nil,   nil,    75,
-   nil,   254,   nil,   nil,    75,    75,   nil,   nil,    75,   244,
-   244,    75,   nil,   nil,   nil,   nil,   248,   nil,   nil,    75,
-   248,   248,   nil,   nil,   248,   nil,   245,   nil,   nil,   248,
-   245,   245,   nil,   248,   245,   nil,   225,   225,   nil,   245,
-   225,   nil,   244,   245,   248,   nil,   244,   244,   nil,   nil,
-   244,   nil,    82,    82,   245,   244,    82,   nil,    82,   244,
-   nil,   nil,   210,   210,   nil,   nil,   210,   nil,   210,   225,
-   244,   nil,   nil,   225,   225,   nil,   nil,   225,   nil,   nil,
-   nil,   nil,   225,   nil,   210,    82,   225,   nil,   nil,    82,
-    82,   nil,   nil,    82,   nil,   210,   nil,   225,    82,   210,
-   210,   nil,    82,   210,   nil,   nil,   nil,   nil,   210,   210,
-   213,   213,   210,    82,   213,   210,   213,   284,   284,   284,
-   284,   284,   284,   210,   284,   284,   nil,   nil,   nil,   102,
-   102,   284,   213,   102,   102,   102,   230,   230,   nil,   nil,
-   230,   nil,   230,   213,   nil,   nil,   nil,   213,   213,   nil,
-   nil,   213,   nil,   nil,   nil,   nil,   213,   213,   214,   214,
-   213,   nil,   102,   213,   nil,   nil,   102,   102,   nil,   230,
-   102,   213,   nil,   230,   230,   102,   nil,   230,   nil,   102,
-   nil,   nil,   230,   228,   228,   nil,   230,   228,   nil,   228,
-   102,   214,   nil,   nil,   nil,   214,   214,   230,   nil,   214,
-   nil,    94,    94,   nil,   214,    94,   nil,    94,   214,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   228,   nil,   nil,   214,
-   228,   228,   nil,    94,   228,   nil,   nil,   nil,   nil,   228,
-   nil,    97,    97,   228,    94,    97,   nil,    97,    94,    94,
-   nil,   nil,    94,   nil,   228,   nil,   nil,    94,    94,   nil,
-   nil,    94,   nil,    97,    94,   nil,   nil,   206,   206,   nil,
-   nil,   206,    94,   206,    97,   nil,   nil,   nil,    97,    97,
-   nil,   nil,    97,   nil,   nil,   nil,   nil,    97,    97,   206,
-   nil,    97,   nil,   nil,    97,   nil,   nil,   nil,   nil,   nil,
-   206,   nil,    97,   nil,   206,   206,   111,   nil,   206,   nil,
-   nil,   nil,   nil,   206,   206,   111,   111,   206,   nil,   nil,
-   206,   nil,   nil,   nil,   111,   111,   111,   111,   206,   nil,
-   124,   124,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   124,
-   124,   124,   124,   nil,   nil,   nil,   nil,   nil,   111,   111,
-   nil,   nil,   111,   111,   111,   111,   111,   111,   nil,   111,
-   111,   nil,   nil,   124,   124,   nil,   111,   124,   124,   124,
-   124,   124,   124,   nil,   124,   124,   130,   130,   nil,   nil,
-   nil,   124,   nil,   nil,   nil,   130,   130,   130,   130,   nil,
-   nil,   131,   131,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   131,   131,   131,   131,   nil,   nil,   nil,   nil,   nil,   130,
-   130,   nil,   nil,   130,   130,   130,   130,   130,   130,   nil,
-   130,   130,   nil,   nil,   131,   131,   nil,   130,   131,   131,
-   131,   131,   131,   131,   nil,   131,   131,   287,   287,   nil,
-   nil,   nil,   131,   nil,   nil,   nil,   287,   287,   287,   287,
-   nil,   nil,   186,   186,   nil,   nil,   nil,   nil,   nil,   nil,
-   186,   186,   186,   186,   186,   nil,   nil,   nil,   nil,   nil,
-   nil,   287,   nil,   nil,   287,   287,   287,   287,   287,   287,
-   nil,   287,   287,   nil,   nil,   186,   186,   nil,   287,   186,
-   186,   186,   186,   186,   186,   nil,   186,   186,   291,   291,
-   nil,   nil,   nil,   186,   nil,   nil,   nil,   291,   291,   291,
-   291,   nil,   nil,    19,   292,    19,    19,   nil,    19,    19,
-   nil,    19,   292,    19,   nil,    19,   nil,    19,   nil,   nil,
-    19,    19,   nil,   289,   nil,   291,   291,   291,   291,   291,
-   291,   289,   291,   291,   nil,   nil,   nil,   nil,   nil,   291,
-   292,   292,   292,   292,   292,   292,   nil,   292,   292,   nil,
-   nil,   237,   nil,   nil,   292,   nil,   nil,   nil,   nil,   289,
-   289,   289,   289,   289,   289,   nil,   289,   289,   nil,   nil,
-   372,   nil,   237,   289,   237,   237,   nil,   237,   237,   nil,
-   237,   nil,   237,   nil,   237,   nil,   237,   nil,   nil,   237,
-   237,   372,   378,   372,   372,   nil,   372,   372,   nil,   372,
-   nil,   372,   nil,   372,   nil,   372,   nil,   nil,   372,   372,
-   nil,   212,   nil,   378,   nil,   378,   378,   nil,   378,   378,
-   nil,   378,   nil,   378,   nil,   378,   nil,   378,   nil,   nil,
-   378,   378,   212,   323,   212,   212,   nil,   212,   212,   nil,
-   212,   nil,   212,   nil,   212,   nil,   212,   nil,   nil,   212,
-   212,   nil,   374,   nil,   323,   nil,   323,   323,   nil,   323,
-   323,   nil,   323,   nil,   323,   nil,   323,   nil,   323,   nil,
-   nil,   323,   323,   374,   380,   374,   374,   nil,   374,   374,
-   nil,   374,   nil,   374,   nil,   374,   nil,   374,   nil,   nil,
-   374,   374,   nil,   303,   nil,   380,   nil,   380,   380,   nil,
-   380,   380,   nil,   380,   nil,   380,   nil,   380,   nil,   380,
-   nil,   nil,   380,   380,   303,   319,   303,   303,   nil,   303,
-   303,   nil,   303,   nil,   303,   nil,   303,   nil,   303,   nil,
-   nil,   303,   303,   nil,   362,   nil,   319,   nil,   319,   319,
-   nil,   319,   319,   nil,   319,   nil,   319,   nil,   319,   nil,
-   319,   nil,   nil,   319,   319,   362,   217,   362,   362,   nil,
-   362,   362,   nil,   362,   nil,   362,   nil,   362,   nil,   362,
-   nil,   nil,   362,   362,   nil,   295,   nil,   217,   nil,   217,
-   217,   nil,   217,   217,   nil,   217,   nil,   217,   nil,   217,
-   nil,   217,   nil,   nil,   217,   217,   295,   nil,   295,   295,
-   nil,   295,   295,   nil,   295,   nil,   295,   nil,   295,   nil,
-   295,   nil,   nil,   295,   295,     0,   nil,     0,     0,   nil,
-     0,     0,   nil,     0,   nil,     0,   nil,     0,   nil,     0,
-   nil,   nil,     0,     0 ]
+   164,   164,   158,   154,   301,    27,    56,    27,    81,   214,
+   285,   285,   301,   164,   164,   239,   293,   285,    18,   206,
+    27,   213,   164,   164,   164,   164,    81,   206,   175,   175,
+   194,    56,   175,   194,   175,   368,   368,   214,   214,   157,
+   158,   293,   293,   158,    27,   154,   164,   164,   285,   144,
+   164,   164,   164,   164,   164,   164,    18,   164,   164,    18,
+    85,   175,   144,   158,   164,   175,   175,   272,   368,   175,
+    83,   261,   368,   368,   175,   272,   368,   157,   175,    18,
+   157,   368,   161,   161,   261,   368,   161,   216,   161,   175,
+     1,    82,   356,   356,     1,   218,   368,   219,   203,   163,
+   157,     1,   114,   272,   272,   272,   272,   272,   272,   203,
+   272,   272,   163,   114,   203,   161,   122,   272,   114,   161,
+   161,   122,   192,   161,   221,   356,   192,   192,   161,   356,
+   356,   220,   161,   356,   290,   335,   335,   221,   356,   335,
+   111,   335,   356,   161,   309,   290,   331,   331,    11,   309,
+   290,   111,    11,   356,   329,   329,   111,   335,   329,    11,
+   329,    48,    48,   103,   103,    48,   334,    48,   335,   334,
+   103,   200,   335,   335,   262,   262,   335,   263,   263,   262,
+   262,   335,   335,    48,   263,   335,   262,   329,   335,   224,
+   280,   329,   329,   280,    48,   329,   335,   197,    48,    48,
+   329,   103,    48,   227,   329,   295,   295,    48,    48,    87,
+   229,    48,   307,   307,    48,   329,   307,    33,   307,   306,
+   306,    33,    48,   306,   230,   306,   299,   299,    33,    33,
+   225,    80,   232,   299,   225,    77,    46,   225,   295,   234,
+    46,   225,   295,   295,   235,   307,   295,    46,    46,   307,
+   307,   295,   306,   307,    75,   295,   306,   306,   307,   299,
+   306,   212,   307,   299,   299,   306,   295,   299,     8,   306,
+    23,    23,   299,   307,    23,    74,   299,     8,     8,    66,
+   306,   249,    42,   252,   264,   264,    42,   299,    65,   166,
+   166,   264,    23,    42,    42,    26,    26,    64,    89,    26,
+   201,    26,    94,    23,   201,   201,   187,    23,    23,   169,
+   101,    23,   102,   169,   169,    23,    23,    26,   105,   183,
+    23,    53,   166,    52,   294,   294,   166,   166,    26,    50,
+   166,    23,    26,    26,   166,   166,    26,   143,   106,   166,
+   107,    26,    26,    29,    29,    26,   108,    29,    26,    29,
+   166,   110,   279,   167,   167,   113,    26,   294,   115,   167,
+   283,   294,   294,   281,   281,   294,    37,   211,   281,   281,
+   294,   211,   211,   116,   294,   281,    29,   288,   170,   170,
+    29,    29,   119,    32,    29,   294,   167,   121,   127,    29,
+   167,   167,   297,    29,   167,    17,   287,   287,   133,   167,
+   287,   170,   287,   167,    29,     3,     3,     3,     3,   304,
+    13,   170,    12,   134,   167,   170,   170,   136,   320,   170,
+   324,   172,   172,   170,   170,   172,   159,   172,   170,   287,
+   140,   141,   155,   287,   287,   337,   342,   287,   346,   170,
+   347,   349,   287,   172,   350,   351,   287,    45,    45,     5,
+   357,    45,   142,    45,   172,   367,   147,   287,   172,   172,
+   369,     2,   172,     4,     4,     4,     4,   172,   172,    45,
+   146,   172,   379,   381,   172,   nil,   nil,   173,   173,   nil,
+    45,   173,   172,   173,    45,    45,   nil,   nil,    45,    31,
+    31,    31,    31,    45,    45,   nil,   nil,    45,   nil,   173,
+    45,   nil,   nil,    47,    47,   nil,   nil,    47,    45,    47,
+   173,   nil,   nil,   nil,   173,   173,   nil,   nil,   173,     6,
+     6,     6,     6,   173,   173,    47,   nil,   173,   nil,   nil,
+   173,   nil,   nil,   174,   174,   nil,    47,   174,   173,   174,
+    47,    47,   nil,   nil,    47,   nil,   nil,   nil,   nil,    47,
+    47,   nil,   nil,    47,   nil,   174,    47,   nil,   nil,    49,
+    49,   nil,   nil,    49,    47,    49,   174,   nil,   nil,   nil,
+   174,   174,   nil,   nil,   174,   nil,   nil,    51,    51,   174,
+   174,    51,   nil,   174,   176,   176,   174,   nil,   176,   nil,
+   176,   nil,    49,   nil,   174,   nil,    49,    49,   nil,   nil,
+    49,   nil,   nil,   nil,   nil,    49,   176,   nil,   nil,    49,
+    51,   nil,   nil,   nil,    51,    51,   nil,   176,    51,   nil,
+    49,   176,   176,    51,   nil,   176,   nil,    51,   nil,   nil,
+   176,   176,   nil,   nil,   176,   177,   177,   176,    51,   177,
+   nil,   177,   nil,   nil,   nil,   176,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   112,   112,   nil,   177,   112,   nil,
+   112,   259,   259,   nil,   nil,   259,   nil,   259,   177,   nil,
+   nil,   nil,   177,   177,   nil,   nil,   177,   nil,   nil,   254,
+   254,   177,   177,   nil,   nil,   177,   nil,   112,   177,   nil,
+   nil,   112,   112,   nil,   259,   112,   177,   nil,   259,   259,
+   112,   nil,   259,   nil,   112,    70,    70,   259,   nil,   nil,
+   nil,   259,   254,   nil,   nil,   112,   254,   254,   nil,   nil,
+   254,   nil,   259,   nil,   nil,   254,   242,   242,    70,   254,
+   242,   nil,   242,   nil,   nil,   nil,   nil,   nil,    70,   nil,
+   254,   nil,    70,    70,   nil,   nil,    70,   nil,   242,   nil,
+    70,    70,    71,    71,   nil,    70,    71,   nil,    71,   242,
+   nil,   nil,   nil,   242,   242,   nil,    70,   242,   nil,   nil,
+   nil,   nil,   242,   242,    71,   nil,   242,   240,   240,   242,
+   nil,   nil,   nil,   nil,   nil,    71,   nil,   242,   nil,    71,
+    71,   nil,   nil,    71,   nil,   nil,   nil,   nil,    71,    71,
+   240,   nil,    71,   178,   178,    71,   nil,   178,   nil,   178,
+   240,   nil,   nil,    71,   240,   240,   nil,   nil,   240,   nil,
+   nil,   nil,   240,   240,   nil,   178,   nil,   240,   233,   233,
+   nil,   nil,   233,   nil,   233,   nil,   178,   nil,   240,   nil,
+   178,   178,    78,    78,   178,   nil,    78,   nil,    78,   178,
+   178,   nil,   nil,   178,   nil,   nil,   178,   nil,   nil,   nil,
+   nil,   233,   nil,   nil,   178,   233,   233,   231,   231,   233,
+   nil,   231,   nil,   231,   233,    78,   nil,   nil,   233,    78,
+    78,   228,   228,    78,   nil,   228,   nil,   nil,    78,   233,
+   nil,   nil,    78,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   231,   nil,   nil,    78,   231,   231,   nil,   nil,   231,   nil,
+   nil,   215,   215,   231,   228,   nil,   nil,   231,   228,   228,
+   nil,   nil,   228,   nil,   nil,   nil,   nil,   228,   231,   179,
+   179,   228,   nil,   179,   nil,   179,   nil,   nil,   nil,   nil,
+   nil,   nil,   228,   nil,   215,   nil,   nil,   nil,   215,   215,
+   nil,   179,   215,   nil,   nil,   nil,   nil,   215,   nil,   185,
+   185,   215,   179,   185,   nil,   185,   179,   179,   nil,   nil,
+   179,   nil,   215,   nil,   nil,   179,   179,   nil,   nil,   179,
+   nil,   185,   179,   nil,   nil,   181,   181,   nil,   nil,   181,
+   179,   181,   185,   nil,   nil,   nil,   185,   185,   nil,   nil,
+   185,   nil,   nil,   nil,   nil,   185,   185,   181,   nil,   185,
+   nil,   nil,   185,   nil,   nil,   189,   189,   nil,   181,   189,
+   185,   189,   181,   181,   nil,   nil,   181,   nil,   nil,   nil,
+   nil,   181,   181,   nil,   nil,   181,   nil,   189,   181,   nil,
+   nil,    90,    90,   nil,   nil,    90,   181,    90,   189,   nil,
+   nil,   nil,   189,   189,   nil,   nil,   189,   nil,   nil,   nil,
+   nil,   189,   189,    90,   nil,   189,   nil,   nil,   189,   nil,
+   nil,   182,   182,   nil,    90,   182,   189,   182,    90,    90,
+   nil,   nil,    90,   nil,   nil,   nil,   nil,    90,    90,   nil,
+   nil,    90,   nil,   182,    90,   nil,   nil,   184,   184,   nil,
+   nil,   184,    90,   184,   182,   nil,   nil,   nil,   182,   182,
+   nil,   nil,   182,   nil,   nil,   nil,   nil,   182,   182,   184,
+   nil,   182,   nil,   nil,   182,   nil,   nil,    95,    95,   nil,
+   184,    95,   182,    95,   184,   184,   nil,   nil,   184,   nil,
+   nil,   nil,   nil,   184,   184,   nil,   nil,   184,   nil,    95,
+   184,   nil,   nil,    99,    99,   nil,   nil,    99,   184,    99,
+    95,   nil,   nil,   nil,    95,    95,   nil,   nil,    95,   nil,
+   nil,   nil,   nil,    95,    95,    99,   nil,    95,   100,   100,
+    95,   nil,   100,   100,   100,   nil,    99,   nil,    95,   nil,
+    99,    99,   nil,   nil,    99,   nil,   nil,   nil,   nil,    99,
+    99,   nil,   nil,    99,   186,   186,    99,   nil,   186,   nil,
+   186,   100,   nil,   nil,    99,   100,   100,   nil,   nil,   100,
+   nil,   nil,   nil,   nil,   100,   nil,   186,   nil,   100,   nil,
+   180,   180,   nil,   nil,   180,   nil,   180,   186,   nil,   100,
+   nil,   186,   186,   nil,   nil,   186,   nil,   nil,   nil,   nil,
+   186,   186,   180,   nil,   186,   nil,   nil,   186,   nil,   nil,
+   nil,   nil,   nil,   180,   nil,   186,   nil,   180,   180,    91,
+   nil,   180,   nil,   nil,   nil,   nil,   180,   180,    91,    91,
+   180,   nil,   nil,   180,   nil,   nil,   nil,    91,    91,    91,
+    91,   180,   nil,   190,   190,   nil,   nil,   nil,   nil,   nil,
+   nil,   190,   190,   190,   190,   190,   nil,   nil,   nil,   nil,
+   nil,    91,    91,   nil,   nil,    91,    91,    91,    91,    91,
+    91,   nil,    91,    91,   nil,   nil,   190,   190,   nil,    91,
+   190,   190,   190,   190,   190,   190,   nil,   190,   190,   274,
+   274,   nil,   nil,   nil,   190,   nil,   nil,   nil,   274,   274,
+   274,   274,   nil,   nil,   132,   132,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   132,   132,   132,   132,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   274,   274,   274,   274,
+   274,   274,   nil,   274,   274,   nil,   nil,   132,   132,   nil,
+   274,   132,   132,   132,   132,   132,   132,   nil,   132,   132,
+   131,   131,   nil,   nil,   nil,   132,   nil,   nil,   nil,   131,
+   131,   131,   131,   nil,   nil,   270,   270,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   270,   270,   270,   270,   nil,   nil,
+   nil,   nil,   nil,   131,   131,   nil,   nil,   131,   131,   131,
+   131,   131,   131,   nil,   131,   131,   nil,   nil,   nil,   270,
+   nil,   131,   270,   270,   270,   270,   270,   270,   nil,   270,
+   270,   129,   129,   nil,   nil,   nil,   270,   nil,   nil,   nil,
+   129,   129,   129,   129,   nil,   nil,   nil,   269,   nil,   276,
+   276,   276,   276,   276,   276,   269,   276,   276,   nil,   nil,
+   nil,   nil,   nil,   276,   129,   129,   275,   nil,   129,   129,
+   129,   129,   129,   129,   275,   129,   129,   nil,   nil,   nil,
+   nil,   271,   129,   269,   269,   269,   269,   269,   269,   271,
+   269,   269,   nil,   nil,   nil,   nil,   nil,   269,   nil,   nil,
+   nil,   nil,   275,   275,   275,   275,   275,   275,   nil,   275,
+   275,   188,   nil,   nil,   nil,   nil,   275,   271,   271,   271,
+   271,   271,   271,   nil,   271,   271,   nil,   nil,   nil,   nil,
+   238,   271,   188,   nil,   188,   188,   nil,   188,   188,   nil,
+   188,   nil,   188,   nil,   188,   nil,   188,   nil,   nil,   188,
+   188,   238,   311,   238,   238,   nil,   238,   238,   nil,   238,
+   nil,   238,   nil,   238,   nil,   238,   nil,   nil,   238,   238,
+   nil,   375,   nil,   311,   nil,   311,   311,   nil,   311,   311,
+   nil,   311,   nil,   311,   nil,   311,   nil,   311,   nil,   nil,
+   311,   311,   375,   372,   375,   375,   nil,   375,   375,   nil,
+   375,   nil,   375,   nil,   375,   nil,   375,   nil,   nil,   375,
+   375,   nil,   362,   nil,   372,   nil,   372,   372,   nil,   372,
+   372,   nil,   372,   nil,   372,   nil,   372,   nil,   372,   nil,
+   nil,   372,   372,   362,   217,   362,   362,   nil,   362,   362,
+   nil,   362,   nil,   362,   nil,   362,   nil,   362,   nil,   nil,
+   362,   362,   nil,   nil,   nil,   217,   nil,   217,   217,   nil,
+   217,   217,   nil,   217,   nil,   217,   nil,   217,   nil,   217,
+   nil,   nil,   217,   217,     0,   nil,     0,     0,   nil,     0,
+     0,   nil,     0,   nil,     0,   nil,     0,   nil,     0,   nil,
+   nil,     0,     0,    20,   nil,    20,    20,   nil,    20,    20,
+   nil,    20,   nil,    20,   nil,    20,   nil,    20,   nil,   nil,
+    20,    20,   278,   nil,   278,   278,   nil,   278,   278,   nil,
+   278,   nil,   278,   nil,   278,   nil,   278,   nil,   nil,   278,
+   278,   267,   267,   267,   267,   267,   267,   nil,   267,   267,
+   266,   266,   266,   266,   nil,   267,   nil,   266,   266,   268,
+   268,   268,   268,   nil,   266,   nil,   268,   268,   nil,   nil,
+   nil,   nil,   nil,   268 ]
 
 racc_action_pointer = [
-  1795,   163,   443,   413,   433,   nil,   nil,     3,   434,   420,
-   nil,   nil,   142,   nil,   nil,   nil,   398,    26,   nil,  1483,
-   nil,   nil,    80,   271,   nil,   nil,   297,   nil,   367,   348,
-   166,   nil,   nil,   375,   315,   277,   337,   nil,   nil,   501,
-   nil,   nil,   nil,   221,   nil,   nil,   557,   583,   608,   622,
-   315,   329,   348,   nil,   nil,     4,   nil,   nil,   nil,   nil,
-   nil,   nil,    97,   780,   298,    -9,   309,   302,   275,   nil,
-   nil,   286,   nil,   nil,   923,   966,   nil,   279,   269,   nil,
-     6,   248,  1060,   nil,   239,   245,    -3,   177,   nil,   nil,
-   149,   137,   nil,   nil,  1209,    10,   nil,  1239,   nil,   nil,
-   755,   121,  1137,   225,   nil,   233,     3,   299,   301,   304,
-   nil,  1298,   nil,   nil,   322,   325,   nil,   nil,   nil,   323,
-   205,   331,   144,   nil,  1313,   nil,   nil,   351,   nil,   nil,
-  1359,  1374,   352,   344,   nil,   nil,   328,   nil,   350,   364,
-   361,   nil,   362,    79,   374,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    -9,   408,   386,   nil,     2,   452,    30,   nil,
-   251,   nil,   nil,    84,   nil,    50,   nil,   nil,   nil,   nil,
-   nil,   174,   439,   436,   -14,   381,   647,   nil,   114,   nil,
-    -4,    57,    75,   197,   172,   nil,  1435,   nil,   225,   nil,
-   nil,   nil,   363,   nil,   nil,   213,   215,   241,   323,   401,
-   453,   527,    32,   673,   699,   729,  1265,   265,   806,   832,
-  1070,   249,  1612,  1118,  1166,   270,   nil,  1757,    24,    24,
-    91,   121,   nil,   nil,   142,  1044,   126,   161,  1191,   147,
-  1144,   198,   233,   238,   273,   nil,   nil,  1552,   nil,    39,
-   nil,   nil,   nil,    66,  1017,  1001,   nil,   nil,   991,   nil,
-   270,   nil,   273,   279,   948,   nil,   904,   nil,   nil,   nil,
-   nil,   nil,   nil,   451,   nil,   nil,   nil,   nil,   283,   850,
-   nil,   nil,    -5,   nil,   308,   nil,   857,     8,   nil,   226,
-   198,    67,   nil,   466,  1073,    86,   172,  1420,   411,  1515,
-   nil,  1481,  1496,   456,   nil,  1776,    -4,   356,   443,   nil,
-   145,   nil,   nil,  1694,   nil,   387,   nil,   362,   129,   nil,
-   nil,   nil,   nil,   nil,   nil,   380,   nil,   nil,   nil,  1716,
-   nil,   nil,   nil,  1634,   nil,   nil,   nil,   376,   383,   nil,
-   385,   392,   393,   nil,   nil,   nil,   nil,   410,   nil,   nil,
-   nil,   153,   nil,   183,   nil,   nil,   nil,   nil,   nil,    51,
-   nil,   128,   430,   nil,   nil,   110,   435,   nil,   nil,   nil,
-   nil,   nil,  1735,   nil,   nil,   nil,   nil,   439,    59,   445,
-   nil,   nil,  1571,   nil,  1653,   nil,   nil,   nil,  1593,   nil,
-  1675,   nil,   nil,   nil ]
+  1674,    54,   417,   341,   399,   434,   455,   nil,   262,   nil,
+   nil,   112,   404,   402,   nil,   nil,   nil,   395,    16,   nil,
+  1693,   nil,   nil,   268,   nil,   nil,   293,    -1,   nil,   341,
+   nil,   425,   381,   181,   nil,   nil,   nil,   342,   nil,   nil,
+   nil,   nil,   246,   nil,   nil,   445,   200,   501,   159,   557,
+   305,   575,   283,   321,   nil,   nil,    -6,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   291,   265,   273,   nil,   nil,   nil,
+   703,   750,   nil,   nil,   269,   242,   nil,   212,   840,   nil,
+   208,     2,    68,    64,   nil,    37,   nil,   186,   nil,   275,
+  1039,  1261,   nil,   nil,   279,  1125,   nil,   nil,   nil,  1151,
+  1176,   287,   289,   161,   nil,   295,   315,   317,   323,   nil,
+   343,   116,   652,   315,    78,   350,   361,   nil,   nil,   374,
+   nil,   379,    81,   nil,   nil,   nil,   nil,   382,   nil,  1444,
+   nil,  1383,  1337,   391,   376,   nil,   394,   nil,   nil,   nil,
+   389,   408,   440,   314,    38,   nil,   447,   436,   nil,   nil,
+   nil,   nil,   nil,   nil,    -8,   420,   nil,    37,     0,   418,
+   nil,    80,   nil,    87,    -4,   nil,   287,   351,   nil,   302,
+   376,   nil,   419,   475,   531,    26,   582,   633,   801,   927,
+  1228,   983,  1069,   256,  1095,   957,  1202,   243,  1532,  1013,
+  1276,   nil,   115,   nil,    21,   nil,   nil,   186,   nil,   nil,
+   131,   254,   nil,    74,   nil,   nil,     1,   nil,   nil,   nil,
+   nil,   360,   249,    10,   -13,   909,    85,  1655,    80,    82,
+   106,   112,   nil,   nil,   181,   194,   nil,   194,   879,   170,
+   215,   865,   192,   826,   199,   235,   nil,   nil,  1551,     8,
+   775,   nil,   724,   nil,   nil,   nil,   nil,   nil,   nil,   270,
+   nil,   nil,   259,   nil,   677,   nil,   nil,   nil,   nil,   659,
+   nil,    59,   118,   116,   223,   nil,  1716,  1707,  1725,  1459,
+  1398,  1493,    49,   nil,  1322,  1478,  1425,   nil,  1712,   343,
+   159,   307,   nil,   353,   nil,     8,   nil,   394,   365,   nil,
+   110,   nil,   nil,    -9,   322,   203,   nil,   383,   nil,   224,
+   nil,    -8,   nil,   nil,   400,   nil,   217,   210,   nil,   109,
+   nil,  1573,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   406,   nil,   nil,   nil,   411,   nil,   nil,   nil,   nil,   152,
+   nil,   135,   nil,   nil,   135,   133,   nil,   427,   nil,   nil,
+   nil,   nil,   427,   nil,   nil,   nil,   415,   417,   nil,   418,
+   421,   422,   nil,   nil,   nil,   nil,    90,   442,   nil,   nil,
+   nil,   nil,  1633,   nil,   nil,   nil,   nil,   446,    33,   451,
+   nil,   nil,  1614,   nil,   nil,  1592,   nil,   nil,   nil,   463,
+   nil,   464,   nil,   nil,   nil ]
 
 racc_action_default = [
-  -196,  -233,  -233,   -50,  -233,    -8,    -9,  -233,  -233,   -22,
-   -10,  -187,  -188,   -11,  -185,   -12,  -233,  -233,   -13,    -1,
-   -14,    -2,  -233,  -186,   -15,    -3,  -233,   -16,    -5,  -233,
-  -233,   -17,    -6,  -233,   -18,    -7,  -196,  -188,  -186,  -233,
-   -51,   -26,   -27,  -233,   -24,   -25,  -233,  -233,  -233,   -85,
-   -92,  -196,  -233,  -195,  -193,  -196,  -189,  -191,  -192,  -221,
-  -194,    -4,  -196,  -233,   -85,  -196,   -53,  -231,   -42,  -174,
-   -43,  -213,  -117,   -33,  -233,  -233,   -44,   -31,   -74,   -32,
-  -233,   -36,  -233,  -122,   -37,  -233,   -73,   -38,  -172,   -72,
-   -39,   -40,  -173,   -41,  -233,  -103,  -111,  -233,  -132,  -112,
-  -233,  -104,  -233,  -108,  -110,  -105,  -233,  -114,  -106,  -113,
-  -109,  -233,  -125,  -107,  -233,  -233,   -49,  -175,  -176,  -178,
-  -233,  -233,  -197,  -198,   -83,   -19,   -22,  -186,   -21,   -23,
-   -82,   -84,  -233,   -75,   -86,   -81,   -70,   -74,   -76,  -219,
-   -79,   -68,   -77,   -73,  -233,  -171,  -170,   -80,   -78,   -90,
-   -91,   -93,  -233,  -219,  -196,   384,  -233,  -233,  -233,  -207,
-  -233,   -57,  -213,  -196,   -59,  -233,   -66,   -65,   -56,   -73,
-   -95,  -233,  -219,  -233,  -233,   -92,  -233,   -30,  -233,  -118,
-  -233,  -233,  -233,  -233,  -233,  -142,  -233,  -149,  -233,  -216,
-  -229,  -225,  -233,  -228,  -224,  -233,  -233,  -233,  -233,  -233,
-  -233,  -233,  -233,  -233,  -233,  -233,  -233,  -233,  -233,  -233,
-  -233,  -233,  -233,  -233,  -233,  -233,   -20,  -233,  -206,  -233,
-  -204,  -233,  -201,  -230,  -233,   -71,  -220,  -233,  -233,   -85,
-  -233,  -220,  -233,  -233,  -233,  -209,  -190,  -233,  -208,  -233,
-   -54,   -62,   -61,  -233,  -233,  -233,  -217,  -218,  -233,  -124,
-  -233,   -55,  -219,  -233,  -233,   -28,  -233,  -120,  -119,   -35,
-   -34,  -168,  -166,  -233,  -169,  -160,  -167,  -161,   -73,  -233,
-  -123,  -116,  -233,  -152,  -218,  -214,  -233,  -233,  -222,  -137,
-  -139,  -138,  -133,  -140,  -144,  -141,  -146,  -151,  -148,  -145,
-  -134,  -150,  -147,  -143,  -135,  -233,  -128,  -136,  -233,  -154,
-  -233,  -158,  -177,  -233,  -180,  -233,  -199,  -233,  -233,  -200,
-   -45,   -69,   -87,   -46,   -88,  -219,   -89,   -94,   -48,  -233,
-  -211,  -210,  -212,  -233,  -184,   -58,   -60,   -97,   -98,   -63,
-  -102,   -99,  -100,  -101,   -64,   -96,   -47,  -233,  -232,   -29,
-  -121,  -233,  -163,  -219,  -115,  -215,  -227,  -226,  -223,  -128,
-  -127,  -233,  -233,  -155,  -153,  -233,  -233,  -179,  -205,  -203,
-  -202,   -67,  -233,  -182,  -183,   -52,  -165,  -218,  -233,  -233,
-  -126,  -129,  -233,  -159,  -233,  -181,  -164,  -162,  -233,  -131,
-  -233,  -157,  -130,  -156 ]
+  -197,  -234,   -51,   -19,    -8,  -234,  -234,    -9,  -234,   -10,
+  -188,  -189,  -234,   -23,   -11,  -186,   -12,  -234,  -234,   -13,
+    -1,   -14,    -2,  -187,   -15,    -3,  -234,  -234,   -16,  -234,
+   -17,    -6,  -234,  -234,   -18,    -7,  -189,  -197,  -187,   -52,
+   -27,   -28,  -234,   -25,   -26,  -234,  -234,  -234,  -234,  -234,
+  -197,   -86,   -93,  -234,  -196,  -194,  -197,  -190,  -192,  -193,
+  -222,  -195,    -4,   -42,  -232,   -43,  -214,  -175,  -118,   -44,
+  -234,  -234,   -45,   -34,   -75,   -32,   -33,  -234,  -234,  -123,
+   -37,   -74,   -38,  -234,   -73,   -39,  -173,   -40,  -174,   -41,
+  -234,  -234,  -126,  -108,  -104,  -234,  -112,  -133,  -113,  -234,
+  -234,  -105,  -109,  -234,  -111,  -106,  -115,  -107,  -114,  -110,
+   -54,  -197,  -234,   -86,  -197,  -234,  -179,  -176,  -177,  -234,
+   -50,  -234,  -198,  -199,   -24,   -21,   -23,  -187,   -22,   -84,
+   -20,   -83,   -85,  -234,  -197,   -79,   -76,   -87,   -82,   -75,
+   -71,   -77,  -220,   -80,   -74,   -69,   -78,  -234,  -172,  -171,
+   -81,   -91,   -92,   -94,  -234,  -220,   385,  -234,  -234,  -234,
+  -208,  -234,   -31,  -234,  -234,  -119,  -234,  -234,   -96,  -234,
+  -234,  -143,  -234,  -234,  -234,  -234,  -234,  -234,  -234,  -234,
+  -234,  -234,  -234,  -234,  -234,  -234,  -234,  -234,  -234,  -234,
+  -234,  -150,  -234,  -217,  -234,  -230,  -226,  -234,  -229,  -225,
+   -93,  -234,  -214,  -197,   -58,   -60,  -234,   -67,   -57,   -74,
+   -66,  -234,  -220,  -234,  -234,  -234,  -234,  -234,  -207,  -205,
+  -234,  -234,  -202,  -231,  -234,  -234,  -210,  -234,   -72,  -221,
+  -234,  -234,   -86,  -234,  -221,  -234,  -191,  -209,  -234,  -234,
+  -234,   -29,  -234,  -121,  -120,   -36,   -35,  -169,  -167,  -234,
+  -170,  -161,   -74,  -168,  -234,  -162,  -218,  -219,  -124,  -234,
+  -117,  -234,  -138,  -140,  -139,  -134,  -141,  -145,  -142,  -147,
+  -152,  -149,  -146,  -135,  -151,  -148,  -144,  -136,    -5,  -234,
+  -129,  -137,  -153,  -219,  -215,  -234,  -223,  -234,  -220,   -55,
+  -234,   -63,   -62,  -234,  -234,  -234,  -125,  -234,   -56,  -234,
+  -155,  -234,  -159,  -178,  -234,  -181,  -234,  -234,  -200,  -234,
+  -201,  -234,  -212,  -213,  -211,   -46,   -70,   -88,   -47,   -89,
+  -220,   -90,   -95,   -49,  -234,  -185,  -233,   -30,  -122,  -234,
+  -164,  -220,   -97,  -116,  -129,  -234,  -128,  -234,  -216,  -227,
+  -224,  -228,  -234,   -59,   -61,  -102,   -98,   -99,   -64,  -103,
+  -100,  -101,   -65,   -48,  -156,  -154,  -234,  -234,  -180,  -206,
+  -204,  -203,  -234,  -183,   -68,  -184,  -166,  -219,  -234,  -234,
+  -127,  -130,  -234,   -53,  -160,  -234,  -182,  -165,  -163,  -234,
+  -132,  -234,  -158,  -131,  -157 ]
 
 racc_goto_table = [
-    22,     9,    68,   112,    53,   118,    61,    36,    91,   222,
-    19,   267,    70,    93,     2,   227,   139,   191,    51,    22,
-     9,   179,    77,    56,    73,   149,    21,   141,   133,   232,
-   115,   172,   153,     2,   146,   263,   125,   116,   135,   148,
-   147,   299,   129,    22,   126,   260,   160,   350,   250,   174,
-   128,   171,    43,    68,   121,   329,   334,   298,   368,    91,
-   258,   265,   123,    70,    93,   317,   343,   301,   136,   154,
-   183,   119,   224,   178,   233,    73,    55,   123,   157,    66,
-   238,   159,   120,   219,   221,   190,   325,   321,   195,    16,
-   188,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   342,   nil,
-   370,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   216,   nil,   nil,   nil,   nil,   260,   129,
-    22,   126,   263,   nil,   nil,   353,   nil,   128,   337,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
-   nil,   nil,   nil,    53,   nil,    53,   nil,   243,   nil,   nil,
-   149,   301,   nil,   nil,   nil,   nil,   nil,   252,   nil,   nil,
-    68,   261,   236,    68,   nil,   138,    91,   146,   nil,    91,
-    70,    93,   nil,    70,    93,   nil,   nil,   nil,   166,   nil,
-   235,   166,   259,   272,   nil,    73,   nil,   302,   347,   nil,
-    81,   361,   nil,   261,   290,   360,   315,   376,   294,   146,
-   nil,   312,   340,   311,   133,   nil,   149,   nil,   373,   nil,
-   146,   nil,    22,     9,   135,   148,   147,    22,     9,   369,
-   nil,   263,   295,   327,   327,   nil,     2,   303,   nil,   146,
-   146,     2,   nil,    68,   333,   333,   nil,    22,     9,    91,
-   320,    88,   nil,    70,    93,   nil,   nil,   323,   261,   nil,
-   nil,     2,   nil,   nil,   146,   259,   190,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    87,   nil,   261,   nil,   166,
-   nil,   nil,    61,   146,   nil,   nil,   nil,   nil,   nil,   nil,
-    61,   nil,    88,   nil,   nil,    22,     9,    81,   262,   nil,
-    81,   142,   nil,    22,     9,   nil,   nil,   nil,   nil,     2,
-    61,   nil,   nil,   nil,   nil,   nil,   nil,     2,   nil,    22,
-     9,   nil,   nil,    22,     9,   nil,    87,   nil,   371,   362,
-   262,   nil,   nil,     2,   261,   nil,   nil,     2,   nil,   nil,
-   146,   138,   nil,   nil,   nil,   nil,   nil,   261,   nil,    61,
-   nil,   nil,   nil,   146,   nil,   166,   nil,   nil,   nil,   nil,
-   328,   328,    22,     9,   114,    61,   nil,    61,   nil,    84,
-    81,   nil,    22,     9,    22,     9,     2,    90,    22,     9,
-    22,     9,   378,   132,   380,   262,     2,   nil,     2,   nil,
-   nil,   nil,     2,   nil,     2,   140,   nil,   nil,   170,    88,
-    88,   nil,    88,   145,   nil,   nil,   nil,   nil,   167,   nil,
-   nil,   167,   nil,   nil,   262,   nil,   nil,   170,   nil,   nil,
-    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    90,   nil,
-   nil,   nil,    88,    87,   266,   nil,    87,   170,   nil,   nil,
-   nil,   nil,   nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,
+    27,    13,     5,    37,    62,   255,   249,    20,   118,   196,
+    92,    89,   142,    50,   155,   300,    69,    63,   222,   336,
+    27,    13,     5,   165,    73,    75,    57,   279,   348,   352,
+   246,   151,   145,   119,   343,   150,   121,   230,    65,   149,
+   299,    22,    27,   126,   138,   135,    27,   126,   201,   134,
+   235,   214,   120,    87,   302,    86,   304,   244,    89,    42,
+   169,   128,    46,    69,    63,   128,   136,   251,   368,   331,
+   322,    73,   163,   370,   212,   125,   124,   324,   123,   130,
+   124,   148,   192,    86,   116,    65,   140,   224,    56,   159,
+   227,   123,   330,   249,   211,   237,   220,   160,   221,   354,
+    87,   110,    86,   115,   246,   314,   194,   297,    17,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   195,   nil,
+   nil,   nil,   nil,   133,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    54,   nil,   nil,   nil,   302,   nil,
+   293,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   168,   nil,    89,   149,   nil,   nil,    89,    69,
+    63,   nil,   288,    69,    63,   236,   nil,   245,   nil,   nil,
+   nil,    73,   261,    82,   168,   226,   nil,   nil,   nil,   151,
+   nil,    65,   247,   342,   nil,    65,   168,   nil,    27,    13,
+     5,   339,   303,   320,   328,   374,    87,   148,    86,    86,
+    87,   143,    86,   149,    80,   361,   377,   249,   317,   316,
+   nil,   379,   150,   151,   381,   364,   149,    27,    13,     5,
+    82,   138,   135,   nil,   nil,   nil,   369,   312,    89,   nil,
+   247,   nil,   141,    69,    63,   239,   nil,   nil,    27,    13,
+     5,   245,   149,   136,   nil,   148,   nil,    86,   nil,   265,
+   nil,    80,   nil,   nil,   nil,    65,   nil,   nil,   148,   nil,
+    86,   210,    62,   nil,   210,   nil,   nil,   nil,    85,   247,
+    87,   nil,    86,    54,    54,   nil,   nil,   nil,    27,    13,
+     5,   nil,   149,   149,   148,   nil,    86,   149,   345,   345,
+   nil,   nil,   207,   nil,   nil,   207,   146,   nil,   nil,   273,
+   195,   nil,   nil,   277,   nil,   319,   nil,   321,   nil,   346,
+   346,    27,    13,     5,   247,    85,    82,   250,   362,   371,
+    82,   nil,   nil,   nil,   351,   351,    86,    86,   nil,   148,
+   nil,    86,   nil,   332,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   149,   nil,    62,    80,   248,   nil,
+   nil,    80,   nil,   210,   nil,   nil,   149,   nil,   nil,   nil,
+   nil,   341,    27,    13,     5,   250,   nil,   nil,   nil,   nil,
+   nil,   247,    27,    13,     5,    27,    13,     5,   143,   nil,
+   359,   360,   nil,   247,   207,   nil,   148,   nil,    86,   nil,
+    82,   nil,   129,   nil,   131,   132,   248,   nil,   148,   nil,
+    86,   nil,   nil,   366,   250,   nil,   nil,   nil,   nil,   141,
+   nil,    85,   253,   nil,   nil,    85,   nil,   nil,   164,   nil,
+   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   248,   nil,   171,   nil,   nil,
+   210,   nil,   190,   nil,   349,   349,   191,   nil,   nil,   250,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    88,    88,   nil,   nil,   266,   nil,   nil,   nil,
-   nil,   262,    88,   nil,   nil,   nil,   nil,   142,   nil,   nil,
-   nil,   nil,   nil,   nil,   262,   nil,   nil,    88,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   331,   331,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    87,   nil,   nil,   167,
-   nil,   253,   nil,   nil,   nil,   nil,    88,   nil,   nil,   nil,
-   nil,   266,   nil,   nil,   nil,   nil,   nil,    84,   264,   nil,
-    84,   nil,   nil,   nil,   282,    90,   145,   nil,    90,   nil,
+   253,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   207,   nil,   146,   nil,   347,   347,   nil,   nil,   nil,
+   248,   nil,   nil,   nil,   nil,    85,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   253,
+   nil,   nil,   nil,   nil,   nil,   nil,   250,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   250,   262,
+   263,   264,   nil,   266,   267,   268,   269,   270,   271,   272,
+   nil,   274,   275,   276,   nil,   nil,   281,   248,   nil,   350,
+   350,   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,   248,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   266,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   264,   nil,   nil,   314,   nil,   316,   nil,   124,   145,   nil,
-   nil,   140,   nil,    88,   130,   131,   nil,   nil,   nil,   145,
-   nil,   nil,   nil,   335,   nil,   167,    88,   nil,   nil,   nil,
-   330,   330,   nil,   nil,   nil,   nil,   nil,   nil,   332,   332,
-    84,   nil,   nil,   180,   nil,   nil,   nil,   266,    90,   nil,
-   nil,   346,   nil,   nil,   nil,   264,   nil,   nil,   nil,   nil,
-   266,   nil,   185,   145,   nil,   186,   nil,   nil,   187,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   358,   nil,   359,   nil,   264,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   145,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   366,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   164,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   264,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   145,
-   nil,   nil,   nil,   nil,   264,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   145,   nil,   279,   280,   281,   nil,   283,   284,
-   285,   286,   287,   288,   289,   nil,   291,   292,   293,   nil,
-   nil,   297,   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,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   180 ]
+   nil,   253,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   253 ]
 
 racc_goto_check = [
-    37,    21,    30,    62,    64,    72,     4,    32,    28,    82,
-     2,    70,    31,    29,    52,    36,    35,    85,    32,    37,
-    21,    60,    22,    78,    21,    53,     3,    47,    30,    36,
-    37,    35,    38,    52,    28,    68,    19,     5,    31,    29,
-    50,    66,     7,    37,    21,    23,    41,    63,    36,    41,
-     5,    57,    20,    30,    74,    46,    46,    65,    58,    28,
-    61,    69,     3,    31,    29,    56,    71,    68,    33,    74,
-    57,    73,    34,    22,    75,    21,    76,     3,    77,    40,
-    79,     3,    20,    80,    81,    30,    42,    83,    84,     1,
-    57,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    70,   nil,
-    63,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    19,   nil,   nil,   nil,   nil,    23,     7,
-    37,    21,    68,   nil,   nil,    66,   nil,     5,    36,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    24,
-   nil,   nil,   nil,    64,   nil,    64,   nil,    41,   nil,   nil,
-    53,    68,   nil,   nil,   nil,   nil,   nil,    38,   nil,   nil,
-    30,    30,    78,    30,   nil,    24,    28,    28,   nil,    28,
-    31,    29,   nil,    31,    29,   nil,   nil,   nil,    24,   nil,
-     3,    24,    21,    22,   nil,    21,   nil,    72,    85,   nil,
-    24,    36,   nil,    30,    64,    82,    35,    70,    64,    28,
-   nil,    53,    60,    47,    30,   nil,    53,   nil,    68,   nil,
-    28,   nil,    37,    21,    31,    29,    50,    37,    21,    36,
-   nil,    68,     2,    30,    30,   nil,    52,     2,   nil,    28,
-    28,    52,   nil,    30,    29,    29,   nil,    37,    21,    28,
-    32,    49,   nil,    31,    29,   nil,   nil,     2,    30,   nil,
-   nil,    52,   nil,   nil,    28,    21,    30,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    49,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    26,   nil,    30,   nil,    24,
-   nil,   nil,     4,    28,   nil,   nil,   nil,   nil,   nil,   nil,
-     4,   nil,    49,   nil,   nil,    37,    21,    24,    24,   nil,
-    24,    26,   nil,    37,    21,   nil,   nil,   nil,   nil,    52,
-     4,   nil,   nil,   nil,   nil,   nil,   nil,    52,   nil,    37,
-    21,   nil,   nil,    37,    21,   nil,    26,   nil,    62,     2,
-    24,   nil,   nil,    52,    30,   nil,   nil,    52,   nil,   nil,
-    28,    24,   nil,   nil,   nil,   nil,   nil,    30,   nil,     4,
-   nil,   nil,   nil,    28,   nil,    24,   nil,   nil,   nil,   nil,
-    24,    24,    37,    21,    54,     4,   nil,     4,   nil,    25,
-    24,   nil,    37,    21,    37,    21,    52,    27,    37,    21,
-    37,    21,     2,    54,     2,    24,    52,   nil,    52,   nil,
-   nil,   nil,    52,   nil,    52,    25,   nil,   nil,    54,    49,
-    49,   nil,    49,    27,   nil,   nil,   nil,   nil,    25,   nil,
-   nil,    25,   nil,   nil,    24,   nil,   nil,    54,   nil,   nil,
-    25,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    27,   nil,
-   nil,   nil,    49,    26,    26,   nil,    26,    54,   nil,   nil,
-   nil,   nil,   nil,    49,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    49,    49,   nil,   nil,    26,   nil,   nil,   nil,
-   nil,    24,    49,   nil,   nil,   nil,   nil,    26,   nil,   nil,
-   nil,   nil,   nil,   nil,    24,   nil,   nil,    49,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    26,    26,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    26,   nil,   nil,    25,
-   nil,    54,   nil,   nil,   nil,   nil,    49,   nil,   nil,   nil,
-   nil,    26,   nil,   nil,   nil,   nil,   nil,    25,    25,   nil,
-    25,   nil,   nil,   nil,    54,    27,    27,   nil,    27,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    26,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    25,   nil,   nil,    54,   nil,    54,   nil,    51,    27,   nil,
-   nil,    25,   nil,    49,    51,    51,   nil,   nil,   nil,    27,
-   nil,   nil,   nil,    54,   nil,    25,    49,   nil,   nil,   nil,
-    25,    25,   nil,   nil,   nil,   nil,   nil,   nil,    27,    27,
-    25,   nil,   nil,    51,   nil,   nil,   nil,    26,    27,   nil,
-   nil,    54,   nil,   nil,   nil,    25,   nil,   nil,   nil,   nil,
-    26,   nil,    51,    27,   nil,    51,   nil,   nil,    51,   nil,
+    38,    22,    53,    33,     4,    71,    69,     2,    73,    86,
+    63,    29,    36,    33,    39,    67,    32,    30,    83,    64,
+    38,    22,    53,    61,    22,    23,    79,     5,    47,    47,
+    24,    54,    48,    38,    43,    51,    75,    37,    31,    29,
+    66,     3,    38,    22,    32,    30,    38,    22,    42,    75,
+    37,    42,     6,    28,    69,    50,     5,    62,    29,    21,
+    58,     6,    21,    32,    30,     6,    31,    70,    59,    72,
+    57,    22,    23,    64,    36,    20,     8,     5,     3,    20,
+     8,    28,    58,    50,    74,    31,    34,    76,    77,    78,
+    35,     3,    71,    69,    58,    80,    81,     3,    82,    67,
+    28,    41,    50,    55,    24,    84,    85,    37,     1,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    31,   nil,
+   nil,   nil,   nil,    55,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    65,   nil,   nil,   nil,    69,   nil,
+    42,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    55,   nil,    29,    29,   nil,   nil,    29,    32,
+    30,   nil,    39,    32,    30,    79,   nil,    22,   nil,   nil,
+   nil,    22,    23,    26,    55,     3,   nil,   nil,   nil,    54,
+   nil,    31,    31,    37,   nil,    31,    55,   nil,    38,    22,
+    53,    86,    73,    36,    61,    69,    28,    28,    50,    50,
+    28,    26,    50,    29,    25,    83,    71,    69,    54,    48,
+   nil,     5,    51,    54,     5,    37,    29,    38,    22,    53,
+    26,    32,    30,   nil,   nil,   nil,    37,    33,    29,   nil,
+    31,   nil,    25,    32,    30,    55,   nil,   nil,    38,    22,
+    53,    22,    29,    31,   nil,    28,   nil,    50,   nil,    55,
+   nil,    25,   nil,   nil,   nil,    31,   nil,   nil,    28,   nil,
+    50,    26,     4,   nil,    26,   nil,   nil,   nil,    27,    31,
+    28,   nil,    50,    65,    65,   nil,   nil,   nil,    38,    22,
+    53,   nil,    29,    29,    28,   nil,    50,    29,    30,    30,
+   nil,   nil,    25,   nil,   nil,    25,    27,   nil,   nil,    65,
+    31,   nil,   nil,    65,   nil,    55,   nil,    55,   nil,    31,
+    31,    38,    22,    53,    31,    27,    26,    26,     2,    63,
+    26,   nil,   nil,   nil,    28,    28,    50,    50,   nil,    28,
+   nil,    50,   nil,    55,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    29,   nil,     4,    25,    25,   nil,
+   nil,    25,   nil,    26,   nil,   nil,    29,   nil,   nil,   nil,
+   nil,    55,    38,    22,    53,    26,   nil,   nil,   nil,   nil,
+   nil,    31,    38,    22,    53,    38,    22,    53,    26,   nil,
+    55,    55,   nil,    31,    25,   nil,    28,   nil,    50,   nil,
+    26,   nil,    52,   nil,    52,    52,    25,   nil,    28,   nil,
+    50,   nil,   nil,    55,    26,   nil,   nil,   nil,   nil,    25,
+   nil,    27,    27,   nil,   nil,    27,   nil,   nil,    52,   nil,
+   nil,    25,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    25,   nil,    52,   nil,   nil,
+    26,   nil,    52,   nil,    26,    26,    52,   nil,   nil,    26,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-    54,   nil,    54,   nil,    25,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    27,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    27,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    25,   nil,    27,   nil,    25,    25,   nil,   nil,   nil,
+    25,   nil,   nil,   nil,   nil,    27,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    27,
+   nil,   nil,   nil,   nil,   nil,   nil,    26,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    26,    52,
+    52,    52,   nil,    52,    52,    52,    52,    52,    52,    52,
+   nil,    52,    52,    52,   nil,   nil,    52,    25,   nil,    27,
+    27,   nil,   nil,   nil,    27,   nil,   nil,   nil,   nil,    25,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    54,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    25,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    27,
-   nil,   nil,   nil,   nil,    25,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,    27,   nil,    51,    51,    51,   nil,    51,    51,
-    51,    51,    51,    51,    51,   nil,    51,    51,    51,   nil,
-   nil,    51,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    52,
    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,   nil,    51 ]
+   nil,    27,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,    27 ]
 
 racc_goto_pointer = [
-   nil,    89,    10,    26,   -13,     7,   nil,    -1,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    -7,
-    48,     1,    -1,  -136,   116,   346,   252,   354,   -15,   -10,
-   -21,   -11,     6,    19,   -64,   -33,  -124,     0,   -18,   nil,
-    57,   -16,  -153,   nil,   nil,   nil,  -189,   -22,   nil,   218,
-    -9,   528,    14,   -25,   335,   nil,  -166,   -12,  -285,   nil,
-   -54,  -120,   -23,  -249,   -13,  -157,  -173,   nil,  -147,  -121,
-  -171,  -203,   -28,    38,    18,   -80,    59,    23,     6,   -78,
-   -39,   -38,  -113,  -147,   -18,   -89,   nil ]
+   nil,   108,     7,    41,   -16,  -161,    19,   nil,    34,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    33,    56,     1,     2,  -136,   181,   150,   245,    30,   -12,
+    -6,    15,    -7,     2,    35,   -50,   -39,  -105,     0,   -38,
+   nil,    74,   -63,  -256,   nil,   nil,   nil,  -266,   -19,   nil,
+    32,   -16,   347,     2,   -21,    74,   nil,  -164,   -18,  -263,
+   nil,   -48,  -107,   -16,  -261,   116,  -175,  -200,   nil,  -161,
+  -100,  -162,  -185,   -24,    52,    -1,   -47,    70,    33,     8,
+   -63,   -26,   -24,  -104,  -120,     3,   -94,   nil ]
 
 racc_goto_default = [
-   nil,   nil,   nil,   168,    25,    28,    32,    35,     5,     6,
-    10,    13,    15,    18,    20,    24,    27,    31,    34,     4,
-   nil,    99,   nil,    79,   101,   103,   105,   108,   109,   113,
-    95,    96,     8,   nil,   nil,   nil,   nil,    85,   nil,    30,
-   nil,   nil,   161,   239,   164,   165,   nil,   nil,   144,   107,
-   110,   111,    67,   134,    98,   150,   151,   nil,   248,   104,
-   nil,   nil,   nil,   nil,    69,   nil,   nil,   300,    80,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    57,
-   nil,   nil,   nil,   nil,   nil,   nil,   192 ]
+   nil,   nil,   278,   208,    25,   nil,    31,    35,     4,     7,
+     9,    14,    16,    19,    21,    24,    28,    30,    34,     3,
+     6,   nil,    98,   nil,    76,   101,   102,   105,   107,   108,
+    93,    94,    96,    12,   nil,   nil,   nil,   nil,    83,   nil,
+    33,   nil,   nil,   204,   290,   205,   206,   nil,   nil,   147,
+   106,   109,    91,    64,   137,    97,   152,   153,   nil,   259,
+   104,   nil,   nil,   nil,   nil,    67,   nil,   nil,   301,    77,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    58,   nil,   nil,   nil,   nil,   nil,   nil,   197 ]
 
 racc_reduce_table = [
   0, 0, :racc_error,
-  1, 70, :_reduce_1,
+  1, 70, :_reduce_none,
   1, 70, :_reduce_none,
   1, 71, :_reduce_3,
   2, 71, :_reduce_4,
+  1, 74, :_reduce_5,
   1, 73, :_reduce_none,
   1, 73, :_reduce_none,
   1, 73, :_reduce_none,
@@ -695,224 +652,224 @@ racc_reduce_table = [
   1, 73, :_reduce_none,
   1, 73, :_reduce_none,
   1, 73, :_reduce_none,
-  3, 87, :_reduce_19,
-  3, 87, :_reduce_20,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
-  1, 88, :_reduce_none,
+  3, 88, :_reduce_20,
+  3, 88, :_reduce_21,
   1, 89, :_reduce_none,
   1, 89, :_reduce_none,
   1, 89, :_reduce_none,
-  1, 89, :_reduce_none,
-  4, 81, :_reduce_28,
-  5, 81, :_reduce_29,
-  3, 81, :_reduce_30,
-  2, 81, :_reduce_31,
-  1, 91, :_reduce_none,
-  1, 91, :_reduce_none,
-  3, 91, :_reduce_34,
-  3, 91, :_reduce_35,
-  1, 92, :_reduce_none,
-  1, 92, :_reduce_none,
-  1, 92, :_reduce_none,
-  1, 92, :_reduce_none,
+  1, 90, :_reduce_none,
+  1, 90, :_reduce_none,
+  1, 90, :_reduce_none,
+  1, 90, :_reduce_none,
+  4, 82, :_reduce_29,
+  5, 82, :_reduce_30,
+  3, 82, :_reduce_31,
+  2, 82, :_reduce_32,
   1, 92, :_reduce_none,
   1, 92, :_reduce_none,
-  1, 92, :_reduce_none,
-  1, 92, :_reduce_none,
-  1, 92, :_reduce_44,
-  5, 74, :_reduce_45,
-  5, 74, :_reduce_46,
-  5, 74, :_reduce_47,
-  5, 85, :_reduce_48,
-  2, 75, :_reduce_49,
-  1, 108, :_reduce_50,
-  2, 108, :_reduce_51,
-  6, 76, :_reduce_52,
-  2, 76, :_reduce_53,
-  3, 109, :_reduce_54,
-  3, 109, :_reduce_55,
-  1, 110, :_reduce_none,
-  1, 110, :_reduce_none,
-  3, 110, :_reduce_58,
+  3, 92, :_reduce_35,
+  3, 92, :_reduce_36,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_none,
+  1, 93, :_reduce_45,
+  5, 75, :_reduce_46,
+  5, 75, :_reduce_47,
+  5, 75, :_reduce_48,
+  5, 86, :_reduce_49,
+  2, 76, :_reduce_50,
+  1, 109, :_reduce_51,
+  2, 109, :_reduce_52,
+  6, 77, :_reduce_53,
+  2, 77, :_reduce_54,
+  3, 110, :_reduce_55,
+  3, 110, :_reduce_56,
   1, 111, :_reduce_none,
-  3, 111, :_reduce_60,
-  1, 112, :_reduce_61,
-  1, 112, :_reduce_62,
-  3, 113, :_reduce_63,
-  3, 113, :_reduce_64,
-  1, 114, :_reduce_none,
-  1, 114, :_reduce_none,
-  4, 116, :_reduce_67,
-  1, 102, :_reduce_none,
-  3, 102, :_reduce_69,
-  0, 103, :_reduce_none,
-  1, 103, :_reduce_none,
-  1, 118, :_reduce_72,
-  1, 93, :_reduce_73,
-  1, 95, :_reduce_74,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  1, 117, :_reduce_none,
-  3, 77, :_reduce_82,
-  3, 77, :_reduce_83,
-  3, 86, :_reduce_84,
-  0, 104, :_reduce_85,
-  1, 104, :_reduce_86,
-  3, 104, :_reduce_87,
-  3, 122, :_reduce_88,
-  3, 124, :_reduce_89,
-  1, 125, :_reduce_none,
-  1, 125, :_reduce_none,
-  0, 107, :_reduce_92,
-  1, 107, :_reduce_93,
-  3, 107, :_reduce_94,
-  1, 126, :_reduce_none,
-  3, 126, :_reduce_96,
-  1, 115, :_reduce_none,
-  1, 115, :_reduce_none,
-  1, 115, :_reduce_none,
-  1, 115, :_reduce_none,
+  1, 111, :_reduce_none,
+  3, 111, :_reduce_59,
+  1, 112, :_reduce_none,
+  3, 112, :_reduce_61,
+  1, 113, :_reduce_62,
+  1, 113, :_reduce_63,
+  3, 114, :_reduce_64,
+  3, 114, :_reduce_65,
   1, 115, :_reduce_none,
   1, 115, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  1, 123, :_reduce_none,
-  4, 97, :_reduce_115,
-  3, 97, :_reduce_116,
-  1, 99, :_reduce_117,
-  2, 99, :_reduce_118,
-  2, 129, :_reduce_119,
-  1, 130, :_reduce_120,
-  2, 130, :_reduce_121,
-  1, 96, :_reduce_122,
-  4, 90, :_reduce_123,
-  4, 90, :_reduce_124,
-  2, 79, :_reduce_125,
-  5, 131, :_reduce_126,
-  4, 131, :_reduce_127,
-  0, 132, :_reduce_none,
-  2, 132, :_reduce_129,
-  4, 132, :_reduce_130,
-  3, 132, :_reduce_131,
-  1, 120, :_reduce_none,
-  3, 120, :_reduce_133,
-  3, 120, :_reduce_134,
-  3, 120, :_reduce_135,
-  3, 120, :_reduce_136,
-  3, 120, :_reduce_137,
-  3, 120, :_reduce_138,
-  3, 120, :_reduce_139,
-  3, 120, :_reduce_140,
-  3, 120, :_reduce_141,
-  2, 120, :_reduce_142,
-  3, 120, :_reduce_143,
-  3, 120, :_reduce_144,
-  3, 120, :_reduce_145,
-  3, 120, :_reduce_146,
-  3, 120, :_reduce_147,
-  3, 120, :_reduce_148,
-  2, 120, :_reduce_149,
-  3, 120, :_reduce_150,
-  3, 120, :_reduce_151,
-  3, 120, :_reduce_152,
-  5, 78, :_reduce_153,
-  1, 134, :_reduce_none,
-  2, 134, :_reduce_155,
-  5, 135, :_reduce_156,
-  4, 135, :_reduce_157,
-  1, 136, :_reduce_none,
-  3, 136, :_reduce_159,
-  3, 98, :_reduce_160,
-  1, 138, :_reduce_none,
-  4, 138, :_reduce_162,
-  1, 140, :_reduce_none,
-  3, 140, :_reduce_164,
-  3, 139, :_reduce_165,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_none,
-  1, 137, :_reduce_173,
+  4, 117, :_reduce_68,
+  1, 103, :_reduce_none,
+  3, 103, :_reduce_70,
+  0, 104, :_reduce_none,
+  1, 104, :_reduce_none,
+  1, 119, :_reduce_73,
+  1, 94, :_reduce_74,
+  1, 96, :_reduce_75,
+  1, 118, :_reduce_none,
+  1, 118, :_reduce_none,
+  1, 118, :_reduce_none,
+  1, 118, :_reduce_none,
+  1, 118, :_reduce_none,
+  1, 118, :_reduce_none,
+  1, 118, :_reduce_none,
+  3, 78, :_reduce_83,
+  3, 78, :_reduce_84,
+  3, 87, :_reduce_85,
+  0, 105, :_reduce_86,
+  1, 105, :_reduce_87,
+  3, 105, :_reduce_88,
+  3, 123, :_reduce_89,
+  3, 125, :_reduce_90,
+  1, 126, :_reduce_none,
+  1, 126, :_reduce_none,
+  0, 108, :_reduce_93,
+  1, 108, :_reduce_94,
+  3, 108, :_reduce_95,
+  1, 127, :_reduce_none,
+  3, 127, :_reduce_97,
+  1, 116, :_reduce_none,
+  1, 116, :_reduce_none,
+  1, 116, :_reduce_none,
+  1, 116, :_reduce_none,
+  1, 116, :_reduce_none,
+  1, 116, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  1, 124, :_reduce_none,
+  4, 98, :_reduce_116,
+  3, 98, :_reduce_117,
+  1, 100, :_reduce_118,
+  2, 100, :_reduce_119,
+  2, 130, :_reduce_120,
+  1, 131, :_reduce_121,
+  2, 131, :_reduce_122,
+  1, 97, :_reduce_123,
+  4, 91, :_reduce_124,
+  4, 91, :_reduce_125,
+  2, 80, :_reduce_126,
+  5, 132, :_reduce_127,
+  4, 132, :_reduce_128,
+  0, 133, :_reduce_none,
+  2, 133, :_reduce_130,
+  4, 133, :_reduce_131,
+  3, 133, :_reduce_132,
+  1, 121, :_reduce_none,
+  3, 121, :_reduce_134,
+  3, 121, :_reduce_135,
+  3, 121, :_reduce_136,
+  3, 121, :_reduce_137,
+  3, 121, :_reduce_138,
+  3, 121, :_reduce_139,
+  3, 121, :_reduce_140,
+  3, 121, :_reduce_141,
+  3, 121, :_reduce_142,
+  2, 121, :_reduce_143,
+  3, 121, :_reduce_144,
+  3, 121, :_reduce_145,
+  3, 121, :_reduce_146,
+  3, 121, :_reduce_147,
+  3, 121, :_reduce_148,
+  3, 121, :_reduce_149,
+  2, 121, :_reduce_150,
+  3, 121, :_reduce_151,
+  3, 121, :_reduce_152,
+  3, 121, :_reduce_153,
+  5, 79, :_reduce_154,
+  1, 135, :_reduce_none,
+  2, 135, :_reduce_156,
+  5, 136, :_reduce_157,
+  4, 136, :_reduce_158,
   1, 137, :_reduce_none,
-  1, 141, :_reduce_175,
-  1, 142, :_reduce_none,
-  3, 142, :_reduce_177,
-  2, 80, :_reduce_178,
-  6, 82, :_reduce_179,
-  5, 82, :_reduce_180,
-  7, 83, :_reduce_181,
-  6, 83, :_reduce_182,
+  3, 137, :_reduce_160,
+  3, 99, :_reduce_161,
+  1, 139, :_reduce_none,
+  4, 139, :_reduce_163,
+  1, 141, :_reduce_none,
+  3, 141, :_reduce_165,
+  3, 140, :_reduce_166,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_none,
+  1, 138, :_reduce_174,
+  1, 138, :_reduce_none,
+  1, 142, :_reduce_176,
+  1, 143, :_reduce_none,
+  3, 143, :_reduce_178,
+  2, 81, :_reduce_179,
+  6, 83, :_reduce_180,
+  5, 83, :_reduce_181,
+  7, 84, :_reduce_182,
   6, 84, :_reduce_183,
-  5, 84, :_reduce_184,
-  1, 106, :_reduce_185,
-  1, 101, :_reduce_186,
-  1, 101, :_reduce_187,
-  1, 101, :_reduce_188,
-  1, 145, :_reduce_189,
-  3, 145, :_reduce_190,
-  1, 147, :_reduce_191,
+  6, 85, :_reduce_184,
+  5, 85, :_reduce_185,
+  1, 107, :_reduce_186,
+  1, 102, :_reduce_187,
+  1, 102, :_reduce_188,
+  1, 102, :_reduce_189,
+  1, 146, :_reduce_190,
+  3, 146, :_reduce_191,
   1, 148, :_reduce_192,
-  1, 148, :_reduce_193,
-  1, 148, :_reduce_194,
-  1, 148, :_reduce_none,
-  0, 72, :_reduce_196,
-  0, 149, :_reduce_197,
-  1, 143, :_reduce_none,
-  3, 143, :_reduce_199,
-  3, 143, :_reduce_200,
-  1, 150, :_reduce_none,
-  3, 150, :_reduce_202,
-  3, 151, :_reduce_203,
-  1, 151, :_reduce_204,
-  3, 151, :_reduce_205,
-  1, 151, :_reduce_206,
-  1, 146, :_reduce_none,
-  2, 146, :_reduce_208,
+  1, 149, :_reduce_193,
+  1, 149, :_reduce_194,
+  1, 149, :_reduce_195,
+  1, 149, :_reduce_none,
+  0, 72, :_reduce_197,
+  0, 150, :_reduce_198,
   1, 144, :_reduce_none,
-  2, 144, :_reduce_210,
-  1, 152, :_reduce_none,
-  1, 152, :_reduce_none,
-  1, 94, :_reduce_213,
-  3, 119, :_reduce_214,
-  4, 119, :_reduce_215,
-  2, 119, :_reduce_216,
-  1, 127, :_reduce_none,
-  1, 127, :_reduce_none,
-  0, 105, :_reduce_none,
-  1, 105, :_reduce_220,
-  1, 133, :_reduce_221,
-  3, 128, :_reduce_222,
-  4, 128, :_reduce_223,
-  2, 128, :_reduce_224,
+  3, 144, :_reduce_200,
+  3, 144, :_reduce_201,
+  1, 151, :_reduce_none,
+  3, 151, :_reduce_203,
+  3, 152, :_reduce_204,
+  1, 152, :_reduce_205,
+  3, 152, :_reduce_206,
+  1, 152, :_reduce_207,
+  1, 147, :_reduce_none,
+  2, 147, :_reduce_209,
+  1, 145, :_reduce_none,
+  2, 145, :_reduce_211,
   1, 153, :_reduce_none,
-  3, 153, :_reduce_226,
+  1, 153, :_reduce_none,
+  1, 95, :_reduce_214,
+  3, 120, :_reduce_215,
+  4, 120, :_reduce_216,
+  2, 120, :_reduce_217,
+  1, 128, :_reduce_none,
+  1, 128, :_reduce_none,
+  0, 106, :_reduce_none,
+  1, 106, :_reduce_221,
+  1, 134, :_reduce_222,
+  3, 129, :_reduce_223,
+  4, 129, :_reduce_224,
+  2, 129, :_reduce_225,
+  1, 154, :_reduce_none,
   3, 154, :_reduce_227,
-  1, 155, :_reduce_228,
-  1, 155, :_reduce_229,
-  4, 121, :_reduce_230,
-  1, 100, :_reduce_none,
-  4, 100, :_reduce_232 ]
+  3, 155, :_reduce_228,
+  1, 156, :_reduce_229,
+  1, 156, :_reduce_230,
+  4, 122, :_reduce_231,
+  1, 101, :_reduce_none,
+  4, 101, :_reduce_233 ]
 
-racc_reduce_n = 233
+racc_reduce_n = 234
 
-racc_shift_n = 384
+racc_shift_n = 385
 
 racc_token_table = {
   false => 0,
@@ -1077,9 +1034,10 @@ Racc_token_to_s_table = [
   "IN",
   "$start",
   "program",
-  "statements",
+  "statements_and_declarations",
   "nil",
-  "statement",
+  "statement_or_declaration",
+  "statements",
   "resource",
   "virtualresource",
   "collection",
@@ -1169,18 +1127,11 @@ Racc_debug_parser = false
 
 # reduce 0 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 31)
-  def _reduce_1(val, _values, result)
-      val[0].is_a_namespace = true
-  result = val[0]
-
-    result
-  end
-.,.,
+# reduce 1 omitted
 
 # reduce 2 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 37)
+module_eval(<<'.,.,', 'grammar.ra', 34)
   def _reduce_3(val, _values, result)
         result = ast AST::ASTArray, :children => [val[0]]
   
@@ -1188,7 +1139,7 @@ module_eval(<<'.,.,', 'grammar.ra', 37)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 40)
+module_eval(<<'.,.,', 'grammar.ra', 37)
   def _reduce_4(val, _values, result)
         val[0].push(val[1])
     result = val[0]
@@ -1197,7 +1148,18 @@ module_eval(<<'.,.,', 'grammar.ra', 40)
   end
 .,.,
 
-# reduce 5 omitted
+module_eval(<<'.,.,', 'grammar.ra', 44)
+  def _reduce_5(val, _values, result)
+      val[0].each do |stmt|
+    if stmt.is_a?(AST::TopLevelConstruct)
+      error "Classes, definitions, and nodes may only appear at toplevel or inside other classes"
+    end
+  end
+  result = val[0]
+
+    result
+  end
+.,.,
 
 # reduce 6 omitted
 
@@ -1225,24 +1187,24 @@ module_eval(<<'.,.,', 'grammar.ra', 40)
 
 # reduce 18 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 61)
-  def _reduce_19(val, _values, result)
+# reduce 19 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 69)
+  def _reduce_20(val, _values, result)
       result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context)
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 64)
-  def _reduce_20(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 72)
+  def _reduce_21(val, _values, result)
         result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context)
 
     result
   end
 .,.,
 
-# reduce 21 omitted
-
 # reduce 22 omitted
 
 # reduce 23 omitted
@@ -1255,8 +1217,10 @@ module_eval(<<'.,.,', 'grammar.ra', 64)
 
 # reduce 27 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 72)
-  def _reduce_28(val, _values, result)
+# reduce 28 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 80)
+  def _reduce_29(val, _values, result)
       args = aryfy(val[2])
   result = ast AST::Function,
     :name => val[0][:value],
@@ -1268,8 +1232,8 @@ module_eval(<<'.,.,', 'grammar.ra', 72)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 80)
-  def _reduce_29(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 88)
+  def _reduce_30(val, _values, result)
       args = aryfy(val[2])
   result = ast AST::Function,
     :name => val[0][:value],
@@ -1281,8 +1245,8 @@ module_eval(<<'.,.,', 'grammar.ra', 80)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 87)
-  def _reduce_30(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 95)
+  def _reduce_31(val, _values, result)
       result = ast AST::Function,
     :name => val[0][:value],
     :line => val[0][:line],
@@ -1293,8 +1257,8 @@ module_eval(<<'.,.,', 'grammar.ra', 87)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 94)
-  def _reduce_31(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 102)
+  def _reduce_32(val, _values, result)
         args = aryfy(val[1])
     result = ast AST::Function,
     :name => val[0][:value],
@@ -1306,12 +1270,12 @@ module_eval(<<'.,.,', 'grammar.ra', 94)
   end
 .,.,
 
-# reduce 32 omitted
-
 # reduce 33 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 105)
-  def _reduce_34(val, _values, result)
+# reduce 34 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 113)
+  def _reduce_35(val, _values, result)
         result = aryfy(val[0], val[2])
     result.line = @lexer.line
     result.file = @lexer.file
@@ -1320,8 +1284,8 @@ module_eval(<<'.,.,', 'grammar.ra', 105)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 110)
-  def _reduce_35(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 118)
+  def _reduce_36(val, _values, result)
         unless val[0].is_a?(AST::ASTArray)
     val[0] = aryfy(val[0])
   end
@@ -1334,8 +1298,6 @@ module_eval(<<'.,.,', 'grammar.ra', 110)
   end
 .,.,
 
-# reduce 36 omitted
-
 # reduce 37 omitted
 
 # reduce 38 omitted
@@ -1350,16 +1312,18 @@ module_eval(<<'.,.,', 'grammar.ra', 110)
 
 # reduce 43 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 130)
-  def _reduce_44(val, _values, result)
+# reduce 44 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 138)
+  def _reduce_45(val, _values, result)
         result = ast AST::Name, :value => val[0][:value]
       
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 134)
-  def _reduce_45(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 142)
+  def _reduce_46(val, _values, result)
       @lexer.commentpop
   array = val[2]
   array = [array] if array.instance_of?(AST::ResourceInstance)
@@ -1383,8 +1347,8 @@ module_eval(<<'.,.,', 'grammar.ra', 134)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 153)
-  def _reduce_46(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 161)
+  def _reduce_47(val, _values, result)
       # This is a deprecated syntax.
   error "All resource specifications require names"
 
@@ -1392,8 +1356,8 @@ module_eval(<<'.,.,', 'grammar.ra', 153)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 156)
-  def _reduce_47(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 164)
+  def _reduce_48(val, _values, result)
       # a defaults setting for a type
   @lexer.commentpop
   result = ast(AST::ResourceDefaults, :type => val[0], :parameters => val[2])
@@ -1402,8 +1366,8 @@ module_eval(<<'.,.,', 'grammar.ra', 156)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 163)
-  def _reduce_48(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 171)
+  def _reduce_49(val, _values, result)
       @lexer.commentpop
   result = ast AST::ResourceOverride, :object => val[0], :parameters => val[2]
 
@@ -1411,8 +1375,8 @@ module_eval(<<'.,.,', 'grammar.ra', 163)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 170)
-  def _reduce_49(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 178)
+  def _reduce_50(val, _values, result)
       type = val[0]
 
   if (type == :exported and ! Puppet[:storeconfigs]) and ! Puppet[:parseonly]
@@ -1438,22 +1402,22 @@ module_eval(<<'.,.,', 'grammar.ra', 170)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 192)
-  def _reduce_50(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 200)
+  def _reduce_51(val, _values, result)
      result = :virtual 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 193)
-  def _reduce_51(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 201)
+  def _reduce_52(val, _values, result)
      result = :exported 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 198)
-  def _reduce_52(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 206)
+  def _reduce_53(val, _values, result)
       @lexer.commentpop
   Puppet.warning addcontext("Collection names must now be capitalized") if val[0] =~ /^[a-z]/
   type = val[0].downcase
@@ -1476,8 +1440,8 @@ module_eval(<<'.,.,', 'grammar.ra', 198)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 217)
-  def _reduce_53(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 225)
+  def _reduce_54(val, _values, result)
         if val[0] =~ /^[a-z]/
     Puppet.warning addcontext("Collection names must now be capitalized")
   end
@@ -1500,8 +1464,8 @@ module_eval(<<'.,.,', 'grammar.ra', 217)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 238)
-  def _reduce_54(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 246)
+  def _reduce_55(val, _values, result)
       if val[1]
     result = val[1]
     result.form = :virtual
@@ -1513,8 +1477,8 @@ module_eval(<<'.,.,', 'grammar.ra', 238)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 246)
-  def _reduce_55(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 254)
+  def _reduce_56(val, _values, result)
         if val[1]
     result = val[1]
     result.form = :exported
@@ -1526,22 +1490,22 @@ module_eval(<<'.,.,', 'grammar.ra', 246)
   end
 .,.,
 
-# reduce 56 omitted
-
 # reduce 57 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 259)
-  def _reduce_58(val, _values, result)
+# reduce 58 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 267)
+  def _reduce_59(val, _values, result)
         result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
 
     result
   end
 .,.,
 
-# reduce 59 omitted
+# reduce 60 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 264)
-  def _reduce_60(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 272)
+  def _reduce_61(val, _values, result)
         result = val[1]
     result.parens = true
 
@@ -1549,22 +1513,22 @@ module_eval(<<'.,.,', 'grammar.ra', 264)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 268)
-  def _reduce_61(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 276)
+  def _reduce_62(val, _values, result)
      result=val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 269)
-  def _reduce_62(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 277)
+  def _reduce_63(val, _values, result)
      result=val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 272)
-  def _reduce_63(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 280)
+  def _reduce_64(val, _values, result)
       result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2]
   #result = ast AST::CollExpr
   #result.push *val
@@ -1573,8 +1537,8 @@ module_eval(<<'.,.,', 'grammar.ra', 272)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 277)
-  def _reduce_64(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 285)
+  def _reduce_65(val, _values, result)
         result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2]
     #result = ast AST::CollExpr
     #result.push *val
@@ -1583,22 +1547,22 @@ module_eval(<<'.,.,', 'grammar.ra', 277)
   end
 .,.,
 
-# reduce 65 omitted
-
 # reduce 66 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 286)
-  def _reduce_67(val, _values, result)
+# reduce 67 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 294)
+  def _reduce_68(val, _values, result)
       result = ast AST::ResourceInstance, :children => [val[0],val[2]]
 
     result
   end
 .,.,
 
-# reduce 68 omitted
+# reduce 69 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 291)
-  def _reduce_69(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 299)
+  def _reduce_70(val, _values, result)
         if val[0].instance_of?(AST::ResourceInstance)
     result = ast AST::ASTArray, :children => [val[0],val[2]]
   else
@@ -1610,36 +1574,34 @@ module_eval(<<'.,.,', 'grammar.ra', 291)
   end
 .,.,
 
-# reduce 70 omitted
-
 # reduce 71 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 303)
-  def _reduce_72(val, _values, result)
+# reduce 72 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 311)
+  def _reduce_73(val, _values, result)
       result = ast AST::Undef, :value => :undef
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 307)
-  def _reduce_73(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 315)
+  def _reduce_74(val, _values, result)
       result = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 311)
-  def _reduce_74(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 319)
+  def _reduce_75(val, _values, result)
       result = ast AST::Type, :value => val[0][:value], :line => val[0][:line]
 
     result
   end
 .,.,
 
-# reduce 75 omitted
-
 # reduce 76 omitted
 
 # reduce 77 omitted
@@ -1652,8 +1614,10 @@ module_eval(<<'.,.,', 'grammar.ra', 311)
 
 # reduce 81 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 323)
-  def _reduce_82(val, _values, result)
+# reduce 82 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 331)
+  def _reduce_83(val, _values, result)
       raise Puppet::ParseError, "Cannot assign to variables in other namespaces" if val[0][:value] =~ /::/
   # this is distinct from referencing a variable
   variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
@@ -1663,16 +1627,16 @@ module_eval(<<'.,.,', 'grammar.ra', 323)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 329)
-  def _reduce_83(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 337)
+  def _reduce_84(val, _values, result)
         result = ast AST::VarDef, :name => val[0], :value => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 333)
-  def _reduce_84(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 341)
+  def _reduce_85(val, _values, result)
       variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
   result = ast AST::VarDef, :name => variable, :value => val[2], :append => true, :line => val[0][:line]
 
@@ -1680,23 +1644,23 @@ module_eval(<<'.,.,', 'grammar.ra', 333)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 339)
-  def _reduce_85(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 347)
+  def _reduce_86(val, _values, result)
       result = ast AST::ASTArray
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 341)
-  def _reduce_86(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 349)
+  def _reduce_87(val, _values, result)
      result = val[0] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 343)
-  def _reduce_87(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 351)
+  def _reduce_88(val, _values, result)
         if val[0].instance_of?(AST::ASTArray)
     val[0].push(val[2])
     result = val[0]
@@ -1708,16 +1672,16 @@ module_eval(<<'.,.,', 'grammar.ra', 343)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 352)
-  def _reduce_88(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 360)
+  def _reduce_89(val, _values, result)
       result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 356)
-  def _reduce_89(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 364)
+  def _reduce_90(val, _values, result)
       result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2],
     :add => true
 
@@ -1725,27 +1689,27 @@ module_eval(<<'.,.,', 'grammar.ra', 356)
   end
 .,.,
 
-# reduce 90 omitted
-
 # reduce 91 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 365)
-  def _reduce_92(val, _values, result)
+# reduce 92 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 373)
+  def _reduce_93(val, _values, result)
       result = ast AST::ASTArray
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 367)
-  def _reduce_93(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 375)
+  def _reduce_94(val, _values, result)
      result = val[0] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 369)
-  def _reduce_94(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 377)
+  def _reduce_95(val, _values, result)
         if val[0].instance_of?(AST::ASTArray)
     val[0].push(val[2])
     result = val[0]
@@ -1757,10 +1721,10 @@ module_eval(<<'.,.,', 'grammar.ra', 369)
   end
 .,.,
 
-# reduce 95 omitted
+# reduce 96 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 379)
-  def _reduce_96(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 387)
+  def _reduce_97(val, _values, result)
         if val[0].instance_of?(AST::ASTArray)
     result = val[0].push(val[2])
   else
@@ -1771,8 +1735,6 @@ module_eval(<<'.,.,', 'grammar.ra', 379)
   end
 .,.,
 
-# reduce 97 omitted
-
 # reduce 98 omitted
 
 # reduce 99 omitted
@@ -1807,8 +1769,10 @@ module_eval(<<'.,.,', 'grammar.ra', 379)
 
 # reduce 114 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 408)
-  def _reduce_115(val, _values, result)
+# reduce 115 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 416)
+  def _reduce_116(val, _values, result)
       args = aryfy(val[2])
   result = ast AST::Function,
     :name => val[0][:value], :line => val[0][:line],
@@ -1819,8 +1783,8 @@ module_eval(<<'.,.,', 'grammar.ra', 408)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 414)
-  def _reduce_116(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 422)
+  def _reduce_117(val, _values, result)
       result = ast AST::Function,
     :name => val[0][:value], :line => val[0][:line],
     :arguments => AST::ASTArray.new({}),
@@ -1830,51 +1794,51 @@ module_eval(<<'.,.,', 'grammar.ra', 414)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 420)
-  def _reduce_117(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 428)
+  def _reduce_118(val, _values, result)
      result = ast AST::String, :value => val[0][:value],                  :line => val[0][:line] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 421)
-  def _reduce_118(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 429)
+  def _reduce_119(val, _values, result)
      result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 423)
-  def _reduce_119(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 431)
+  def _reduce_120(val, _values, result)
      result = [val[0]] + val[1] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 425)
-  def _reduce_120(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 433)
+  def _reduce_121(val, _values, result)
      result = [ast(AST::String,val[0])]          
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 426)
-  def _reduce_121(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 434)
+  def _reduce_122(val, _values, result)
      result = [ast(AST::String,val[0])] + val[1] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 429)
-  def _reduce_122(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 437)
+  def _reduce_123(val, _values, result)
       result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 433)
-  def _reduce_123(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 441)
+  def _reduce_124(val, _values, result)
       Puppet.warning addcontext("Deprecation notice:  Resource references should now be capitalized")
   result = ast AST::ResourceReference, :type => val[0][:value], :line => val[0][:line], :title => val[2]
 
@@ -1882,24 +1846,24 @@ module_eval(<<'.,.,', 'grammar.ra', 433)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 436)
-  def _reduce_124(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 444)
+  def _reduce_125(val, _values, result)
       result = ast AST::ResourceReference, :type => val[0], :title => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 440)
-  def _reduce_125(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 448)
+  def _reduce_126(val, _values, result)
       result = val[1]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 444)
-  def _reduce_126(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 452)
+  def _reduce_127(val, _values, result)
       @lexer.commentpop
   args = {
     :test => val[0],
@@ -1914,8 +1878,8 @@ module_eval(<<'.,.,', 'grammar.ra', 444)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 455)
-  def _reduce_127(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 463)
+  def _reduce_128(val, _values, result)
         @lexer.commentpop
     args = {
       :test => val[0],
@@ -1930,18 +1894,18 @@ module_eval(<<'.,.,', 'grammar.ra', 455)
   end
 .,.,
 
-# reduce 128 omitted
+# reduce 129 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 468)
-  def _reduce_129(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 476)
+  def _reduce_130(val, _values, result)
         result = ast AST::Else, :statements => val[1]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 471)
-  def _reduce_130(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 479)
+  def _reduce_131(val, _values, result)
         @lexer.commentpop
     result = ast AST::Else, :statements => val[2]
 
@@ -1949,8 +1913,8 @@ module_eval(<<'.,.,', 'grammar.ra', 471)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 475)
-  def _reduce_131(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 483)
+  def _reduce_132(val, _values, result)
         @lexer.commentpop
     result = ast AST::Else, :statements => ast(AST::Nop)
 
@@ -1958,25 +1922,17 @@ module_eval(<<'.,.,', 'grammar.ra', 475)
   end
 .,.,
 
-# reduce 132 omitted
+# reduce 133 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 493)
-  def _reduce_133(val, _values, result)
-        result = ast AST::InOperator, :lval => val[0], :rval => val[2]
-
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'grammar.ra', 496)
+module_eval(<<'.,.,', 'grammar.ra', 501)
   def _reduce_134(val, _values, result)
-        result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+        result = ast AST::InOperator, :lval => val[0], :rval => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 499)
+module_eval(<<'.,.,', 'grammar.ra', 504)
   def _reduce_135(val, _values, result)
         result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -1984,15 +1940,15 @@ module_eval(<<'.,.,', 'grammar.ra', 499)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 502)
+module_eval(<<'.,.,', 'grammar.ra', 507)
   def _reduce_136(val, _values, result)
-        result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+        result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 505)
+module_eval(<<'.,.,', 'grammar.ra', 510)
   def _reduce_137(val, _values, result)
         result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2000,7 +1956,7 @@ module_eval(<<'.,.,', 'grammar.ra', 505)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 508)
+module_eval(<<'.,.,', 'grammar.ra', 513)
   def _reduce_138(val, _values, result)
         result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2008,7 +1964,7 @@ module_eval(<<'.,.,', 'grammar.ra', 508)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 511)
+module_eval(<<'.,.,', 'grammar.ra', 516)
   def _reduce_139(val, _values, result)
         result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2016,7 +1972,7 @@ module_eval(<<'.,.,', 'grammar.ra', 511)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 514)
+module_eval(<<'.,.,', 'grammar.ra', 519)
   def _reduce_140(val, _values, result)
         result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2024,7 +1980,7 @@ module_eval(<<'.,.,', 'grammar.ra', 514)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 517)
+module_eval(<<'.,.,', 'grammar.ra', 522)
   def _reduce_141(val, _values, result)
         result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2032,23 +1988,23 @@ module_eval(<<'.,.,', 'grammar.ra', 517)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 520)
+module_eval(<<'.,.,', 'grammar.ra', 525)
   def _reduce_142(val, _values, result)
-        result = ast AST::Minus, :value => val[1]
+        result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 523)
+module_eval(<<'.,.,', 'grammar.ra', 528)
   def _reduce_143(val, _values, result)
-        result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+        result = ast AST::Minus, :value => val[1]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 526)
+module_eval(<<'.,.,', 'grammar.ra', 531)
   def _reduce_144(val, _values, result)
         result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2056,7 +2012,7 @@ module_eval(<<'.,.,', 'grammar.ra', 526)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 529)
+module_eval(<<'.,.,', 'grammar.ra', 534)
   def _reduce_145(val, _values, result)
         result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2064,7 +2020,7 @@ module_eval(<<'.,.,', 'grammar.ra', 529)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 532)
+module_eval(<<'.,.,', 'grammar.ra', 537)
   def _reduce_146(val, _values, result)
         result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2072,7 +2028,7 @@ module_eval(<<'.,.,', 'grammar.ra', 532)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 535)
+module_eval(<<'.,.,', 'grammar.ra', 540)
   def _reduce_147(val, _values, result)
         result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2080,7 +2036,7 @@ module_eval(<<'.,.,', 'grammar.ra', 535)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 538)
+module_eval(<<'.,.,', 'grammar.ra', 543)
   def _reduce_148(val, _values, result)
         result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2088,23 +2044,23 @@ module_eval(<<'.,.,', 'grammar.ra', 538)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 541)
+module_eval(<<'.,.,', 'grammar.ra', 546)
   def _reduce_149(val, _values, result)
-        result = ast AST::Not, :value => val[1]
+        result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 544)
+module_eval(<<'.,.,', 'grammar.ra', 549)
   def _reduce_150(val, _values, result)
-        result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+        result = ast AST::Not, :value => val[1]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 547)
+module_eval(<<'.,.,', 'grammar.ra', 552)
   def _reduce_151(val, _values, result)
         result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
@@ -2112,16 +2068,24 @@ module_eval(<<'.,.,', 'grammar.ra', 547)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 550)
+module_eval(<<'.,.,', 'grammar.ra', 555)
   def _reduce_152(val, _values, result)
-        result = val[1]
+        result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 554)
+module_eval(<<'.,.,', 'grammar.ra', 558)
   def _reduce_153(val, _values, result)
+        result = val[1]
+
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'grammar.ra', 562)
+  def _reduce_154(val, _values, result)
       @lexer.commentpop
   options = val[3]
   options = ast AST::ASTArray, :children => [val[3]] unless options.instance_of?(AST::ASTArray)
@@ -2131,10 +2095,10 @@ module_eval(<<'.,.,', 'grammar.ra', 554)
   end
 .,.,
 
-# reduce 154 omitted
+# reduce 155 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 562)
-  def _reduce_155(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 570)
+  def _reduce_156(val, _values, result)
         if val[0].instance_of?(AST::ASTArray)
     val[0].push val[1]
     result = val[0]
@@ -2146,8 +2110,8 @@ module_eval(<<'.,.,', 'grammar.ra', 562)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 571)
-  def _reduce_156(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 579)
+  def _reduce_157(val, _values, result)
       @lexer.commentpop
   result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
 
@@ -2155,8 +2119,8 @@ module_eval(<<'.,.,', 'grammar.ra', 571)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 574)
-  def _reduce_157(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 582)
+  def _reduce_158(val, _values, result)
       @lexer.commentpop
 
     result = ast(
@@ -2170,10 +2134,10 @@ module_eval(<<'.,.,', 'grammar.ra', 574)
   end
 .,.,
 
-# reduce 158 omitted
+# reduce 159 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 586)
-  def _reduce_159(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 594)
+  def _reduce_160(val, _values, result)
         if val[0].instance_of?(AST::ASTArray)
     val[0].push(val[2])
     result = val[0]
@@ -2185,18 +2149,18 @@ module_eval(<<'.,.,', 'grammar.ra', 586)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 595)
-  def _reduce_160(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 603)
+  def _reduce_161(val, _values, result)
       result = ast AST::Selector, :param => val[0], :values => val[2]
 
     result
   end
 .,.,
 
-# reduce 161 omitted
+# reduce 162 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 600)
-  def _reduce_162(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 608)
+  def _reduce_163(val, _values, result)
         @lexer.commentpop
     result = val[1]
 
@@ -2204,10 +2168,10 @@ module_eval(<<'.,.,', 'grammar.ra', 600)
   end
 .,.,
 
-# reduce 163 omitted
+# reduce 164 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 606)
-  def _reduce_164(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 614)
+  def _reduce_165(val, _values, result)
         if val[0].instance_of?(AST::ASTArray)
     val[0].push(val[2])
     result = val[0]
@@ -2219,16 +2183,14 @@ module_eval(<<'.,.,', 'grammar.ra', 606)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 615)
-  def _reduce_165(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 623)
+  def _reduce_166(val, _values, result)
       result = ast AST::ResourceParam, :param => val[0], :value => val[2]
 
     result
   end
 .,.,
 
-# reduce 166 omitted
-
 # reduce 167 omitted
 
 # reduce 168 omitted
@@ -2241,34 +2203,36 @@ module_eval(<<'.,.,', 'grammar.ra', 615)
 
 # reduce 172 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 626)
-  def _reduce_173(val, _values, result)
+# reduce 173 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 634)
+  def _reduce_174(val, _values, result)
         result = ast AST::Default, :value => val[0][:value], :line => val[0][:line]
 
     result
   end
 .,.,
 
-# reduce 174 omitted
+# reduce 175 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 631)
-  def _reduce_175(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 639)
+  def _reduce_176(val, _values, result)
      result = [val[0][:value]] 
     result
   end
 .,.,
 
-# reduce 176 omitted
+# reduce 177 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 633)
-  def _reduce_177(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 641)
+  def _reduce_178(val, _values, result)
      result = val[0] += val[2] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 636)
-  def _reduce_178(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 644)
+  def _reduce_179(val, _values, result)
       val[1].each do |file|
     import(file)
   end
@@ -2279,8 +2243,8 @@ module_eval(<<'.,.,', 'grammar.ra', 636)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 646)
-  def _reduce_179(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 654)
+  def _reduce_180(val, _values, result)
       @lexer.commentpop
   result = Puppet::Parser::AST::Definition.new(classname(val[1]),
                                                ast_context(true).merge(:arguments => val[2], :code => val[4],
@@ -2293,8 +2257,8 @@ module_eval(<<'.,.,', 'grammar.ra', 646)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 654)
-  def _reduce_180(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 662)
+  def _reduce_181(val, _values, result)
       @lexer.commentpop
   result = Puppet::Parser::AST::Definition.new(classname(val[1]),
                                                ast_context(true).merge(:arguments => val[2], :line => val[0][:line]))
@@ -2304,12 +2268,11 @@ module_eval(<<'.,.,', 'grammar.ra', 654)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 662)
-  def _reduce_181(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 670)
+  def _reduce_182(val, _values, result)
       @lexer.commentpop
   # Our class gets defined in the parent namespace, not our own.
   @lexer.namepop
-  val[5].is_a_namespace = true
   result = Puppet::Parser::AST::Hostclass.new(classname(val[1]),
                                               ast_context(true).merge(:arguments => val[2], :parent => val[3],
                                                                       :code => val[5], :line => val[0][:line]))
@@ -2318,8 +2281,8 @@ module_eval(<<'.,.,', 'grammar.ra', 662)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 670)
-  def _reduce_182(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 677)
+  def _reduce_183(val, _values, result)
       @lexer.commentpop
   # Our class gets defined in the parent namespace, not our own.
   @lexer.namepop
@@ -2331,8 +2294,8 @@ module_eval(<<'.,.,', 'grammar.ra', 670)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 679)
-  def _reduce_183(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 686)
+  def _reduce_184(val, _values, result)
       @lexer.commentpop
   result = Puppet::Parser::AST::Node.new(val[1],
                                          ast_context(true).merge(:parent => val[2], :code => val[4],
@@ -2342,8 +2305,8 @@ module_eval(<<'.,.,', 'grammar.ra', 679)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 684)
-  def _reduce_184(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 691)
+  def _reduce_185(val, _values, result)
       @lexer.commentpop
   result = Puppet::Parser::AST::Node.new(val[1], ast_context(true).merge(:parent => val[2], :line => val[0][:line]))
 
@@ -2351,44 +2314,44 @@ module_eval(<<'.,.,', 'grammar.ra', 684)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 688)
-  def _reduce_185(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 695)
+  def _reduce_186(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 690)
-  def _reduce_186(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 697)
+  def _reduce_187(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 691)
-  def _reduce_187(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 698)
+  def _reduce_188(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 692)
-  def _reduce_188(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 699)
+  def _reduce_189(val, _values, result)
      result = "class" 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 697)
-  def _reduce_189(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 704)
+  def _reduce_190(val, _values, result)
         result = [result]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 700)
-  def _reduce_190(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 707)
+  def _reduce_191(val, _values, result)
         result = val[0]
     result << val[2]
 
@@ -2396,65 +2359,65 @@ module_eval(<<'.,.,', 'grammar.ra', 700)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 705)
-  def _reduce_191(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 712)
+  def _reduce_192(val, _values, result)
       result = ast AST::HostName, :value => val[0]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 708)
-  def _reduce_192(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 715)
+  def _reduce_193(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 709)
-  def _reduce_193(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 716)
+  def _reduce_194(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 710)
-  def _reduce_194(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 717)
+  def _reduce_195(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-# reduce 195 omitted
+# reduce 196 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 714)
-  def _reduce_196(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 721)
+  def _reduce_197(val, _values, result)
       result = nil
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 718)
-  def _reduce_197(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 725)
+  def _reduce_198(val, _values, result)
       result = ast AST::ASTArray, :children => []
 
     result
   end
 .,.,
 
-# reduce 198 omitted
+# reduce 199 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 723)
-  def _reduce_199(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 730)
+  def _reduce_200(val, _values, result)
         result = nil
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 726)
-  def _reduce_200(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 733)
+  def _reduce_201(val, _values, result)
         result = val[1]
     result = [result] unless result[0].is_a?(Array)
 
@@ -2462,10 +2425,10 @@ module_eval(<<'.,.,', 'grammar.ra', 726)
   end
 .,.,
 
-# reduce 201 omitted
+# reduce 202 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 732)
-  def _reduce_202(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 739)
+  def _reduce_203(val, _values, result)
         result = val[0]
     result = [result] unless result[0].is_a?(Array)
     result << val[2]
@@ -2474,8 +2437,8 @@ module_eval(<<'.,.,', 'grammar.ra', 732)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 738)
-  def _reduce_203(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 745)
+  def _reduce_204(val, _values, result)
       Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
   result = [val[0][:value], val[2]]
 
@@ -2483,8 +2446,8 @@ module_eval(<<'.,.,', 'grammar.ra', 738)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 742)
-  def _reduce_204(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 749)
+  def _reduce_205(val, _values, result)
         Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
     result = [val[0][:value]]
 
@@ -2492,56 +2455,56 @@ module_eval(<<'.,.,', 'grammar.ra', 742)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 745)
-  def _reduce_205(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 752)
+  def _reduce_206(val, _values, result)
       result = [val[0][:value], val[2]]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 747)
-  def _reduce_206(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 754)
+  def _reduce_207(val, _values, result)
       result = [val[0][:value]]
 
     result
   end
 .,.,
 
-# reduce 207 omitted
+# reduce 208 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 752)
-  def _reduce_208(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 759)
+  def _reduce_209(val, _values, result)
         result = val[1]
 
     result
   end
 .,.,
 
-# reduce 209 omitted
+# reduce 210 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 757)
-  def _reduce_210(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 764)
+  def _reduce_211(val, _values, result)
         result = val[1]
 
     result
   end
 .,.,
 
-# reduce 211 omitted
-
 # reduce 212 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 763)
-  def _reduce_213(val, _values, result)
+# reduce 213 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 770)
+  def _reduce_214(val, _values, result)
       result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 767)
-  def _reduce_214(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 774)
+  def _reduce_215(val, _values, result)
       if val[1].instance_of?(AST::ASTArray)
     result = val[1]
   else
@@ -2552,8 +2515,8 @@ module_eval(<<'.,.,', 'grammar.ra', 767)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 774)
-  def _reduce_215(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 781)
+  def _reduce_216(val, _values, result)
         if val[1].instance_of?(AST::ASTArray)
     result = val[1]
   else
@@ -2564,37 +2527,37 @@ module_eval(<<'.,.,', 'grammar.ra', 774)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 780)
-  def _reduce_216(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 787)
+  def _reduce_217(val, _values, result)
       result = ast AST::ASTArray
 
     result
   end
 .,.,
 
-# reduce 217 omitted
-
 # reduce 218 omitted
 
 # reduce 219 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 787)
-  def _reduce_220(val, _values, result)
+# reduce 220 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 794)
+  def _reduce_221(val, _values, result)
      result = nil 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 790)
-  def _reduce_221(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 797)
+  def _reduce_222(val, _values, result)
       result = ast AST::Regex, :value => val[0][:value]
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 794)
-  def _reduce_222(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 801)
+  def _reduce_223(val, _values, result)
       if val[1].instance_of?(AST::ASTHash)
     result = val[1]
   else
@@ -2605,8 +2568,8 @@ module_eval(<<'.,.,', 'grammar.ra', 794)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 801)
-  def _reduce_223(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 808)
+  def _reduce_224(val, _values, result)
         if val[1].instance_of?(AST::ASTHash)
     result = val[1]
   else
@@ -2617,18 +2580,18 @@ module_eval(<<'.,.,', 'grammar.ra', 801)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 807)
-  def _reduce_224(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 814)
+  def _reduce_225(val, _values, result)
       result = ast AST::ASTHash
 
     result
   end
 .,.,
 
-# reduce 225 omitted
+# reduce 226 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 812)
-  def _reduce_226(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 819)
+  def _reduce_227(val, _values, result)
         if val[0].instance_of?(AST::ASTHash)
     result = val[0].merge(val[2])
   else
@@ -2640,40 +2603,40 @@ module_eval(<<'.,.,', 'grammar.ra', 812)
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 821)
-  def _reduce_227(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 828)
+  def _reduce_228(val, _values, result)
       result = ast AST::ASTHash, { :value => { val[0] => val[2] } }
 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 824)
-  def _reduce_228(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 831)
+  def _reduce_229(val, _values, result)
      result = val[0][:value] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 825)
-  def _reduce_229(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 832)
+  def _reduce_230(val, _values, result)
      result = val[0] 
     result
   end
 .,.,
 
-module_eval(<<'.,.,', 'grammar.ra', 828)
-  def _reduce_230(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 835)
+  def _reduce_231(val, _values, result)
       result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2]
 
     result
   end
 .,.,
 
-# reduce 231 omitted
+# reduce 232 omitted
 
-module_eval(<<'.,.,', 'grammar.ra', 833)
-  def _reduce_232(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 840)
+  def _reduce_233(val, _values, result)
         result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2]
 
     result
diff --git a/spec/integration/parser/compiler_spec.rb b/spec/integration/parser/compiler_spec.rb
index 266347c..ffff4d8 100755
--- a/spec/integration/parser/compiler_spec.rb
+++ b/spec/integration/parser/compiler_spec.rb
@@ -81,7 +81,7 @@ describe Puppet::Parser::Compiler do
     Puppet::Parser::Compiler.compile(node).version.should == 2
   end
 
-  it "should not allow classes inside conditional constructs" do
+  it "should not allow classes inside evaluated conditional constructs" do
     Puppet[:code] = <<-PP
       if true {
         class foo {
@@ -91,4 +91,15 @@ describe Puppet::Parser::Compiler do
 
     lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
   end
+
+  it "should not allow classes inside unevaluated conditional constructs" do
+    Puppet[:code] = <<-PP
+      if false {
+        class foo {
+        }
+      }
+    PP
+
+    lambda { Puppet::Parser::Compiler.compile(Puppet::Node.new("mynode")) }.should raise_error(Puppet::Error)
+  end
 end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list