diff options
author | Brice Figureau <brice-puppet@daysofwonder.com> | 2009-11-14 19:51:15 +0100 |
---|---|---|
committer | test branch <puppet-dev@googlegroups.com> | 2010-02-17 06:50:53 -0800 |
commit | 164f1ce85bad49c7e197deeb452828c94539e06e (patch) | |
tree | 6978a10e67447e0a28ed73dd2a0f352c4d6470df | |
parent | fd427a51bc2bd97656767acc7f6b48160f8e60c4 (diff) | |
download | puppet-164f1ce85bad49c7e197deeb452828c94539e06e.tar.gz puppet-164f1ce85bad49c7e197deeb452828c94539e06e.tar.xz puppet-164f1ce85bad49c7e197deeb452828c94539e06e.zip |
Allow adding single key to hashes
This patch allow this syntax:
$hash[mykey] = 12
If the key already exist an error is raised. Hashes are essentially
write only, like puppet variables.
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
-rw-r--r-- | lib/puppet/parser/ast/leaf.rb | 27 | ||||
-rw-r--r-- | lib/puppet/parser/ast/vardef.rb | 12 | ||||
-rw-r--r-- | lib/puppet/parser/grammar.ra | 3 | ||||
-rw-r--r-- | lib/puppet/parser/parser.rb | 1736 | ||||
-rwxr-xr-x | spec/unit/parser/ast/leaf.rb | 117 | ||||
-rwxr-xr-x | spec/unit/parser/ast/vardef.rb | 13 |
6 files changed, 1007 insertions, 901 deletions
diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb index 206ea5cbe..0f427ef37 100644 --- a/lib/puppet/parser/ast/leaf.rb +++ b/lib/puppet/parser/ast/leaf.rb @@ -142,17 +142,36 @@ class Puppet::Parser::AST class HashOrArrayAccess < AST::Leaf attr_accessor :variable, :key - def evaluate(scope) + def evaluate_container(scope) container = variable.respond_to?(:evaluate) ? variable.safeevaluate(scope) : variable - object = (container.is_a?(Hash) or container.is_a?(Array)) ? container : scope.lookupvar(container) + (container.is_a?(Hash) or container.is_a?(Array)) ? container : scope.lookupvar(container) + end - accesskey = key.respond_to?(:evaluate) ? key.safeevaluate(scope) : key + def evaluate_key(scope) + key.respond_to?(:evaluate) ? key.safeevaluate(scope) : key + end + + def evaluate(scope) + object = evaluate_container(scope) unless object.is_a?(Hash) or object.is_a?(Array) raise Puppet::ParseError, "#{variable} is not an hash or array when accessing it with #{accesskey}" end - return object[accesskey] + return object[evaluate_key(scope)] + end + + # Assign value to this hashkey or array index + def assign(scope, value) + object = evaluate_container(scope) + accesskey = evaluate_key(scope) + + if object.is_a?(Hash) and object.include?(accesskey) + raise Puppet::ParseError, "Assigning to the hash '#{variable}' with an existing key '#{accesskey}' is forbidden" + end + + # assign to hash or array + object[accesskey] = value end def to_s diff --git a/lib/puppet/parser/ast/vardef.rb b/lib/puppet/parser/ast/vardef.rb index ae24b3233..f103d49c3 100644 --- a/lib/puppet/parser/ast/vardef.rb +++ b/lib/puppet/parser/ast/vardef.rb @@ -13,11 +13,15 @@ class Puppet::Parser::AST # Look up our name and value, and store them appropriately. The # lexer strips off the syntax stuff like '$'. def evaluate(scope) - name = @name.safeevaluate(scope) value = @value.safeevaluate(scope) - - parsewrap do - scope.setvar(name,value, :file => @file, :line => @line, :append => @append) + if name.is_a?(HashOrArrayAccess) + name.assign(scope, value) + else + name = @name.safeevaluate(scope) + + parsewrap do + scope.setvar(name,value, :file => @file, :line => @line, :append => @append) + end end end diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index 6b7b31b34..76a82e38e 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -336,6 +336,9 @@ assignment: VARIABLE EQUALS expression { variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :line => val[0][:line] } + | hasharrayaccess EQUALS expression { + result = ast AST::VarDef, :name => val[0], :value => val[2] +} append: VARIABLE APPENDS expression { variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb index 5c05e5592..7e9235f66 100644 --- a/lib/puppet/parser/parser.rb +++ b/lib/puppet/parser/parser.rb @@ -29,7 +29,7 @@ module Puppet class Parser < Racc::Parser -module_eval <<'..end grammar.ra modeval..id6e4c43cdab', 'grammar.ra', 850 +module_eval <<'..end grammar.ra modeval..id884310a196', 'grammar.ra', 853 # It got too annoying having code in a file that needs to be compiled. require 'puppet/parser/parser_support' @@ -41,7 +41,7 @@ require 'puppet/parser/parser_support' # $Id$ -..end grammar.ra modeval..id6e4c43cdab +..end grammar.ra modeval..id884310a196 ##### racc 1.4.5 generates ### @@ -119,51 +119,51 @@ racc_reduce_table = [ 1, 107, :_reduce_none, 1, 107, :_reduce_none, 3, 70, :_reduce_72, - 3, 79, :_reduce_73, - 0, 94, :_reduce_74, - 1, 94, :_reduce_75, - 3, 94, :_reduce_76, - 3, 111, :_reduce_77, - 3, 113, :_reduce_78, - 1, 114, :_reduce_none, - 1, 114, :_reduce_none, - 0, 97, :_reduce_81, - 1, 97, :_reduce_82, - 3, 97, :_reduce_83, + 3, 70, :_reduce_73, + 3, 79, :_reduce_74, + 0, 94, :_reduce_75, + 1, 94, :_reduce_76, + 3, 94, :_reduce_77, + 3, 112, :_reduce_78, + 3, 114, :_reduce_79, 1, 115, :_reduce_none, - 3, 115, :_reduce_85, + 1, 115, :_reduce_none, + 0, 97, :_reduce_82, + 1, 97, :_reduce_83, + 3, 97, :_reduce_84, + 1, 116, :_reduce_none, + 3, 116, :_reduce_86, 1, 105, :_reduce_none, 1, 105, :_reduce_none, 1, 105, :_reduce_none, 1, 105, :_reduce_none, 1, 105, :_reduce_none, 1, 105, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 4, 87, :_reduce_104, - 3, 87, :_reduce_105, - 1, 89, :_reduce_106, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 1, 113, :_reduce_none, + 4, 87, :_reduce_105, + 3, 87, :_reduce_106, 1, 89, :_reduce_107, - 1, 86, :_reduce_108, - 4, 82, :_reduce_109, + 1, 89, :_reduce_108, + 1, 86, :_reduce_109, 4, 82, :_reduce_110, - 6, 72, :_reduce_111, - 5, 72, :_reduce_112, - 0, 118, :_reduce_none, - 4, 118, :_reduce_114, - 3, 118, :_reduce_115, + 4, 82, :_reduce_111, + 6, 72, :_reduce_112, + 5, 72, :_reduce_113, + 0, 119, :_reduce_none, + 4, 119, :_reduce_115, + 3, 119, :_reduce_116, 1, 110, :_reduce_none, - 3, 110, :_reduce_117, 3, 110, :_reduce_118, 3, 110, :_reduce_119, 3, 110, :_reduce_120, @@ -171,665 +171,704 @@ racc_reduce_table = [ 3, 110, :_reduce_122, 3, 110, :_reduce_123, 3, 110, :_reduce_124, - 2, 110, :_reduce_125, - 3, 110, :_reduce_126, + 3, 110, :_reduce_125, + 2, 110, :_reduce_126, 3, 110, :_reduce_127, 3, 110, :_reduce_128, 3, 110, :_reduce_129, 3, 110, :_reduce_130, 3, 110, :_reduce_131, - 2, 110, :_reduce_132, - 3, 110, :_reduce_133, + 3, 110, :_reduce_132, + 2, 110, :_reduce_133, 3, 110, :_reduce_134, 3, 110, :_reduce_135, - 5, 71, :_reduce_136, - 1, 120, :_reduce_none, - 2, 120, :_reduce_138, - 5, 121, :_reduce_139, - 4, 121, :_reduce_140, - 1, 122, :_reduce_none, - 3, 122, :_reduce_142, - 3, 88, :_reduce_143, - 1, 124, :_reduce_none, - 4, 124, :_reduce_145, - 1, 126, :_reduce_none, - 3, 126, :_reduce_147, - 3, 125, :_reduce_148, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, + 3, 110, :_reduce_136, + 5, 71, :_reduce_137, + 1, 121, :_reduce_none, + 2, 121, :_reduce_139, + 5, 122, :_reduce_140, + 4, 122, :_reduce_141, 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_156, - 1, 123, :_reduce_none, - 1, 127, :_reduce_158, - 3, 127, :_reduce_159, - 2, 73, :_reduce_160, - 6, 75, :_reduce_161, - 5, 75, :_reduce_162, - 6, 76, :_reduce_163, - 5, 76, :_reduce_164, - 6, 77, :_reduce_165, - 5, 77, :_reduce_166, - 1, 96, :_reduce_167, - 1, 91, :_reduce_168, + 3, 123, :_reduce_143, + 3, 88, :_reduce_144, + 1, 125, :_reduce_none, + 4, 125, :_reduce_146, + 1, 127, :_reduce_none, + 3, 127, :_reduce_148, + 3, 126, :_reduce_149, + 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_157, + 1, 124, :_reduce_none, + 1, 128, :_reduce_159, + 3, 128, :_reduce_160, + 2, 73, :_reduce_161, + 6, 75, :_reduce_162, + 5, 75, :_reduce_163, + 6, 76, :_reduce_164, + 5, 76, :_reduce_165, + 6, 77, :_reduce_166, + 5, 77, :_reduce_167, + 1, 96, :_reduce_168, 1, 91, :_reduce_169, - 1, 130, :_reduce_none, - 3, 130, :_reduce_171, - 1, 132, :_reduce_172, - 1, 133, :_reduce_173, - 1, 133, :_reduce_174, - 1, 133, :_reduce_175, - 1, 133, :_reduce_176, - 1, 133, :_reduce_none, - 0, 65, :_reduce_178, - 0, 134, :_reduce_179, - 1, 128, :_reduce_none, - 3, 128, :_reduce_181, - 3, 128, :_reduce_182, - 1, 135, :_reduce_none, - 3, 135, :_reduce_184, - 3, 136, :_reduce_185, - 1, 136, :_reduce_186, - 3, 136, :_reduce_187, - 1, 136, :_reduce_188, + 1, 91, :_reduce_170, 1, 131, :_reduce_none, - 2, 131, :_reduce_190, + 3, 131, :_reduce_172, + 1, 133, :_reduce_173, + 1, 134, :_reduce_174, + 1, 134, :_reduce_175, + 1, 134, :_reduce_176, + 1, 134, :_reduce_177, + 1, 134, :_reduce_none, + 0, 65, :_reduce_179, + 0, 135, :_reduce_180, 1, 129, :_reduce_none, - 2, 129, :_reduce_192, - 1, 137, :_reduce_none, - 1, 137, :_reduce_none, - 1, 84, :_reduce_195, - 3, 109, :_reduce_196, - 4, 109, :_reduce_197, - 2, 109, :_reduce_198, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 0, 95, :_reduce_none, - 1, 95, :_reduce_202, - 1, 119, :_reduce_203, - 3, 117, :_reduce_204, - 4, 117, :_reduce_205, - 2, 117, :_reduce_206, + 3, 129, :_reduce_182, + 3, 129, :_reduce_183, + 1, 136, :_reduce_none, + 3, 136, :_reduce_185, + 3, 137, :_reduce_186, + 1, 137, :_reduce_187, + 3, 137, :_reduce_188, + 1, 137, :_reduce_189, + 1, 132, :_reduce_none, + 2, 132, :_reduce_191, + 1, 130, :_reduce_none, + 2, 130, :_reduce_193, 1, 138, :_reduce_none, - 3, 138, :_reduce_208, + 1, 138, :_reduce_none, + 1, 84, :_reduce_196, + 3, 109, :_reduce_197, + 4, 109, :_reduce_198, + 2, 109, :_reduce_199, + 1, 117, :_reduce_none, + 1, 117, :_reduce_none, + 0, 95, :_reduce_none, + 1, 95, :_reduce_203, + 1, 120, :_reduce_204, + 3, 118, :_reduce_205, + 4, 118, :_reduce_206, + 2, 118, :_reduce_207, + 1, 139, :_reduce_none, 3, 139, :_reduce_209, - 1, 140, :_reduce_210, - 1, 140, :_reduce_211, - 1, 140, :_reduce_212, - 4, 141, :_reduce_213, + 3, 140, :_reduce_210, + 1, 141, :_reduce_211, + 1, 141, :_reduce_212, + 1, 141, :_reduce_213, + 4, 111, :_reduce_214, 1, 90, :_reduce_none, - 4, 90, :_reduce_215 ] + 4, 90, :_reduce_216 ] -racc_reduce_n = 216 +racc_reduce_n = 217 -racc_shift_n = 355 +racc_shift_n = 358 racc_action_table = [ - 79, 57, 60, 57, 60, 270, 79, 57, 60, 144, - 84, 39, 40, 327, 206, 115, 79, 57, 60, 309, - 84, 98, 299, 39, 40, 99, 326, 308, 168, 169, - 215, 48, 306, 268, 269, 59, 123, 48, 100, 67, - 113, 59, 62, 214, 121, 67, 41, 48, 64, 43, - 55, 59, 62, 54, 64, 67, 210, 314, 41, 42, - 55, 43, 101, 170, 64, 42, 79, 57, 60, 42, - 84, 274, 272, 145, 183, 42, 278, -150, 39, 40, - 271, 42, 268, 269, 183, 182, 75, 79, 57, 60, - 187, 84, 168, 169, 178, 182, 173, 48, 274, 206, - 187, 59, 62, 278, 183, 67, 79, 57, 60, 177, - 55, 82, 145, 41, 64, 182, 43, 89, 48, 284, - 187, 255, 59, 62, 256, 42, 67, 170, 79, 57, - 60, 55, 84, 183, 176, 64, 42, 48, 54, 57, - 60, 59, 220, -153, 182, 67, 42, 225, 36, 187, - 121, 227, 228, 36, 64, 4, 8, 287, 50, 48, - 4, 180, 159, 59, 62, 42, 180, 67, 36, 48, - 150, 199, 55, 59, 62, 4, 64, 67, 36, 253, - -154, 51, 55, 227, 254, 4, 64, 42, 79, 57, - 60, 273, 84, 156, 160, 268, 269, 42, 162, 163, - 164, 148, 149, 151, 291, 156, 160, 136, 75, 79, - 57, 60, 293, 84, -155, 164, 148, 57, 60, 48, - 156, 160, 159, 59, 62, 156, 160, 67, 33, 34, - 150, 295, 55, 82, 227, 337, 64, 164, 148, 89, - 48, 145, 156, 160, 59, 62, -150, 42, 67, -152, - 79, 57, 60, 55, 84, 99, 300, 64, 162, 163, - 164, 148, 149, 151, 194, 156, 160, 200, 42, 180, - 75, 79, 57, 60, 203, 84, 162, 163, 164, 148, - -149, 48, -151, 156, 160, 59, 62, -153, 264, 67, - -154, 75, 227, 228, 55, 82, 146, -150, 64, -151, - 301, 89, 48, 98, 42, 205, 59, 62, 193, 42, - 67, 304, 159, -152, -149, 55, 82, -149, 144, 64, - 150, 212, 89, 79, 57, 60, 313, 84, -167, 208, - 42, 141, -151, 79, 57, 60, 324, 84, 325, 79, - 57, 60, -152, 84, 328, 138, 136, 110, 162, 163, - 164, 148, 149, 151, 48, 156, 160, 208, 59, 62, - 279, 208, 67, 338, 48, 301, 340, 55, 59, 62, - 48, 64, 67, 104, 59, 62, 342, 55, 67, -151, - -149, 64, 42, 55, 79, 57, 60, 64, 84, -152, - -150, -154, 42, 162, 163, 164, 148, 209, 42, 206, - 156, 160, 102, 136, 75, 79, 57, 60, 47, 84, - 348, -202, 46, 212, 257, 48, 42, nil, 159, 59, - 62, nil, nil, 67, nil, nil, 150, nil, 55, 82, - nil, nil, 64, nil, nil, 89, 48, nil, nil, nil, - 59, 62, nil, 42, 67, nil, 79, 57, 60, 55, - 84, nil, nil, 64, 162, 163, 164, 148, 149, 151, - nil, 156, 160, nil, 42, nil, 75, 79, 57, 60, - nil, 84, nil, nil, nil, nil, nil, 48, nil, nil, - nil, 59, 62, nil, nil, 67, nil, 75, nil, nil, - 55, 82, nil, nil, 64, nil, nil, 89, 48, nil, - nil, nil, 59, 62, nil, 42, 67, nil, nil, nil, - nil, 55, 82, nil, nil, 64, nil, nil, 89, 79, - 57, 60, nil, 84, nil, nil, 42, 162, 163, 164, - 148, 149, 151, nil, 156, 160, nil, nil, nil, 75, - 79, 57, 60, nil, 84, nil, nil, nil, nil, nil, - 48, nil, nil, nil, 59, 62, nil, nil, 67, nil, - 75, nil, nil, 55, 82, nil, nil, 64, nil, nil, - 89, 48, nil, nil, nil, 59, 62, nil, 42, 67, - nil, nil, nil, nil, 55, 82, nil, nil, 64, nil, - nil, 89, 79, 57, 60, nil, 84, nil, nil, 42, - 162, 163, 164, 148, 149, 151, nil, 156, 160, nil, - nil, nil, 75, 79, 57, 60, nil, 84, nil, nil, - nil, nil, nil, 48, nil, nil, nil, 59, 62, nil, - nil, 67, nil, 75, nil, nil, 55, 82, nil, nil, - 64, nil, nil, 89, 48, nil, nil, nil, 59, 62, - nil, 42, 67, nil, nil, nil, nil, 55, 82, nil, - nil, 64, nil, nil, 89, 79, 57, 60, nil, 84, - nil, nil, 42, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 75, 79, 57, 60, 165, - 84, nil, nil, nil, nil, nil, 48, nil, nil, nil, - 59, 62, nil, nil, 67, nil, nil, nil, nil, 55, - 82, nil, nil, 64, nil, nil, 89, 48, nil, nil, - nil, 59, 62, nil, 42, 67, nil, 79, 57, 60, - 55, 84, nil, nil, 64, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 42, nil, 75, 79, 57, - 60, nil, 84, nil, nil, nil, nil, nil, 48, nil, - nil, nil, 59, 62, nil, nil, 67, nil, nil, nil, - nil, 55, 82, nil, nil, 64, nil, nil, 89, 48, - nil, nil, nil, 59, 62, nil, 42, 67, nil, 79, - 57, 60, 55, 84, nil, nil, 64, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 42, nil, 75, - 79, 57, 60, nil, 84, nil, nil, nil, nil, nil, - 48, nil, nil, nil, 59, 62, nil, nil, 67, nil, - 75, nil, nil, 55, 82, nil, nil, 64, nil, nil, - 89, 48, nil, nil, nil, 59, 62, nil, 42, 67, - nil, nil, nil, nil, 55, 82, nil, nil, 64, nil, - nil, 89, 79, 57, 60, nil, 84, nil, nil, 42, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 75, 79, 57, 60, nil, 84, nil, nil, - nil, nil, nil, 48, nil, nil, nil, 59, 62, nil, - nil, 67, nil, nil, nil, nil, 55, 82, nil, nil, - 64, nil, nil, 89, 48, nil, nil, nil, 59, 62, - nil, 42, 67, nil, 79, 57, 60, 55, 84, nil, - nil, 64, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 42, nil, 75, 79, 57, 60, nil, 84, - nil, nil, nil, nil, nil, 48, nil, nil, nil, 59, - 62, nil, nil, 67, nil, 75, nil, nil, 55, 82, - nil, nil, 64, nil, nil, 89, 48, nil, nil, nil, - 59, 62, nil, 42, 67, nil, nil, nil, nil, 55, - 82, nil, nil, 64, nil, nil, 89, 79, 57, 60, - nil, 84, nil, nil, 42, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 75, 79, 57, - 60, nil, 84, nil, nil, nil, nil, nil, 48, nil, - nil, nil, 59, 62, nil, nil, 67, nil, 75, nil, - nil, 55, 82, nil, nil, 64, 57, 60, 89, 48, - 311, nil, nil, 59, 62, nil, 42, 67, nil, nil, - nil, nil, 55, 82, nil, nil, 64, nil, nil, 89, - 79, 57, 60, nil, 84, nil, 182, 42, 57, 60, - 59, 220, nil, nil, 67, nil, nil, nil, nil, 121, - nil, nil, nil, 64, nil, nil, 57, 60, 231, nil, - nil, 48, nil, nil, 42, 59, 62, nil, 48, 67, - nil, nil, 59, 62, 55, nil, 67, nil, 64, nil, - 51, 55, 57, 60, nil, 64, 182, nil, nil, 42, - 59, 220, 57, 60, 67, nil, 42, nil, nil, 121, - nil, nil, 139, 64, nil, nil, nil, nil, 57, 60, - nil, nil, 48, nil, 42, nil, 59, 62, 57, 60, - 67, nil, 182, nil, 51, 55, 59, 220, nil, 64, - 67, nil, nil, nil, nil, 121, nil, nil, 182, 64, - 42, nil, 59, 220, 57, 60, 67, nil, 182, nil, - 42, 121, 59, 220, nil, 64, 67, nil, nil, nil, - nil, 121, nil, 57, 60, 64, 42, nil, nil, 57, - 60, nil, 222, nil, 182, nil, 42, nil, 59, 220, - nil, nil, 67, 294, nil, 57, 60, 121, nil, nil, - nil, 64, nil, 48, nil, 57, 60, 59, 62, 182, - nil, 67, 42, 59, 220, 51, 55, 67, nil, nil, - 64, nil, 121, nil, nil, 182, 64, nil, nil, 59, - 220, 42, nil, 67, nil, 48, 161, 42, 121, 59, - 62, nil, 64, 67, nil, 154, 159, 51, 55, nil, - nil, nil, 64, 42, 150, 152, 155, 158, 154, 159, - nil, nil, nil, 42, nil, nil, nil, 150, 152, 155, - 158, nil, nil, nil, nil, nil, nil, nil, 153, 157, - nil, nil, 162, 163, 164, 148, 149, 151, nil, 156, - 160, 153, 157, nil, nil, 162, 163, 164, 148, 149, - 151, nil, 156, 160, 154, 159, nil, nil, nil, nil, - nil, nil, 234, 150, 152, 155, 158, 154, 159, nil, - nil, nil, nil, nil, nil, nil, 150, 152, 155, 158, - nil, nil, nil, nil, nil, nil, nil, 153, 157, nil, - nil, 162, 163, 164, 148, 149, 151, nil, 156, 160, - 153, 157, nil, nil, 162, 163, 164, 148, 149, 151, - nil, 156, 160, 154, 159, nil, nil, nil, nil, nil, - nil, nil, 150, 152, 155, 158, 154, 159, nil, nil, - nil, nil, nil, nil, nil, 150, 152, 155, 158, nil, + 82, 61, 64, 317, 87, 172, 173, 211, 187, 308, + 276, 328, 42, 43, 330, 211, 121, 283, 275, 186, + 78, 82, 61, 64, 191, 87, 101, 329, 272, 273, + 102, 51, -153, 42, 43, 63, 66, 42, 43, 71, + 174, 119, -150, 103, 58, 84, 288, 44, 68, 215, + 46, 92, 51, 57, 172, 173, 63, 66, 175, 45, + 71, 149, 82, 61, 64, 58, 87, 104, 44, 68, + 45, 46, 44, 150, 303, 46, 274, 219, 314, 211, + 45, 141, 78, 82, 61, 64, 313, 87, 34, 174, + 218, 45, 150, 51, -152, 45, 291, 63, 66, 35, + 36, 71, 184, 78, 272, 273, 58, 84, 163, 187, + 68, 184, 259, 92, 51, 260, 154, 38, 63, 66, + 186, 45, 71, 38, 4, 191, 204, 58, 84, -154, + 4, 68, 295, 38, 92, 82, 61, 64, 141, 87, + 4, 9, 45, 187, 166, 167, 168, 152, 153, 155, + -155, 160, 164, 187, 186, 78, 82, 61, 64, 191, + 87, 38, 278, 298, 186, -151, 51, 281, 4, 191, + 63, 66, 168, 152, 71, 300, 78, 160, 164, 58, + 84, 163, 150, 68, 101, 278, 92, 51, -151, 154, + 281, 63, 66, 261, 45, 71, -156, 163, 221, -155, + 58, 84, 223, 224, 68, 154, -154, 92, 82, 61, + 64, -153, 87, 61, 64, 45, -150, 166, 167, 168, + 152, 153, 155, 180, 160, 164, 160, 164, 78, 57, + 61, 64, 149, 166, 167, 168, 152, 153, 155, 51, + 160, 164, 148, 63, 66, -168, 163, 71, 45, 53, + 61, 64, 58, 84, 154, 304, 68, 168, 152, 92, + 51, -152, 160, 164, 63, 66, 277, 45, 71, 181, + 272, 273, 55, 58, 82, 61, 64, 68, 87, 223, + 340, 182, 166, 167, 168, 152, 153, 155, 45, 160, + 164, 160, 164, 184, 78, 82, 61, 64, 307, 87, + 166, 167, 168, 152, 45, 51, 145, 160, 164, 63, + 66, 257, 34, 71, 197, 223, 258, 217, 58, 84, + 316, 198, 68, 268, 102, 92, 51, 223, 224, 141, + 63, 66, 201, 45, 71, 327, 82, 61, 64, 58, + 87, 213, 205, 68, 331, 114, 82, 61, 64, 206, + 87, -152, 213, 107, 45, 166, 167, 168, 152, 153, + 155, 210, 160, 164, 341, 304, 78, 51, 343, -150, + 345, 63, 66, -152, -150, 71, -153, 51, -151, -155, + 58, 63, 66, 105, 68, 71, 217, 213, 50, 49, + 58, 84, 332, 351, 68, 45, -203, 92, 82, 61, + 64, 39, 87, 214, -151, 45, -153, nil, 82, 61, + 64, nil, 87, 19, nil, 23, 27, nil, 1, 5, + nil, 12, nil, 17, nil, 21, nil, 28, 78, 51, + 4, 9, nil, 63, 66, nil, nil, 71, nil, 51, + nil, nil, 58, 63, 66, nil, 68, 71, nil, nil, + nil, nil, 58, 84, 352, nil, 68, 45, nil, 92, + 82, 61, 64, nil, 87, nil, nil, 45, nil, nil, + 82, 61, 64, nil, 87, 19, nil, 23, 27, nil, + 1, 5, nil, 12, nil, 17, nil, 21, nil, 28, + 78, 51, 4, 9, nil, 63, 66, nil, nil, 71, + nil, 51, nil, nil, 58, 63, 66, nil, 68, 71, + nil, nil, nil, nil, 58, 84, nil, nil, 68, 45, + nil, 92, 82, 61, 64, nil, 87, nil, nil, 45, + 166, 167, 168, 152, nil, nil, nil, 160, 164, nil, + nil, nil, 78, 82, 61, 64, nil, 87, nil, nil, + nil, nil, nil, 51, nil, nil, nil, 63, 66, nil, + nil, 71, nil, nil, nil, nil, 58, 84, nil, nil, + 68, nil, nil, 92, 51, nil, nil, nil, 63, 66, + nil, 45, 71, nil, 82, 61, 64, 58, 87, nil, + nil, 68, 166, 167, 168, 152, 153, 155, nil, 160, + 164, nil, 45, nil, 78, 82, 61, 64, nil, 87, + nil, nil, nil, nil, nil, 51, nil, nil, nil, 63, + 66, nil, nil, 71, nil, nil, nil, nil, 58, 84, + nil, nil, 68, nil, nil, 92, 51, nil, nil, nil, + 63, 66, nil, 45, 71, nil, 82, 61, 64, 58, + 87, nil, nil, 68, nil, nil, 82, 61, 64, nil, + 87, nil, nil, nil, 45, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 78, 51, nil, nil, + nil, 63, 66, nil, nil, 71, nil, 51, nil, nil, + 58, 63, 66, nil, 68, 71, nil, nil, nil, nil, + 58, 84, nil, nil, 68, 45, nil, 92, 82, 61, + 64, nil, 87, nil, nil, 45, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 78, 82, + 61, 64, nil, nil, nil, nil, nil, nil, nil, 51, + nil, nil, nil, 63, 66, nil, nil, 71, nil, nil, + nil, nil, 58, 84, nil, nil, 68, nil, nil, 92, + 51, nil, nil, nil, 63, 128, nil, 45, 71, nil, + 82, 61, 64, 126, 87, nil, nil, 68, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 45, nil, + 78, 82, 61, 64, nil, 87, nil, nil, nil, nil, + nil, 51, nil, nil, nil, 63, 66, nil, nil, 71, + nil, 78, nil, nil, 58, 84, nil, nil, 68, nil, + nil, 92, 51, nil, nil, nil, 63, 66, nil, 45, + 71, nil, nil, nil, nil, 58, 84, nil, nil, 68, + nil, nil, 92, 82, 61, 64, nil, 87, nil, nil, + 45, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 78, 82, 61, 64, nil, 87, nil, + nil, nil, nil, nil, 51, nil, nil, nil, 63, 66, + nil, nil, 71, nil, nil, nil, nil, 58, 84, nil, + nil, 68, nil, nil, 92, 51, nil, nil, nil, 63, + 66, nil, 45, 71, nil, 82, 61, 64, 58, 87, + nil, nil, 68, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 45, nil, 78, 82, 61, 64, nil, + 87, nil, 82, 61, 64, nil, 51, nil, nil, nil, + 63, 66, nil, nil, 71, nil, nil, nil, nil, 58, + 84, nil, nil, 68, nil, nil, 92, 51, nil, nil, + nil, 63, 66, 51, 45, 71, nil, 63, 229, nil, + 58, 71, nil, nil, 68, nil, 126, 82, 61, 64, + 68, 87, nil, nil, nil, 45, nil, nil, nil, nil, + nil, 45, nil, nil, nil, nil, nil, 78, 82, 61, + 64, 169, 87, nil, nil, nil, nil, nil, 51, nil, + nil, nil, 63, 66, nil, nil, 71, nil, nil, nil, + nil, 58, 84, nil, nil, 68, nil, nil, 92, 51, + nil, nil, nil, 63, 66, nil, 45, 71, nil, 82, + 61, 64, 58, 87, nil, nil, 68, nil, nil, 82, + 61, 64, nil, 87, nil, nil, nil, 45, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 78, + 51, nil, nil, nil, 63, 66, nil, nil, 71, nil, + 51, nil, nil, 58, 63, 66, nil, 68, 71, nil, + nil, nil, nil, 58, 84, nil, nil, 68, 45, nil, + 92, 82, 61, 64, nil, 87, nil, nil, 45, nil, + nil, 82, 61, 64, nil, 87, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 162, 163, 164, 148, 149, 151, 349, 156, 160, nil, - 157, nil, nil, 162, 163, 164, 148, 149, 151, nil, - 156, 160, nil, nil, nil, 353, nil, 18, nil, 22, - 26, nil, 1, 5, nil, 11, nil, 16, nil, 20, - nil, 27, nil, nil, 4, 8, 18, 303, 22, 26, - nil, 1, 5, nil, 11, nil, 16, nil, 20, nil, - 27, nil, nil, 4, 8, nil, 248, nil, 18, nil, - 22, 26, nil, 1, 5, nil, 11, nil, 16, nil, - 20, nil, 27, nil, nil, 4, 8, 18, 280, 22, - 26, nil, 1, 5, nil, 11, nil, 16, nil, 20, - nil, 27, nil, nil, 4, 8, nil, 351, nil, 18, - nil, 22, 26, nil, 1, 5, nil, 11, nil, 16, - nil, 20, nil, 27, nil, nil, 4, 8, 18, 329, - 22, 26, nil, 1, 5, nil, 11, nil, 16, nil, - 20, nil, 27, nil, nil, 4, 8, nil, 331, nil, - 18, nil, 22, 26, nil, 1, 5, nil, 11, nil, - 16, nil, 20, nil, 27, nil, nil, 4, 8, 18, - 346, 22, 26, nil, 1, 5, nil, 11, nil, 16, - nil, 20, nil, 27, nil, nil, 4, 8, nil, 332, - nil, 18, nil, 22, 26, nil, 1, 5, nil, 11, - nil, 16, nil, 20, nil, 27, nil, nil, 4, 8, - 18, 282, 22, 26, nil, 1, 5, nil, 11, nil, - 16, nil, 20, nil, 27, nil, nil, 4, 8, nil, - 354, nil, 18, nil, 22, 26, nil, 1, 5, nil, - 11, nil, 16, nil, 20, nil, 27, nil, nil, 4, - 8, 18, nil, 22, 26, nil, 1, 5, nil, 11, - nil, 16, nil, 20, nil, 27, nil, nil, 4, 8, - 18, nil, 22, 26, nil, 1, 5, nil, 11, nil, - 16, nil, 20, nil, 27, nil, nil, 4, 8, 18, - nil, 22, 26, nil, 1, 5, nil, 11, nil, 16, - nil, 20, nil, 27, nil, nil, 4, 8 ] + nil, 78, 51, 61, 64, nil, 63, 66, nil, nil, + 71, nil, 51, nil, nil, 58, 63, 66, nil, 68, + 71, nil, 61, 64, nil, 58, 84, nil, nil, 68, + 45, nil, 92, 186, nil, nil, nil, 63, 229, nil, + 45, 71, 297, 61, 64, nil, 126, nil, nil, nil, + 68, nil, 51, 61, 64, nil, 63, 66, nil, nil, + 71, 45, nil, nil, 55, 58, nil, nil, nil, 68, + nil, nil, nil, 186, 61, 64, nil, 63, 229, nil, + 45, 71, nil, 186, 61, 64, 126, 63, 229, nil, + 68, 71, nil, nil, nil, nil, 126, nil, nil, nil, + 68, 45, nil, nil, 186, 61, 64, nil, 63, 229, + nil, 45, 71, nil, 186, nil, nil, 126, 63, 229, + nil, 68, 71, 61, 64, nil, 231, 126, nil, nil, + nil, 68, 45, nil, nil, 51, nil, 61, 64, 63, + 66, nil, 45, 71, nil, nil, nil, 55, 58, nil, + nil, nil, 68, 186, nil, 61, 64, 63, 229, 312, + nil, 71, nil, 45, nil, nil, 126, 186, nil, nil, + 68, 63, 229, nil, nil, 71, 61, 64, nil, nil, + 126, 45, nil, nil, 68, 186, nil, nil, nil, 63, + 229, nil, nil, 71, nil, 45, 236, nil, 126, nil, + nil, nil, 68, nil, nil, nil, 51, 61, 64, nil, + 63, 66, nil, 45, 71, nil, nil, nil, 55, 58, + nil, nil, nil, 68, nil, nil, nil, 143, nil, nil, + nil, nil, nil, nil, 45, nil, nil, 51, 165, nil, + nil, 63, 66, nil, nil, 71, nil, 158, 163, 55, + 58, nil, nil, nil, 68, nil, 154, 156, 159, 162, + 158, 163, nil, nil, nil, 45, nil, nil, nil, 154, + 156, 159, 162, nil, nil, nil, nil, nil, nil, nil, + 157, 161, nil, nil, 166, 167, 168, 152, 153, 155, + nil, 160, 164, 157, 161, nil, nil, 166, 167, 168, + 152, 153, 155, nil, 160, 164, 158, 163, nil, nil, + nil, nil, nil, nil, nil, 154, 156, 159, 162, 158, + 163, nil, nil, nil, nil, nil, nil, nil, 154, 156, + 159, 162, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 166, 167, 168, 152, 153, 155, nil, + 160, 164, nil, 161, nil, nil, 166, 167, 168, 152, + 153, 155, nil, 160, 164, 158, 163, nil, nil, nil, + nil, nil, nil, nil, 154, 156, 159, 162, 158, 163, + nil, nil, nil, nil, nil, nil, 238, 154, 156, 159, + 162, nil, nil, nil, nil, nil, nil, nil, 157, 161, + nil, nil, 166, 167, 168, 152, 153, 155, nil, 160, + 164, 157, 161, nil, nil, 166, 167, 168, 152, 153, + 155, 354, 160, 164, 158, 163, nil, nil, nil, nil, + nil, nil, nil, 154, 156, 159, 162, nil, nil, nil, + nil, nil, 19, nil, 23, 27, nil, 1, 5, 335, + 12, nil, 17, nil, 21, nil, 28, 157, 161, 4, + 9, 166, 167, 168, 152, 153, 155, nil, 160, 164, + 19, 334, 23, 27, nil, 1, 5, nil, 12, nil, + 17, nil, 21, nil, 28, nil, nil, 4, 9, nil, + 349, nil, 19, nil, 23, 27, nil, 1, 5, nil, + 12, nil, 17, nil, 21, nil, 28, nil, nil, 4, + 9, 19, 252, 23, 27, nil, 1, 5, nil, 12, + nil, 17, nil, 21, nil, 28, nil, nil, 4, 9, + nil, 306, nil, 19, nil, 23, 27, nil, 1, 5, + nil, 12, nil, 17, nil, 21, nil, 28, nil, nil, + 4, 9, 19, 284, 23, 27, nil, 1, 5, nil, + 12, nil, 17, nil, 21, nil, 28, nil, nil, 4, + 9, nil, 286, nil, 19, nil, 23, 27, nil, 1, + 5, nil, 12, nil, 17, nil, 21, nil, 28, nil, + nil, 4, 9, 19, 356, 23, 27, nil, 1, 5, + nil, 12, nil, 17, nil, 21, nil, 28, nil, nil, + 4, 9, nil, 357, nil, 19, nil, 23, 27, nil, + 1, 5, nil, 12, nil, 17, nil, 21, nil, 28, + nil, nil, 4, 9, 19, nil, 23, 27, nil, 1, + 5, nil, 12, nil, 17, nil, 21, nil, 28, nil, + nil, 4, 9, 19, nil, 23, 27, nil, 1, 5, + nil, 12, nil, 17, nil, 21, nil, 28, nil, nil, + 4, 9, 19, nil, 23, 27, nil, 1, 5, nil, + 12, nil, 17, nil, 21, nil, 28, nil, nil, 4, + 9 ] racc_action_check = [ - 46, 46, 46, 22, 22, 184, 146, 146, 146, 232, - 146, 113, 113, 276, 136, 45, 210, 210, 210, 259, - 210, 23, 232, 115, 115, 23, 276, 259, 256, 256, - 140, 46, 256, 184, 184, 46, 46, 146, 23, 46, - 45, 146, 146, 140, 46, 146, 113, 210, 46, 113, - 146, 210, 210, 62, 146, 210, 136, 266, 115, 46, - 210, 115, 23, 256, 210, 146, 89, 89, 89, 113, - 89, 327, 188, 62, 100, 210, 327, 128, 11, 11, - 188, 115, 266, 266, 267, 100, 89, 138, 138, 138, - 100, 138, 84, 84, 97, 267, 84, 89, 194, 123, - 267, 89, 89, 194, 101, 89, 205, 205, 205, 96, - 89, 89, 123, 11, 89, 101, 11, 89, 138, 204, - 101, 171, 138, 138, 171, 89, 138, 84, 226, 226, - 226, 138, 226, 183, 94, 138, 11, 205, 16, 16, - 16, 205, 205, 92, 183, 205, 138, 143, 30, 183, - 205, 143, 143, 5, 205, 30, 30, 207, 16, 226, - 5, 208, 245, 226, 226, 205, 209, 226, 110, 16, - 245, 110, 226, 16, 16, 110, 226, 16, 26, 166, - 91, 16, 16, 166, 166, 26, 16, 226, 18, 18, - 18, 192, 18, 252, 252, 192, 192, 16, 245, 245, - 245, 245, 245, 245, 211, 245, 245, 212, 18, 20, - 20, 20, 213, 20, 90, 251, 251, 177, 177, 18, - 251, 251, 241, 18, 18, 235, 235, 18, 1, 1, - 241, 217, 18, 18, 297, 297, 18, 250, 250, 18, - 20, 220, 250, 250, 20, 20, 88, 18, 20, 87, - 148, 148, 148, 20, 148, 107, 233, 20, 241, 241, - 241, 241, 241, 241, 103, 241, 241, 111, 20, 99, - 148, 149, 149, 149, 116, 149, 238, 238, 238, 238, - 85, 148, 78, 238, 238, 148, 148, 74, 179, 148, - 73, 149, 179, 179, 148, 148, 70, 69, 148, 119, - 248, 148, 149, 68, 156, 122, 149, 149, 102, 148, - 149, 254, 239, 66, 65, 149, 149, 124, 58, 149, - 239, 263, 149, 328, 328, 328, 265, 328, 55, 125, - 149, 53, 52, 324, 324, 324, 274, 324, 275, 98, - 98, 98, 126, 98, 278, 48, 47, 35, 239, 239, - 239, 239, 239, 239, 328, 239, 239, 289, 328, 328, - 195, 181, 328, 301, 324, 303, 308, 328, 324, 324, - 98, 328, 324, 27, 98, 98, 312, 324, 98, 317, - 318, 324, 328, 98, 150, 150, 150, 98, 150, 320, - 321, 322, 324, 236, 236, 236, 236, 129, 98, 180, - 236, 236, 25, 178, 150, 295, 295, 295, 15, 295, - 336, 337, 12, 137, 174, 150, 160, nil, 242, 150, - 150, nil, nil, 150, nil, nil, 242, nil, 150, 150, - nil, nil, 150, nil, nil, 150, 295, nil, nil, nil, - 295, 295, nil, 150, 295, nil, 33, 33, 33, 295, - 33, nil, nil, 295, 242, 242, 242, 242, 242, 242, - nil, 242, 242, nil, 295, nil, 33, 34, 34, 34, - nil, 34, nil, nil, nil, nil, nil, 33, nil, nil, - nil, 33, 33, nil, nil, 33, nil, 34, nil, nil, - 33, 33, nil, nil, 33, nil, nil, 33, 34, nil, - nil, nil, 34, 34, nil, 33, 34, nil, nil, nil, - nil, 34, 34, nil, nil, 34, nil, nil, 34, 151, - 151, 151, nil, 151, nil, nil, 34, 246, 246, 246, - 246, 246, 246, nil, 246, 246, nil, nil, nil, 151, - 152, 152, 152, nil, 152, nil, nil, nil, nil, nil, - 151, nil, nil, nil, 151, 151, nil, nil, 151, nil, - 152, nil, nil, 151, 151, nil, nil, 151, nil, nil, - 151, 152, nil, nil, nil, 152, 152, nil, 151, 152, - nil, nil, nil, nil, 152, 152, nil, nil, 152, nil, - nil, 152, 153, 153, 153, nil, 153, nil, nil, 152, - 237, 237, 237, 237, 237, 237, nil, 237, 237, nil, - nil, nil, 153, 154, 154, 154, nil, 154, nil, nil, - nil, nil, nil, 153, nil, nil, nil, 153, 153, nil, - nil, 153, nil, 154, nil, nil, 153, 153, nil, nil, - 153, nil, nil, 153, 154, nil, nil, nil, 154, 154, - nil, 153, 154, nil, nil, nil, nil, 154, 154, nil, - nil, 154, nil, nil, 154, 82, 82, 82, nil, 82, - nil, nil, 154, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 82, 79, 79, 79, 79, - 79, nil, nil, nil, nil, nil, 82, nil, nil, nil, - 82, 82, nil, nil, 82, nil, nil, nil, nil, 82, - 82, nil, nil, 82, nil, nil, 82, 79, nil, nil, - nil, 79, 79, nil, 82, 79, nil, 162, 162, 162, - 79, 162, nil, nil, 79, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 79, nil, 162, 54, 54, - 54, nil, 54, nil, nil, nil, nil, nil, 162, nil, - nil, nil, 162, 162, nil, nil, 162, nil, nil, nil, - nil, 162, 162, nil, nil, 162, nil, nil, 162, 54, - nil, nil, nil, 54, 54, nil, 162, 54, nil, 155, - 155, 155, 54, 155, nil, nil, 54, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 54, nil, 155, - 164, 164, 164, nil, 164, nil, nil, nil, nil, nil, - 155, nil, nil, nil, 155, 155, nil, nil, 155, nil, - 164, nil, nil, 155, 155, nil, nil, 155, nil, nil, - 155, 164, nil, nil, nil, 164, 164, nil, 155, 164, - nil, nil, nil, nil, 164, 164, nil, nil, 164, nil, - nil, 164, 157, 157, 157, nil, 157, nil, nil, 164, + 92, 92, 92, 270, 92, 260, 260, 141, 187, 260, + 192, 279, 12, 12, 280, 184, 48, 199, 192, 187, + 92, 145, 145, 145, 187, 145, 24, 280, 270, 270, + 24, 92, 89, 119, 119, 92, 92, 121, 121, 92, + 260, 48, 88, 24, 92, 92, 209, 12, 92, 141, + 12, 92, 145, 66, 87, 87, 145, 145, 87, 92, + 145, 237, 152, 152, 152, 145, 152, 24, 119, 145, + 12, 119, 121, 66, 237, 121, 188, 144, 264, 128, + 145, 182, 152, 153, 153, 153, 264, 153, 1, 87, + 144, 119, 128, 152, 81, 121, 212, 152, 152, 1, + 1, 152, 213, 153, 188, 188, 152, 152, 245, 104, + 152, 214, 176, 152, 153, 176, 245, 27, 153, 153, + 104, 152, 153, 114, 27, 104, 114, 153, 153, 77, + 114, 153, 216, 31, 153, 154, 154, 154, 217, 154, + 31, 31, 153, 271, 245, 245, 245, 245, 245, 245, + 75, 245, 245, 103, 271, 154, 155, 155, 155, 271, + 155, 5, 330, 220, 103, 73, 154, 330, 5, 103, + 154, 154, 255, 255, 154, 226, 155, 255, 255, 154, + 154, 243, 229, 154, 72, 198, 154, 155, 91, 243, + 198, 155, 155, 178, 154, 155, 93, 246, 147, 94, + 155, 155, 147, 147, 155, 246, 95, 155, 156, 156, + 156, 70, 156, 23, 23, 155, 69, 243, 243, 243, + 243, 243, 243, 97, 243, 243, 239, 239, 156, 17, + 17, 17, 62, 246, 246, 246, 246, 246, 246, 156, + 246, 246, 60, 156, 156, 58, 249, 156, 164, 17, + 181, 181, 156, 156, 249, 252, 156, 254, 254, 156, + 17, 56, 254, 254, 17, 17, 196, 156, 17, 99, + 196, 196, 17, 17, 19, 19, 19, 17, 19, 302, + 302, 100, 249, 249, 249, 249, 249, 249, 17, 249, + 249, 256, 256, 102, 19, 21, 21, 21, 258, 21, + 240, 240, 240, 240, 160, 19, 54, 240, 240, 19, + 19, 170, 51, 19, 105, 170, 170, 267, 19, 19, + 269, 106, 19, 183, 110, 19, 21, 183, 183, 50, + 21, 21, 111, 19, 21, 278, 331, 331, 331, 21, + 331, 185, 115, 21, 281, 37, 157, 157, 157, 118, + 157, 123, 293, 28, 21, 241, 241, 241, 241, 241, + 241, 127, 241, 241, 304, 306, 157, 331, 313, 129, + 315, 331, 331, 320, 321, 331, 323, 157, 324, 325, + 331, 157, 157, 26, 331, 157, 142, 130, 16, 13, + 157, 157, 283, 339, 157, 331, 340, 157, 327, 327, + 327, 6, 327, 134, 133, 157, 131, nil, 158, 158, + 158, nil, 158, 283, nil, 283, 283, nil, 283, 283, + nil, 283, nil, 283, nil, 283, nil, 283, 158, 327, + 283, 283, nil, 327, 327, nil, nil, 327, nil, 158, + nil, nil, 327, 158, 158, nil, 327, 158, nil, nil, + nil, nil, 158, 158, 341, nil, 158, 327, nil, 158, + 300, 300, 300, nil, 300, nil, nil, 158, nil, nil, + 159, 159, 159, nil, 159, 341, nil, 341, 341, nil, + 341, 341, nil, 341, nil, 341, nil, 341, nil, 341, + 159, 300, 341, 341, nil, 300, 300, nil, nil, 300, + nil, 159, nil, nil, 300, 159, 159, nil, 300, 159, + nil, nil, nil, nil, 159, 159, nil, nil, 159, 300, + nil, 159, 161, 161, 161, nil, 161, nil, nil, 159, + 242, 242, 242, 242, nil, nil, nil, 242, 242, nil, + nil, nil, 161, 34, 34, 34, nil, 34, nil, nil, + nil, nil, nil, 161, nil, nil, nil, 161, 161, nil, + nil, 161, nil, nil, nil, nil, 161, 161, nil, nil, + 161, nil, nil, 161, 34, nil, nil, nil, 34, 34, + nil, 161, 34, nil, 35, 35, 35, 34, 35, nil, + nil, 34, 250, 250, 250, 250, 250, 250, nil, 250, + 250, nil, 34, nil, 35, 222, 222, 222, nil, 222, + nil, nil, nil, nil, nil, 35, nil, nil, nil, 35, + 35, nil, nil, 35, nil, nil, nil, nil, 35, 35, + nil, nil, 35, nil, nil, 35, 222, nil, nil, nil, + 222, 222, nil, 35, 222, nil, 101, 101, 101, 222, + 101, nil, nil, 222, nil, nil, 39, 39, 39, nil, + 39, nil, nil, nil, 222, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 39, 101, nil, nil, + nil, 101, 101, nil, nil, 101, nil, 39, nil, nil, + 101, 39, 39, nil, 101, 39, nil, nil, nil, nil, + 39, 39, nil, nil, 39, 101, nil, 39, 162, 162, + 162, nil, 162, nil, nil, 39, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 162, 49, + 49, 49, nil, nil, nil, nil, nil, nil, nil, 162, + nil, nil, nil, 162, 162, nil, nil, 162, nil, nil, + nil, nil, 162, 162, nil, nil, 162, nil, nil, 162, + 49, nil, nil, nil, 49, 49, nil, 162, 49, nil, + 163, 163, 163, 49, 163, nil, nil, 49, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 49, nil, + 163, 166, 166, 166, nil, 166, nil, nil, nil, nil, + nil, 163, nil, nil, nil, 163, 163, nil, nil, 163, + nil, 166, nil, nil, 163, 163, nil, nil, 163, nil, + nil, 163, 166, nil, nil, nil, 166, 166, nil, 163, + 166, nil, nil, nil, nil, 166, 166, nil, nil, 166, + nil, nil, 166, 167, 167, 167, nil, 167, nil, nil, + 166, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 167, 261, 261, 261, nil, 261, nil, + nil, nil, nil, nil, 167, nil, nil, nil, 167, 167, + nil, nil, 167, nil, nil, nil, nil, 167, 167, nil, + nil, 167, nil, nil, 167, 261, nil, nil, nil, 261, + 261, nil, 167, 261, nil, 168, 168, 168, 261, 168, + nil, nil, 261, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 261, nil, 168, 57, 57, 57, nil, + 57, nil, 210, 210, 210, nil, 168, nil, nil, nil, + 168, 168, nil, nil, 168, nil, nil, nil, nil, 168, + 168, nil, nil, 168, nil, nil, 168, 57, nil, nil, + nil, 57, 57, 210, 168, 57, nil, 210, 210, nil, + 57, 210, nil, nil, 57, nil, 210, 84, 84, 84, + 210, 84, nil, nil, nil, 57, nil, nil, nil, nil, + nil, 210, nil, nil, nil, nil, nil, 84, 82, 82, + 82, 82, 82, nil, nil, nil, nil, nil, 84, nil, + nil, nil, 84, 84, nil, nil, 84, nil, nil, nil, + nil, 84, 84, nil, nil, 84, nil, nil, 84, 82, + nil, nil, nil, 82, 82, nil, 84, 82, nil, 211, + 211, 211, 82, 211, nil, nil, 82, nil, nil, 78, + 78, 78, nil, 78, nil, nil, nil, 82, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 78, + 211, nil, nil, nil, 211, 211, nil, nil, 211, nil, + 78, nil, nil, 211, 78, 78, nil, 211, 78, nil, + nil, nil, nil, 78, 78, nil, nil, 78, 211, nil, + 78, 215, 215, 215, nil, 215, nil, nil, 78, nil, + nil, 36, 36, 36, nil, 36, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 157, 257, 257, 257, nil, 257, nil, nil, - nil, nil, nil, 157, nil, nil, nil, 157, 157, nil, - nil, 157, nil, nil, nil, nil, 157, 157, nil, nil, - 157, nil, nil, 157, 257, nil, nil, nil, 257, 257, - nil, 157, 257, nil, 158, 158, 158, 257, 158, nil, - nil, 257, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 257, nil, 158, 163, 163, 163, nil, 163, - nil, nil, nil, nil, nil, 158, nil, nil, nil, 158, - 158, nil, nil, 158, nil, 163, nil, nil, 158, 158, - nil, nil, 158, nil, nil, 158, 163, nil, nil, nil, - 163, 163, nil, 158, 163, nil, nil, nil, nil, 163, - 163, nil, nil, 163, nil, nil, 163, 75, 75, 75, - nil, 75, nil, nil, 163, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 75, 159, 159, - 159, nil, 159, nil, nil, nil, nil, nil, 75, nil, - nil, nil, 75, 75, nil, nil, 75, nil, 159, nil, - nil, 75, 75, nil, nil, 75, 261, 261, 75, 159, - 261, nil, nil, 159, 159, nil, 75, 159, nil, nil, - nil, nil, 159, 159, nil, nil, 159, nil, nil, 159, - 206, 206, 206, nil, 206, nil, 261, 159, 145, 145, - 261, 261, nil, nil, 261, nil, nil, nil, nil, 261, - nil, nil, nil, 261, nil, nil, 272, 272, 145, nil, - nil, 206, nil, nil, 261, 206, 206, nil, 145, 206, - nil, nil, 145, 145, 206, nil, 145, nil, 206, nil, - 145, 145, 50, 50, nil, 145, 272, nil, nil, 206, - 272, 272, 176, 176, 272, nil, 145, nil, nil, 272, - nil, nil, 50, 272, nil, nil, nil, nil, 309, 309, - nil, nil, 50, nil, 272, nil, 50, 50, 335, 335, - 50, nil, 176, nil, 50, 50, 176, 176, nil, 50, - 176, nil, nil, nil, nil, 176, nil, nil, 309, 176, - 50, nil, 309, 309, 222, 222, 309, nil, 335, nil, - 176, 309, 335, 335, nil, 309, 335, nil, nil, nil, - nil, 335, nil, 215, 215, 335, 309, nil, nil, 141, - 141, nil, 141, nil, 222, nil, 335, nil, 222, 222, - nil, nil, 222, 215, nil, 271, 271, 222, nil, nil, - nil, 222, nil, 215, nil, 144, 144, 215, 215, 141, - nil, 215, 222, 141, 141, 215, 215, 141, nil, nil, - 215, nil, 141, nil, nil, 271, 141, nil, nil, 271, - 271, 215, nil, 271, nil, 144, 76, 141, 271, 144, - 144, nil, 271, 144, nil, 76, 76, 144, 144, nil, - nil, nil, 144, 271, 76, 76, 76, 76, 109, 109, - nil, nil, nil, 144, nil, nil, nil, 109, 109, 109, - 109, nil, nil, nil, nil, nil, nil, nil, 76, 76, - nil, nil, 76, 76, 76, 76, 76, 76, nil, 76, - 76, 109, 109, nil, nil, 109, 109, 109, 109, 109, - 109, nil, 109, 109, 147, 147, nil, nil, nil, nil, - nil, nil, 147, 147, 147, 147, 147, 108, 108, nil, - nil, nil, nil, nil, nil, nil, 108, 108, 108, 108, - nil, nil, nil, nil, nil, nil, nil, 147, 147, nil, - nil, 147, 147, 147, 147, 147, 147, nil, 147, 147, - 108, 108, nil, nil, 108, 108, 108, 108, 108, 108, - nil, 108, 108, 244, 244, nil, nil, nil, nil, nil, - nil, nil, 244, 244, 244, 244, 240, 240, nil, nil, - nil, nil, nil, nil, nil, 240, 240, 240, 240, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 244, 244, 244, 244, 244, 244, 338, 244, 244, nil, - 240, nil, nil, 240, 240, 240, 240, 240, 240, nil, - 240, 240, nil, nil, nil, 350, nil, 338, nil, 338, - 338, nil, 338, 338, nil, 338, nil, 338, nil, 338, - nil, 338, nil, nil, 338, 338, 350, 249, 350, 350, - nil, 350, 350, nil, 350, nil, 350, nil, 350, nil, - 350, nil, nil, 350, 350, nil, 161, nil, 249, nil, - 249, 249, nil, 249, 249, nil, 249, nil, 249, nil, - 249, nil, 249, nil, nil, 249, 249, 161, 200, 161, - 161, nil, 161, 161, nil, 161, nil, 161, nil, 161, - nil, 161, nil, nil, 161, 161, nil, 340, nil, 200, - nil, 200, 200, nil, 200, 200, nil, 200, nil, 200, - nil, 200, nil, 200, nil, nil, 200, 200, 340, 279, - 340, 340, nil, 340, 340, nil, 340, nil, 340, nil, - 340, nil, 340, nil, nil, 340, 340, nil, 281, nil, - 279, nil, 279, 279, nil, 279, 279, nil, 279, nil, - 279, nil, 279, nil, 279, nil, nil, 279, 279, 281, - 330, 281, 281, nil, 281, 281, nil, 281, nil, 281, - nil, 281, nil, 281, nil, nil, 281, 281, nil, 283, - nil, 330, nil, 330, 330, nil, 330, 330, nil, 330, - nil, 330, nil, 330, nil, 330, nil, nil, 330, 330, - 283, 203, 283, 283, nil, 283, 283, nil, 283, nil, - 283, nil, 283, nil, 283, nil, nil, 283, 283, nil, - 352, nil, 203, nil, 203, 203, nil, 203, 203, nil, - 203, nil, 203, nil, 203, nil, 203, nil, nil, 203, - 203, 352, nil, 352, 352, nil, 352, 352, nil, 352, - nil, 352, nil, 352, nil, 352, nil, nil, 352, 352, - 29, nil, 29, 29, nil, 29, 29, nil, 29, nil, - 29, nil, 29, nil, 29, nil, nil, 29, 29, 0, - nil, 0, 0, nil, 0, 0, nil, 0, nil, 0, - nil, 0, nil, 0, nil, nil, 0, 0 ] + nil, 36, 215, 231, 231, nil, 215, 215, nil, nil, + 215, nil, 36, nil, nil, 215, 36, 36, nil, 215, + 36, nil, 219, 219, nil, 36, 36, nil, nil, 36, + 215, nil, 36, 231, nil, nil, nil, 231, 231, nil, + 36, 231, 219, 338, 338, nil, 231, nil, nil, nil, + 231, nil, 219, 314, 314, nil, 219, 219, nil, nil, + 219, 231, nil, nil, 219, 219, nil, nil, nil, 219, + nil, nil, nil, 338, 276, 276, nil, 338, 338, nil, + 219, 338, nil, 314, 275, 275, 338, 314, 314, nil, + 338, 314, nil, nil, nil, nil, 314, nil, nil, nil, + 314, 338, nil, nil, 276, 149, 149, nil, 276, 276, + nil, 314, 276, nil, 275, nil, nil, 276, 275, 275, + nil, 276, 275, 148, 148, nil, 148, 275, nil, nil, + nil, 275, 276, nil, nil, 149, nil, 180, 180, 149, + 149, nil, 275, 149, nil, nil, nil, 149, 149, nil, + nil, nil, 149, 148, nil, 262, 262, 148, 148, 262, + nil, 148, nil, 149, nil, nil, 148, 180, nil, nil, + 148, 180, 180, nil, nil, 180, 150, 150, nil, nil, + 180, 148, nil, nil, 180, 262, nil, nil, nil, 262, + 262, nil, nil, 262, nil, 180, 150, nil, 262, nil, + nil, nil, 262, nil, nil, nil, 150, 53, 53, nil, + 150, 150, nil, 262, 150, nil, nil, nil, 150, 150, + nil, nil, nil, 150, nil, nil, nil, 53, nil, nil, + nil, nil, nil, nil, 150, nil, nil, 53, 79, nil, + nil, 53, 53, nil, nil, 53, nil, 79, 79, 53, + 53, nil, nil, nil, 53, nil, 79, 79, 79, 79, + 113, 113, nil, nil, nil, 53, nil, nil, nil, 113, + 113, 113, 113, nil, nil, nil, nil, nil, nil, nil, + 79, 79, nil, nil, 79, 79, 79, 79, 79, 79, + nil, 79, 79, 113, 113, nil, nil, 113, 113, 113, + 113, 113, 113, nil, 113, 113, 248, 248, nil, nil, + nil, nil, nil, nil, nil, 248, 248, 248, 248, 244, + 244, nil, nil, nil, nil, nil, nil, nil, 244, 244, + 244, 244, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 248, 248, 248, 248, 248, 248, nil, + 248, 248, nil, 244, nil, nil, 244, 244, 244, 244, + 244, 244, nil, 244, 244, 112, 112, nil, nil, nil, + nil, nil, nil, nil, 112, 112, 112, 112, 151, 151, + nil, nil, nil, nil, nil, nil, 151, 151, 151, 151, + 151, nil, nil, nil, nil, nil, nil, nil, 112, 112, + nil, nil, 112, 112, 112, 112, 112, 112, nil, 112, + 112, 151, 151, nil, nil, 151, 151, 151, 151, 151, + 151, 343, 151, 151, 117, 117, nil, nil, nil, nil, + nil, nil, nil, 117, 117, 117, 117, nil, nil, nil, + nil, nil, 343, nil, 343, 343, nil, 343, 343, 287, + 343, nil, 343, nil, 343, nil, 343, 117, 117, 343, + 343, 117, 117, 117, 117, 117, 117, nil, 117, 117, + 287, 285, 287, 287, nil, 287, 287, nil, 287, nil, + 287, nil, 287, nil, 287, nil, nil, 287, 287, nil, + 333, nil, 285, nil, 285, 285, nil, 285, 285, nil, + 285, nil, 285, nil, 285, nil, 285, nil, nil, 285, + 285, 333, 165, 333, 333, nil, 333, 333, nil, 333, + nil, 333, nil, 333, nil, 333, nil, nil, 333, 333, + nil, 253, nil, 165, nil, 165, 165, nil, 165, 165, + nil, 165, nil, 165, nil, 165, nil, 165, nil, nil, + 165, 165, 253, 205, 253, 253, nil, 253, 253, nil, + 253, nil, 253, nil, 253, nil, 253, nil, nil, 253, + 253, nil, 206, nil, 205, nil, 205, 205, nil, 205, + 205, nil, 205, nil, 205, nil, 205, nil, 205, nil, + nil, 205, 205, 206, 353, 206, 206, nil, 206, 206, + nil, 206, nil, 206, nil, 206, nil, 206, nil, nil, + 206, 206, nil, 355, nil, 353, nil, 353, 353, nil, + 353, 353, nil, 353, nil, 353, nil, 353, nil, 353, + nil, nil, 353, 353, 355, nil, 355, 355, nil, 355, + 355, nil, 355, nil, 355, nil, 355, nil, 355, nil, + nil, 355, 355, 0, nil, 0, 0, nil, 0, 0, + nil, 0, nil, 0, nil, 0, nil, 0, nil, nil, + 0, 0, 30, nil, 30, 30, nil, 30, 30, nil, + 30, nil, 30, nil, 30, nil, 30, nil, nil, 30, + 30 ] racc_action_pointer = [ - 1691, 215, nil, nil, nil, 115, nil, nil, nil, nil, - nil, 75, 406, nil, nil, 402, 136, nil, 186, nil, - 207, nil, 0, 19, nil, 402, 140, 331, nil, 1672, - 110, nil, nil, 444, 465, 312, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 5, -2, 308, 343, nil, - 1119, nil, 311, 310, 746, 326, nil, nil, 308, nil, - nil, nil, 51, nil, nil, 293, 292, nil, 301, 276, - 294, nil, nil, 269, 266, 995, 1260, nil, 261, 684, - nil, nil, 663, nil, 89, 259, nil, 228, 225, 64, - 193, 159, 122, nil, 128, nil, 99, 88, 337, 231, - 52, 82, 308, 242, nil, nil, nil, 249, 1332, 1273, - 130, 261, nil, 8, nil, 20, 268, nil, nil, 278, - nil, nil, 266, 90, 296, 319, 321, nil, 56, 379, - nil, nil, nil, nil, nil, nil, 5, 403, 85, nil, - 20, 1206, nil, 142, 1232, 1075, 4, 1319, 248, 269, - 382, 517, 538, 590, 611, 787, 243, 860, 922, 1016, - 355, 1489, 725, 943, 808, nil, 174, nil, nil, nil, - nil, 114, nil, nil, 405, nil, 1129, 214, 365, 283, - 390, 351, nil, 111, -15, nil, nil, nil, 56, nil, - nil, nil, 147, nil, 65, 354, nil, nil, nil, nil, - 1511, nil, nil, 1634, 112, 104, 1068, 150, 123, 128, - 14, 197, 169, 207, nil, 1200, nil, 222, nil, nil, - 219, nil, 1181, nil, nil, nil, 126, nil, nil, nil, - nil, nil, -1, 251, nil, 166, 341, 548, 224, 296, - 1391, 206, 402, nil, 1378, 146, 475, nil, 271, 1470, - 183, 161, 134, nil, 306, nil, 25, 881, nil, 9, - nil, 1043, nil, 311, nil, 319, 34, 62, nil, nil, - nil, 1222, 1093, nil, 323, 315, 3, nil, 331, 1552, - nil, 1571, nil, 1612, nil, nil, nil, nil, nil, 347, - nil, nil, nil, nil, nil, 403, nil, 225, nil, nil, - nil, 357, nil, 336, nil, nil, nil, nil, 360, 1145, - nil, nil, 369, nil, nil, nil, nil, 358, 359, nil, - 368, 369, 370, nil, 331, nil, nil, 38, 321, nil, - 1593, nil, nil, nil, nil, 1155, 403, 404, 1429, nil, - 1530, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 1448, nil, 1653, nil, nil ] + 1755, 86, nil, nil, nil, 123, 388, nil, nil, nil, + nil, nil, 9, 383, nil, nil, 382, 227, nil, 272, + nil, 293, nil, 210, 24, nil, 383, 79, 311, nil, + 1774, 95, nil, nil, 541, 582, 1109, 310, nil, 654, + nil, nil, nil, nil, nil, nil, nil, nil, 6, 727, + 291, 310, nil, 1334, 304, nil, 240, 924, 243, nil, + 221, nil, 222, nil, nil, nil, 51, nil, nil, 195, + 190, nil, 182, 144, nil, 129, nil, 108, 1047, 1362, + nil, 73, 996, nil, 975, nil, nil, 51, 21, 11, + nil, 167, -2, 175, 178, 185, nil, 217, nil, 259, + 275, 644, 255, 131, 87, 314, 299, nil, nil, nil, + 318, 327, 1480, 1375, 85, 336, nil, 1539, 343, 30, + nil, 34, nil, 330, nil, nil, nil, 322, 70, 348, + 377, 385, nil, 383, 385, nil, nil, nil, nil, nil, + nil, -2, 376, nil, 67, 19, nil, 193, 1250, 1232, + 1303, 1493, 60, 81, 133, 154, 206, 344, 406, 468, + 243, 520, 706, 768, 187, 1635, 789, 841, 903, nil, + 306, nil, nil, nil, nil, nil, 105, nil, 184, nil, + 1264, 247, 43, 318, 6, 331, nil, -14, 56, nil, + nil, nil, -6, nil, nil, nil, 222, nil, 152, 11, + nil, nil, nil, nil, nil, 1676, 1695, nil, nil, 39, + 930, 1037, 89, 64, 73, 1099, 125, 100, nil, 1149, + 158, nil, 603, nil, nil, nil, 166, nil, nil, 160, + nil, 1130, nil, nil, nil, nil, nil, 51, nil, 167, + 248, 303, 478, 165, 1434, 92, 181, nil, 1421, 230, + 540, nil, 226, 1654, 203, 118, 232, nil, 293, nil, + 2, 862, 1282, nil, 68, nil, nil, 307, nil, 313, + -20, 121, nil, nil, nil, 1211, 1201, nil, 322, -12, + 4, 331, nil, 385, nil, 1594, nil, 1572, nil, nil, + nil, nil, nil, 342, nil, nil, nil, nil, nil, nil, + 458, nil, 270, nil, 358, nil, 336, nil, nil, nil, + nil, nil, nil, 362, 1180, 363, nil, nil, nil, nil, + 352, 353, nil, 355, 357, 358, nil, 396, nil, nil, + 129, 334, nil, 1613, nil, nil, nil, nil, 1170, 386, + 389, 447, nil, 1544, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 1717, nil, 1736, nil, nil ] racc_action_default = [ - -178, -216, -15, -3, -169, -216, -16, -5, -167, -17, - -6, -216, -216, -7, -8, -216, -168, -9, -216, -10, - -216, -11, -216, -216, -12, -216, -216, -40, -13, -1, - -216, -14, -2, -216, -216, -178, -168, -170, -172, -175, - -174, -173, -203, -176, -177, -178, -74, -81, -195, -31, - -216, -34, -32, -216, -216, -64, -33, -106, -21, -108, - -107, -22, -63, -23, -62, -26, -27, -156, -216, -28, - -214, -157, -155, -29, -30, -216, -216, -96, -92, -216, - -116, -100, -216, -101, -216, -93, -99, -97, -94, -216, - -103, -95, -102, -98, -216, -158, -160, -43, -216, -74, - -178, -178, -216, -178, -41, -4, -39, -216, -72, -73, - -216, -216, -191, -216, -189, -216, -216, -68, -75, -65, - -71, -64, -60, -63, -66, -201, -69, -58, -67, -216, - -154, -153, -70, -79, -80, -82, -216, -201, -216, -20, - -216, -216, -84, -216, -216, -216, -216, -216, -216, -216, - -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, - -216, -216, -216, -216, -216, -198, -216, -132, -212, -211, - -210, -216, -207, -206, -216, -125, -216, -216, -81, -216, - -216, -201, -195, -178, -216, -47, -49, -63, -216, -56, - -55, -46, -216, 355, -179, -216, -180, -193, -192, -194, - -216, -190, -171, -216, -216, -61, -216, -216, -202, -74, - -216, -216, -202, -216, -18, -216, -151, -216, -143, -144, - -63, -149, -216, -152, -150, -109, -216, -199, -200, -24, - -25, -105, -216, -216, -135, -121, -123, -127, -124, -129, - -134, -131, -128, -117, -133, -130, -126, -118, -113, -216, - -119, -120, -122, -196, -200, -204, -216, -216, -137, -216, - -141, -216, -159, -201, -110, -216, -216, -216, -52, -51, - -45, -216, -216, -44, -188, -216, -216, -183, -186, -216, - -164, -216, -166, -216, -35, -59, -77, -36, -76, -201, - -78, -38, -83, -213, -19, -216, -146, -201, -85, -104, - -215, -216, -112, -113, -197, -208, -205, -209, -216, -216, - -138, -136, -216, -37, -50, -48, -90, -86, -87, -53, - -91, -88, -89, -54, -216, -181, -182, -216, -216, -162, - -216, -163, -165, -57, -148, -216, -216, -200, -216, -111, - -216, -142, -42, -187, -184, -185, -161, -147, -145, -115, - -216, -140, -216, -114, -139 ] + -179, -217, -15, -3, -170, -217, -217, -16, -5, -168, + -17, -6, -217, -217, -7, -8, -217, -169, -9, -217, + -10, -217, -11, -217, -217, -12, -217, -217, -40, -13, + -1, -217, -14, -2, -217, -217, -217, -179, -169, -217, + -171, -173, -176, -175, -174, -204, -177, -178, -179, -75, + -82, -196, -31, -217, -215, -34, -32, -217, -64, -33, + -217, -107, -21, -109, -108, -22, -63, -23, -62, -26, + -27, -157, -217, -28, -156, -29, -158, -30, -217, -217, + -97, -93, -217, -101, -217, -117, -102, -217, -94, -98, + -100, -95, -217, -104, -96, -103, -99, -217, -159, -161, + -43, -217, -75, -179, -179, -217, -179, -41, -4, -39, + -217, -217, -72, -74, -217, -217, -192, -73, -217, -217, + -190, -217, -68, -65, -76, -71, -64, -60, -63, -66, + -202, -69, -58, -67, -217, -155, -154, -70, -80, -81, + -83, -217, -202, -20, -217, -217, -85, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -199, + -217, -133, -213, -212, -211, -207, -217, -208, -217, -126, + -217, -217, -82, -217, -217, -202, -196, -179, -217, -47, + -49, -63, -217, -56, -55, -46, -217, 358, -180, -217, + -181, -214, -194, -193, -195, -217, -217, -191, -172, -217, + -61, -217, -217, -203, -75, -217, -217, -203, -18, -217, + -217, -110, -217, -200, -201, -152, -217, -144, -145, -63, + -150, -217, -153, -151, -24, -25, -106, -217, -136, -122, + -124, -128, -125, -130, -135, -132, -129, -118, -134, -131, + -127, -119, -114, -217, -120, -121, -123, -197, -201, -205, + -217, -217, -217, -138, -217, -142, -160, -202, -111, -217, + -217, -217, -52, -51, -45, -217, -217, -44, -189, -217, + -217, -187, -184, -217, -165, -217, -167, -217, -35, -59, + -78, -36, -77, -202, -79, -38, -84, -19, -216, -86, + -217, -147, -202, -105, -217, -113, -114, -198, -206, -209, + -210, -139, -137, -217, -217, -217, -37, -50, -48, -91, + -87, -88, -53, -92, -89, -90, -54, -217, -182, -183, + -217, -217, -163, -217, -164, -166, -57, -149, -217, -217, + -201, -217, -112, -217, -143, -42, -188, -185, -186, -162, + -148, -146, -116, -217, -141, -217, -115, -140 ] racc_goto_table = [ - 23, 29, 172, 105, 219, 15, 125, 277, 65, 37, - 58, 127, 137, 72, 258, 217, 35, 132, 229, 184, - 192, 63, 302, 32, 319, 323, 56, 207, 133, 23, - 107, 204, 143, 335, 15, 49, 261, 103, 124, 211, - 292, 106, 65, 72, 140, 218, 315, 72, 297, 96, - 260, 195, 111, 45, 116, 63, 120, 166, 112, 181, - 56, 97, 201, 275, 276, 117, 122, 52, 114, 49, - 198, 171, 25, 95, nil, nil, 179, 339, nil, nil, - nil, nil, nil, 265, 44, 296, nil, nil, nil, 229, - nil, nil, 189, 189, nil, nil, 217, 119, nil, 310, - nil, 52, 266, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 94, 202, 74, nil, nil, nil, nil, nil, - nil, 197, 69, nil, nil, nil, 196, nil, nil, nil, - nil, nil, nil, 221, nil, 260, 65, 65, 72, 232, - 344, 72, 72, 263, 131, nil, 142, 66, 74, 230, - 63, nil, 128, nil, 56, 56, 69, nil, nil, 133, - nil, 23, 249, 49, 49, 312, 15, nil, 221, 289, - 285, 142, nil, 72, 305, 189, 132, 126, nil, nil, - nil, 66, nil, 341, nil, nil, 44, nil, 44, 288, - 142, 333, 216, 133, nil, 52, 52, 124, 347, 336, - 23, 281, 72, 23, 283, 15, nil, 65, 15, 217, - nil, nil, 72, nil, 221, 120, nil, nil, nil, 72, - 230, nil, nil, 105, 117, 56, nil, 216, 262, 243, - 213, 190, 190, 247, 49, nil, nil, 73, 233, 131, - nil, nil, 74, 74, nil, nil, nil, 224, nil, 23, - 69, 69, nil, 221, 15, 105, 119, 105, 72, 189, - nil, nil, nil, 318, 318, nil, 52, 130, 72, 72, - nil, 73, 223, 216, 131, 66, 66, nil, nil, 23, - 330, 23, 224, 23, 15, nil, 15, nil, 15, nil, - 316, 316, nil, nil, nil, nil, nil, nil, 286, nil, - nil, 221, 290, 131, 105, nil, 72, 223, nil, nil, - nil, 128, 216, 74, 190, nil, nil, nil, 298, nil, - 131, 69, 317, 317, 105, nil, 105, 221, 224, nil, - 23, nil, 72, nil, nil, 15, 126, nil, 23, 350, - 23, 352, nil, 15, nil, 15, 66, nil, nil, 307, - 23, nil, 23, 223, nil, 15, nil, 15, nil, 131, - 216, nil, 130, nil, 76, 73, 73, 224, nil, 131, - 131, nil, nil, nil, nil, nil, nil, 321, 321, 108, - 109, nil, nil, nil, nil, nil, 216, 334, nil, nil, - nil, nil, 223, nil, nil, nil, nil, 130, 190, nil, - nil, nil, 320, 320, nil, nil, nil, 131, nil, nil, - nil, nil, nil, nil, nil, 224, 343, nil, nil, nil, - 345, 147, nil, nil, nil, nil, 130, nil, 167, nil, - nil, nil, nil, 131, nil, 175, 73, nil, nil, nil, - 223, 224, nil, 130, nil, nil, nil, nil, nil, nil, + 24, 228, 59, 6, 130, 108, 16, 226, 177, 30, + 62, 132, 138, 40, 282, 137, 142, 212, 47, 263, + 37, 188, 196, 67, 234, 33, 305, 147, 97, 216, + 24, 110, 100, 6, 125, 296, 16, 262, 59, 265, + 338, 111, 106, 322, 326, 52, 144, 109, 227, 127, + 302, 99, 170, 199, 115, 48, 118, 185, 209, 67, + 207, 279, 116, 280, 146, 318, 203, 176, 56, 26, + nil, 183, 269, 120, 98, nil, nil, 122, nil, nil, + 342, 52, nil, nil, 301, nil, nil, nil, nil, 146, + 226, nil, nil, nil, 234, nil, nil, nil, nil, nil, + 123, 311, nil, nil, 56, 270, nil, nil, 146, 77, + nil, nil, nil, nil, nil, nil, nil, 74, nil, nil, + nil, 265, 208, nil, nil, 47, nil, 47, nil, 202, + nil, 200, nil, nil, 59, 59, nil, nil, nil, nil, + nil, 136, nil, 237, 138, 77, 347, nil, 267, 74, + nil, nil, 220, 74, 315, 235, 67, nil, nil, nil, + nil, nil, nil, nil, nil, 24, 247, nil, 6, 293, + 251, 16, 289, 344, 253, 292, 137, 52, 52, 138, + 336, 309, nil, nil, nil, nil, nil, nil, nil, 339, + nil, 350, nil, nil, nil, 125, nil, 226, nil, 225, + 56, 56, nil, nil, 59, 24, 24, nil, 6, 6, + nil, 16, 16, nil, 285, 287, nil, nil, 290, nil, + nil, nil, 294, nil, nil, 235, nil, nil, 108, 299, + nil, 225, 266, nil, nil, nil, nil, nil, 122, nil, + 136, 77, 77, nil, nil, nil, nil, 52, 74, 74, + 74, nil, nil, 24, nil, nil, 6, nil, nil, 16, + 108, 123, 108, nil, 73, nil, nil, nil, 310, 75, + 56, nil, 136, nil, nil, nil, nil, nil, nil, nil, + 74, nil, 225, 24, 69, 24, 6, 24, 6, 16, + 6, 16, 333, 16, nil, nil, 133, nil, nil, nil, + 73, 135, 136, 319, 319, 75, nil, 337, 108, nil, + 74, 77, nil, 225, nil, nil, 129, nil, nil, 74, + 69, nil, nil, 136, nil, nil, 320, 320, 108, nil, + 108, 74, nil, 24, 346, nil, 6, 70, 348, 16, + nil, 24, nil, 24, 6, nil, 6, 16, nil, 16, + 353, nil, 355, 24, 136, 24, 6, nil, 6, 16, + nil, 16, 74, nil, nil, 225, nil, 136, 136, 131, + 193, 193, nil, 70, nil, 74, 74, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 225, + nil, nil, nil, nil, nil, 233, 73, 73, nil, nil, + 135, 75, 75, nil, nil, nil, 136, nil, nil, nil, + nil, nil, nil, nil, 74, 230, 69, 69, nil, nil, + 79, nil, nil, 194, 194, nil, nil, 233, nil, nil, + 136, nil, 135, nil, nil, nil, 112, 113, 74, nil, + 117, nil, nil, nil, nil, nil, nil, 230, nil, nil, + nil, nil, nil, nil, 193, nil, nil, 133, nil, nil, + nil, nil, 135, nil, nil, nil, 73, nil, 232, 70, + 70, 75, nil, nil, nil, nil, nil, 129, 233, 151, + nil, nil, nil, 135, nil, 171, 69, nil, nil, nil, + nil, nil, nil, 179, nil, nil, nil, nil, 230, nil, + 232, nil, nil, nil, nil, nil, nil, 194, nil, 233, + nil, nil, nil, nil, 135, nil, nil, nil, nil, nil, + nil, nil, 324, 324, nil, nil, nil, 325, 325, 230, + 131, nil, nil, nil, nil, nil, nil, nil, 193, 70, + nil, nil, 321, 321, nil, nil, nil, nil, nil, nil, + nil, 232, nil, 239, 240, 241, 242, 243, 244, 245, + 246, 233, 248, 249, 250, nil, 135, 254, 255, 256, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, nil, + nil, 230, 232, nil, nil, 233, nil, nil, nil, nil, + 135, 194, nil, nil, nil, 323, 323, nil, nil, nil, + nil, nil, nil, nil, nil, 230, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 130, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 322, 322, 235, 236, 237, 238, 239, 240, - 241, 242, nil, 244, 245, 246, nil, nil, 250, 251, - 252, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 130, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 232, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 130 ] + nil, nil, nil, nil, nil, nil, nil, nil, 232 ] racc_goto_check = [ - 34, 2, 77, 4, 63, 20, 32, 74, 21, 70, - 18, 44, 35, 46, 59, 61, 29, 47, 19, 38, - 38, 20, 56, 3, 43, 43, 28, 33, 49, 34, - 34, 31, 53, 54, 20, 26, 58, 29, 21, 33, - 52, 5, 21, 46, 18, 62, 39, 46, 64, 65, - 61, 66, 67, 68, 69, 20, 28, 53, 3, 32, - 28, 37, 71, 72, 73, 26, 30, 27, 3, 26, - 75, 76, 1, 27, nil, nil, 53, 56, nil, nil, - nil, nil, nil, 33, 57, 63, nil, nil, nil, 19, - nil, nil, 21, 21, nil, nil, 61, 27, nil, 59, - nil, 27, 38, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 50, 70, 25, nil, nil, nil, nil, nil, - nil, 29, 23, nil, nil, nil, 3, nil, nil, nil, - nil, nil, nil, 21, nil, 61, 21, 21, 46, 18, - 74, 46, 46, 35, 25, nil, 50, 22, 25, 20, - 20, nil, 23, nil, 28, 28, 23, nil, nil, 49, - nil, 34, 2, 26, 26, 33, 20, nil, 21, 32, - 44, 50, nil, 46, 77, 21, 47, 22, nil, nil, - nil, 22, nil, 61, nil, nil, 57, nil, 57, 49, - 50, 33, 27, 49, nil, 27, 27, 21, 63, 33, - 34, 2, 46, 34, 2, 20, nil, 21, 20, 61, - nil, nil, 46, nil, 21, 28, nil, nil, nil, 46, - 20, nil, nil, 4, 26, 28, nil, 27, 27, 57, - 50, 22, 22, 57, 26, nil, nil, 24, 50, 25, - nil, nil, 25, 25, nil, nil, nil, 23, nil, 34, - 23, 23, nil, 21, 20, 4, 27, 4, 46, 21, - nil, nil, nil, 21, 21, nil, 27, 24, 46, 46, - nil, 24, 22, 27, 25, 22, 22, nil, nil, 34, - 2, 34, 23, 34, 20, nil, 20, nil, 20, nil, - 26, 26, nil, nil, nil, nil, nil, nil, 50, nil, - nil, 21, 50, 25, 4, nil, 46, 22, nil, nil, - nil, 23, 27, 25, 22, nil, nil, nil, 50, nil, - 25, 23, 27, 27, 4, nil, 4, 21, 23, nil, - 34, nil, 46, nil, nil, 20, 22, nil, 34, 2, - 34, 2, nil, 20, nil, 20, 22, nil, nil, 50, - 34, nil, 34, 22, nil, 20, nil, 20, nil, 25, - 27, nil, 24, nil, 48, 24, 24, 23, nil, 25, - 25, nil, nil, nil, nil, nil, nil, 23, 23, 48, - 48, nil, nil, nil, nil, nil, 27, 50, nil, nil, - nil, nil, 22, nil, nil, nil, nil, 24, 22, nil, - nil, nil, 22, 22, nil, nil, nil, 25, nil, nil, - nil, nil, nil, nil, nil, 23, 50, nil, nil, nil, - 50, 48, nil, nil, nil, nil, 24, nil, 48, nil, - nil, nil, nil, 25, nil, 48, 24, nil, nil, nil, - 22, 23, nil, 24, nil, nil, nil, nil, nil, nil, + 34, 64, 28, 49, 32, 4, 20, 62, 78, 2, + 18, 44, 50, 71, 75, 47, 35, 33, 58, 60, + 29, 38, 38, 20, 19, 3, 57, 54, 51, 33, + 34, 34, 37, 49, 28, 53, 20, 59, 28, 62, + 55, 51, 29, 43, 43, 26, 18, 5, 63, 30, + 65, 66, 54, 67, 68, 69, 70, 32, 31, 20, + 72, 73, 3, 74, 51, 39, 76, 77, 27, 1, + nil, 54, 33, 3, 27, nil, nil, 26, nil, nil, + 57, 26, nil, nil, 64, nil, nil, nil, nil, 51, + 62, nil, nil, nil, 19, nil, nil, nil, nil, nil, + 27, 60, nil, nil, 27, 38, nil, nil, 51, 25, + nil, nil, nil, nil, nil, nil, nil, 46, nil, nil, + nil, 62, 71, nil, nil, 58, nil, 58, nil, 29, + nil, 3, nil, nil, 28, 28, nil, nil, nil, nil, + nil, 25, nil, 18, 50, 25, 75, nil, 35, 46, + nil, nil, 51, 46, 33, 20, 20, nil, nil, nil, + nil, nil, nil, nil, nil, 34, 58, nil, 49, 32, + 58, 20, 44, 62, 2, 50, 47, 26, 26, 50, + 33, 78, nil, nil, nil, nil, nil, nil, nil, 33, + nil, 64, nil, nil, nil, 28, nil, 62, nil, 27, + 27, 27, nil, nil, 28, 34, 34, nil, 49, 49, + nil, 20, 20, nil, 2, 2, nil, nil, 51, nil, + nil, nil, 51, nil, nil, 20, nil, nil, 4, 51, + nil, 27, 27, nil, nil, nil, nil, nil, 26, nil, + 25, 25, 25, nil, nil, nil, nil, 26, 46, 46, + 46, nil, nil, 34, nil, nil, 49, nil, nil, 20, + 4, 27, 4, nil, 23, nil, nil, nil, 51, 24, + 27, nil, 25, nil, nil, nil, nil, nil, nil, nil, + 46, nil, 27, 34, 21, 34, 49, 34, 49, 20, + 49, 20, 2, 20, nil, nil, 23, nil, nil, nil, + 23, 24, 25, 26, 26, 24, nil, 51, 4, nil, + 46, 25, nil, 27, nil, nil, 21, nil, nil, 46, + 21, nil, nil, 25, nil, nil, 27, 27, 4, nil, + 4, 46, nil, 34, 51, nil, 49, 22, 51, 20, + nil, 34, nil, 34, 49, nil, 49, 20, nil, 20, + 2, nil, 2, 34, 25, 34, 49, nil, 49, 20, + nil, 20, 46, nil, nil, 27, nil, 25, 25, 22, + 21, 21, nil, 22, nil, 46, 46, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 27, + nil, nil, nil, nil, nil, 23, 23, 23, nil, nil, + 24, 24, 24, nil, nil, nil, 25, nil, nil, nil, + nil, nil, nil, nil, 46, 21, 21, 21, nil, nil, + 48, nil, nil, 22, 22, nil, nil, 23, nil, nil, + 25, nil, 24, nil, nil, nil, 48, 48, 46, nil, + 48, nil, nil, nil, nil, nil, nil, 21, nil, nil, + nil, nil, nil, nil, 21, nil, nil, 23, nil, nil, + nil, nil, 24, nil, nil, nil, 23, nil, 22, 22, + 22, 24, nil, nil, nil, nil, nil, 21, 23, 48, + nil, nil, nil, 24, nil, 48, 21, nil, nil, nil, + nil, nil, nil, 48, nil, nil, nil, nil, 21, nil, + 22, nil, nil, nil, nil, nil, nil, 22, nil, 23, + nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, + nil, nil, 23, 23, nil, nil, nil, 24, 24, 21, + 22, nil, nil, nil, nil, nil, nil, nil, 21, 22, + nil, nil, 21, 21, nil, nil, nil, nil, nil, nil, + nil, 22, nil, 48, 48, 48, 48, 48, 48, 48, + 48, 23, 48, 48, 48, nil, 24, 48, 48, 48, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 22, nil, nil, nil, + nil, 21, 22, nil, nil, 23, nil, nil, nil, nil, + 24, 22, nil, nil, nil, 22, 22, nil, nil, nil, + nil, nil, nil, nil, nil, 21, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 24, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 24, 24, 48, 48, 48, 48, 48, 48, - 48, 48, nil, 48, 48, 48, nil, nil, 48, 48, - 48, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 24, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 24 ] + nil, nil, nil, nil, nil, nil, nil, nil, 22 ] racc_goto_pointer = [ - nil, 72, 1, 23, -26, 11, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -6, -126, - 5, -8, 131, 106, 221, 98, 19, 51, 10, 11, - 20, -91, -40, -98, 0, -35, nil, 38, -81, -221, - nil, nil, nil, -247, -35, nil, -3, -29, 346, -19, - 92, nil, -172, -22, -264, nil, -226, 73, -140, -162, - nil, -126, -96, -137, -174, 27, -52, 17, 42, 9, - -2, -51, -131, -130, -187, -40, -13, -82, nil, nil ] + nil, 69, 9, 25, -25, 16, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, -7, -125, + 6, 267, 320, 247, 252, 92, 28, 51, -15, 15, + 0, -69, -45, -113, 0, -34, nil, 8, -82, -206, + nil, nil, nil, -232, -38, nil, 100, -34, 401, 3, + -38, 7, nil, -182, -30, -262, nil, -226, 6, -143, + -161, nil, -141, -100, -147, -181, 28, -53, 17, 43, + 8, 1, -59, -137, -135, -184, -48, -20, -79, nil ] racc_goto_default = [ - nil, nil, nil, 191, 3, 7, 10, 13, 14, 17, - 19, 21, 24, 28, 31, 2, 6, 9, nil, 61, - 83, 85, 87, 88, 91, 92, 77, 78, 81, 12, - nil, nil, nil, nil, 68, nil, 30, nil, nil, 185, - 267, 186, 188, nil, nil, 129, 90, 93, nil, 118, - 80, 134, 135, nil, 226, 86, nil, 71, nil, nil, - 259, 53, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 38, nil, nil, nil, nil, nil, nil, 174, 70 ] + nil, nil, nil, 195, 3, 8, 11, 14, 15, 18, + 20, 22, 25, 29, 32, 2, 7, 10, nil, 65, + 86, 88, 89, 91, 94, 95, 80, 81, 83, 13, + nil, nil, nil, nil, 72, nil, 31, nil, nil, 189, + 271, 190, 192, nil, nil, 134, 93, 96, nil, 54, + 124, 85, 139, 140, nil, 222, 90, nil, 76, nil, + nil, 264, 60, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 41, nil, nil, nil, nil, nil, nil, 178 ] racc_token_table = { false => 0, @@ -1027,6 +1066,7 @@ Racc_token_to_s_table = [ 'undef', 'array', 'expression', +'hasharrayaccess', 'param', 'rvalue', 'addparam', @@ -1056,8 +1096,7 @@ Racc_token_to_s_table = [ 'classnameordefault', 'hashpairs', 'hashpair', -'key', -'hasharrayaccess'] +'key'] Racc_debug_parser = false @@ -1519,30 +1558,37 @@ module_eval <<'.,.,', 'grammar.ra', 338 end .,., -module_eval <<'.,.,', 'grammar.ra', 343 +module_eval <<'.,.,', 'grammar.ra', 341 def _reduce_73( val, _values, result ) + result = ast AST::VarDef, :name => val[0], :value => val[2] + result + end +.,., + +module_eval <<'.,.,', 'grammar.ra', 346 + def _reduce_74( 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] result end .,., -module_eval <<'.,.,', 'grammar.ra', 348 - def _reduce_74( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 351 + def _reduce_75( val, _values, result ) result = ast AST::ASTArray result end .,., -module_eval <<'.,.,', 'grammar.ra', 348 - def _reduce_75( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 351 + def _reduce_76( val, _values, result ) result = val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 357 - def _reduce_76( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 360 + def _reduce_77( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1553,41 +1599,41 @@ module_eval <<'.,.,', 'grammar.ra', 357 end .,., -module_eval <<'.,.,', 'grammar.ra', 361 - def _reduce_77( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 364 + def _reduce_78( val, _values, result ) result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 366 - def _reduce_78( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 369 + def _reduce_79( val, _values, result ) result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2], :add => true result end .,., - # reduce 79 omitted - # reduce 80 omitted -module_eval <<'.,.,', 'grammar.ra', 374 - def _reduce_81( val, _values, result ) + # reduce 81 omitted + +module_eval <<'.,.,', 'grammar.ra', 377 + def _reduce_82( val, _values, result ) result = ast AST::ASTArray result end .,., -module_eval <<'.,.,', 'grammar.ra', 374 - def _reduce_82( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 377 + def _reduce_83( val, _values, result ) result = val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 383 - def _reduce_83( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 386 + def _reduce_84( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1598,10 +1644,10 @@ module_eval <<'.,.,', 'grammar.ra', 383 end .,., - # reduce 84 omitted + # reduce 85 omitted -module_eval <<'.,.,', 'grammar.ra', 392 - def _reduce_85( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 395 + def _reduce_86( val, _values, result ) if val[0].instance_of?(AST::ASTArray) result = val[0].push(val[2]) else @@ -1611,8 +1657,6 @@ module_eval <<'.,.,', 'grammar.ra', 392 end .,., - # reduce 86 omitted - # reduce 87 omitted # reduce 88 omitted @@ -1647,8 +1691,10 @@ module_eval <<'.,.,', 'grammar.ra', 392 # reduce 103 omitted -module_eval <<'.,.,', 'grammar.ra', 421 - def _reduce_104( val, _values, result ) + # reduce 104 omitted + +module_eval <<'.,.,', 'grammar.ra', 424 + def _reduce_105( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], @@ -1658,8 +1704,8 @@ module_eval <<'.,.,', 'grammar.ra', 421 end .,., -module_eval <<'.,.,', 'grammar.ra', 426 - def _reduce_105( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 429 + def _reduce_106( val, _values, result ) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), @@ -1668,44 +1714,44 @@ module_eval <<'.,.,', 'grammar.ra', 426 end .,., -module_eval <<'.,.,', 'grammar.ra', 430 - def _reduce_106( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 433 + def _reduce_107( val, _values, result ) result = ast AST::String, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval <<'.,.,', 'grammar.ra', 432 - def _reduce_107( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 435 + def _reduce_108( val, _values, result ) result = ast AST::FlatString, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval <<'.,.,', 'grammar.ra', 436 - def _reduce_108( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 439 + def _reduce_109( val, _values, result ) result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval <<'.,.,', 'grammar.ra', 441 - def _reduce_109( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 444 + def _reduce_110( 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] result end .,., -module_eval <<'.,.,', 'grammar.ra', 443 - def _reduce_110( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 446 + def _reduce_111( val, _values, result ) result = ast AST::ResourceReference, :type => val[0], :title => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 457 - def _reduce_111( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 460 + def _reduce_112( val, _values, result ) @lexer.commentpop args = { :test => val[1], @@ -1721,8 +1767,8 @@ module_eval <<'.,.,', 'grammar.ra', 457 end .,., -module_eval <<'.,.,', 'grammar.ra', 470 - def _reduce_112( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 473 + def _reduce_113( val, _values, result ) @lexer.commentpop args = { :test => val[1], @@ -1738,32 +1784,25 @@ module_eval <<'.,.,', 'grammar.ra', 470 end .,., - # reduce 113 omitted + # reduce 114 omitted -module_eval <<'.,.,', 'grammar.ra', 476 - def _reduce_114( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 479 + def _reduce_115( val, _values, result ) @lexer.commentpop result = ast AST::Else, :statements => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 480 - def _reduce_115( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 483 + def _reduce_116( val, _values, result ) @lexer.commentpop result = ast AST::Else, :statements => ast(AST::Nop) result end .,., - # reduce 116 omitted - -module_eval <<'.,.,', 'grammar.ra', 497 - def _reduce_117( val, _values, result ) - result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - result - end -.,., + # reduce 117 omitted module_eval <<'.,.,', 'grammar.ra', 500 def _reduce_118( val, _values, result ) @@ -1774,7 +1813,7 @@ module_eval <<'.,.,', 'grammar.ra', 500 module_eval <<'.,.,', 'grammar.ra', 503 def _reduce_119( 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 .,., @@ -1816,14 +1855,14 @@ module_eval <<'.,.,', 'grammar.ra', 518 module_eval <<'.,.,', 'grammar.ra', 521 def _reduce_125( 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', 524 def _reduce_126( 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 .,., @@ -1865,14 +1904,14 @@ module_eval <<'.,.,', 'grammar.ra', 539 module_eval <<'.,.,', 'grammar.ra', 542 def _reduce_132( 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', 545 def _reduce_133( 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 .,., @@ -1886,13 +1925,20 @@ module_eval <<'.,.,', 'grammar.ra', 548 module_eval <<'.,.,', 'grammar.ra', 551 def _reduce_135( 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', 560 +module_eval <<'.,.,', 'grammar.ra', 554 def _reduce_136( val, _values, result ) + result = val[1] + result + end +.,., + +module_eval <<'.,.,', 'grammar.ra', 563 + def _reduce_137( val, _values, result ) @lexer.commentpop options = val[3] unless options.instance_of?(AST::ASTArray) @@ -1903,10 +1949,10 @@ module_eval <<'.,.,', 'grammar.ra', 560 end .,., - # reduce 137 omitted + # reduce 138 omitted -module_eval <<'.,.,', 'grammar.ra', 570 - def _reduce_138( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 573 + def _reduce_139( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push val[1] result = val[0] @@ -1917,16 +1963,16 @@ module_eval <<'.,.,', 'grammar.ra', 570 end .,., -module_eval <<'.,.,', 'grammar.ra', 575 - def _reduce_139( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 578 + def _reduce_140( val, _values, result ) @lexer.commentpop result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., -module_eval <<'.,.,', 'grammar.ra', 581 - def _reduce_140( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 584 + def _reduce_141( val, _values, result ) @lexer.commentpop result = ast(AST::CaseOpt, :value => val[0], @@ -1936,10 +1982,10 @@ module_eval <<'.,.,', 'grammar.ra', 581 end .,., - # reduce 141 omitted + # reduce 142 omitted -module_eval <<'.,.,', 'grammar.ra', 591 - def _reduce_142( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 594 + def _reduce_143( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1950,27 +1996,27 @@ module_eval <<'.,.,', 'grammar.ra', 591 end .,., -module_eval <<'.,.,', 'grammar.ra', 595 - def _reduce_143( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 598 + def _reduce_144( val, _values, result ) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., - # reduce 144 omitted + # reduce 145 omitted -module_eval <<'.,.,', 'grammar.ra', 601 - def _reduce_145( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 604 + def _reduce_146( val, _values, result ) @lexer.commentpop result = val[1] result end .,., - # reduce 146 omitted + # reduce 147 omitted -module_eval <<'.,.,', 'grammar.ra', 611 - def _reduce_147( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 614 + def _reduce_148( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1981,15 +2027,13 @@ module_eval <<'.,.,', 'grammar.ra', 611 end .,., -module_eval <<'.,.,', 'grammar.ra', 615 - def _reduce_148( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 618 + def _reduce_149( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., - # reduce 149 omitted - # reduce 150 omitted # reduce 151 omitted @@ -2002,31 +2046,33 @@ module_eval <<'.,.,', 'grammar.ra', 615 # reduce 155 omitted -module_eval <<'.,.,', 'grammar.ra', 626 - def _reduce_156( val, _values, result ) + # reduce 156 omitted + +module_eval <<'.,.,', 'grammar.ra', 629 + def _reduce_157( val, _values, result ) result = ast AST::Default, :value => val[0][:value], :line => val[0][:line] result end .,., - # reduce 157 omitted + # reduce 158 omitted -module_eval <<'.,.,', 'grammar.ra', 629 - def _reduce_158( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 632 + def _reduce_159( val, _values, result ) result = [val[0].value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 633 - def _reduce_159( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 636 + def _reduce_160( val, _values, result ) results = val[0] << val[2].value result end .,., -module_eval <<'.,.,', 'grammar.ra', 641 - def _reduce_160( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 644 + def _reduce_161( val, _values, result ) val[1].each do |file| import(file) end @@ -2036,8 +2082,8 @@ module_eval <<'.,.,', 'grammar.ra', 641 end .,., -module_eval <<'.,.,', 'grammar.ra', 652 - def _reduce_161( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 655 + def _reduce_162( val, _values, result ) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :code => val[4], :line => val[0][:line] @lexer.indefine = false @@ -2048,8 +2094,8 @@ module_eval <<'.,.,', 'grammar.ra', 652 end .,., -module_eval <<'.,.,', 'grammar.ra', 657 - def _reduce_162( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 660 + def _reduce_163( val, _values, result ) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :line => val[0][:line] @lexer.indefine = false @@ -2058,8 +2104,8 @@ module_eval <<'.,.,', 'grammar.ra', 657 end .,., -module_eval <<'.,.,', 'grammar.ra', 666 - def _reduce_163( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 669 + def _reduce_164( val, _values, result ) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop @@ -2069,8 +2115,8 @@ module_eval <<'.,.,', 'grammar.ra', 666 end .,., -module_eval <<'.,.,', 'grammar.ra', 672 - def _reduce_164( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 675 + def _reduce_165( val, _values, result ) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop @@ -2080,8 +2126,8 @@ module_eval <<'.,.,', 'grammar.ra', 672 end .,., -module_eval <<'.,.,', 'grammar.ra', 678 - def _reduce_165( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 681 + def _reduce_166( val, _values, result ) @lexer.commentpop newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line] result = nil @@ -2089,8 +2135,8 @@ module_eval <<'.,.,', 'grammar.ra', 678 end .,., -module_eval <<'.,.,', 'grammar.ra', 682 - def _reduce_166( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 685 + def _reduce_167( val, _values, result ) @lexer.commentpop newnode val[1], :parent => val[2], :line => val[0][:line] result = nil @@ -2098,31 +2144,31 @@ module_eval <<'.,.,', 'grammar.ra', 682 end .,., -module_eval <<'.,.,', 'grammar.ra', 683 - def _reduce_167( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 686 + def _reduce_168( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 685 - def _reduce_168( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 688 + def _reduce_169( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 686 - def _reduce_169( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 689 + def _reduce_170( val, _values, result ) result = val[0][:value] result end .,., - # reduce 170 omitted + # reduce 171 omitted -module_eval <<'.,.,', 'grammar.ra', 696 - def _reduce_171( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 699 + def _reduce_172( val, _values, result ) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] @@ -2130,78 +2176,78 @@ module_eval <<'.,.,', 'grammar.ra', 696 end .,., -module_eval <<'.,.,', 'grammar.ra', 700 - def _reduce_172( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 703 + def _reduce_173( val, _values, result ) result = ast AST::HostName, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 701 - def _reduce_173( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 704 + def _reduce_174( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 702 - def _reduce_174( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 705 + def _reduce_175( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 703 - def _reduce_175( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 706 + def _reduce_176( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 704 - def _reduce_176( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 707 + def _reduce_177( val, _values, result ) result = val[0][:value] result end .,., - # reduce 177 omitted + # reduce 178 omitted -module_eval <<'.,.,', 'grammar.ra', 710 - def _reduce_178( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 713 + def _reduce_179( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 714 - def _reduce_179( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 717 + def _reduce_180( val, _values, result ) result = ast AST::ASTArray, :children => [] result end .,., - # reduce 180 omitted + # reduce 181 omitted -module_eval <<'.,.,', 'grammar.ra', 719 - def _reduce_181( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 722 + def _reduce_182( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 723 - def _reduce_182( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 726 + def _reduce_183( val, _values, result ) result = val[1] result = [result] unless result[0].is_a?(Array) result end .,., - # reduce 183 omitted + # reduce 184 omitted -module_eval <<'.,.,', 'grammar.ra', 730 - def _reduce_184( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 733 + def _reduce_185( val, _values, result ) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] @@ -2209,67 +2255,67 @@ module_eval <<'.,.,', 'grammar.ra', 730 end .,., -module_eval <<'.,.,', 'grammar.ra', 735 - def _reduce_185( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 738 + def _reduce_186( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value], val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 739 - def _reduce_186( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 742 + def _reduce_187( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 741 - def _reduce_187( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 744 + def _reduce_188( val, _values, result ) result = [val[0][:value], val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 743 - def _reduce_188( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 746 + def _reduce_189( val, _values, result ) result = [val[0][:value]] result end .,., - # reduce 189 omitted + # reduce 190 omitted -module_eval <<'.,.,', 'grammar.ra', 748 - def _reduce_190( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 751 + def _reduce_191( val, _values, result ) result = val[1] result end .,., - # reduce 191 omitted + # reduce 192 omitted -module_eval <<'.,.,', 'grammar.ra', 753 - def _reduce_192( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 756 + def _reduce_193( val, _values, result ) result = val[1] result end .,., - # reduce 193 omitted - # reduce 194 omitted -module_eval <<'.,.,', 'grammar.ra', 759 - def _reduce_195( val, _values, result ) + # reduce 195 omitted + +module_eval <<'.,.,', 'grammar.ra', 762 + def _reduce_196( val, _values, result ) result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval <<'.,.,', 'grammar.ra', 767 - def _reduce_196( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 770 + def _reduce_197( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -2279,8 +2325,8 @@ module_eval <<'.,.,', 'grammar.ra', 767 end .,., -module_eval <<'.,.,', 'grammar.ra', 774 - def _reduce_197( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 777 + def _reduce_198( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -2290,35 +2336,35 @@ module_eval <<'.,.,', 'grammar.ra', 774 end .,., -module_eval <<'.,.,', 'grammar.ra', 776 - def _reduce_198( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 779 + def _reduce_199( val, _values, result ) result = ast AST::ASTArray result end .,., - # reduce 199 omitted - # reduce 200 omitted # reduce 201 omitted -module_eval <<'.,.,', 'grammar.ra', 781 - def _reduce_202( val, _values, result ) + # reduce 202 omitted + +module_eval <<'.,.,', 'grammar.ra', 784 + def _reduce_203( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 786 - def _reduce_203( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 789 + def _reduce_204( val, _values, result ) result = ast AST::Regex, :value => val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 794 - def _reduce_204( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 797 + def _reduce_205( val, _values, result ) if val[1].instance_of?(AST::ASTHash) result = val[1] else @@ -2328,8 +2374,8 @@ module_eval <<'.,.,', 'grammar.ra', 794 end .,., -module_eval <<'.,.,', 'grammar.ra', 801 - def _reduce_205( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 804 + def _reduce_206( val, _values, result ) if val[1].instance_of?(AST::ASTHash) result = val[1] else @@ -2339,17 +2385,17 @@ module_eval <<'.,.,', 'grammar.ra', 801 end .,., -module_eval <<'.,.,', 'grammar.ra', 803 - def _reduce_206( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 806 + def _reduce_207( val, _values, result ) result = ast AST::ASTHash result end .,., - # reduce 207 omitted + # reduce 208 omitted -module_eval <<'.,.,', 'grammar.ra', 813 - def _reduce_208( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 816 + def _reduce_209( val, _values, result ) if val[0].instance_of?(AST::ASTHash) result = val[0].merge(val[2]) else @@ -2360,45 +2406,45 @@ module_eval <<'.,.,', 'grammar.ra', 813 end .,., -module_eval <<'.,.,', 'grammar.ra', 817 - def _reduce_209( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 820 + def _reduce_210( val, _values, result ) result = ast AST::ASTHash, { :value => { val[0] => val[2] } } result end .,., -module_eval <<'.,.,', 'grammar.ra', 818 - def _reduce_210( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 821 + def _reduce_211( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 819 - def _reduce_211( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 822 + def _reduce_212( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 820 - def _reduce_212( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 823 + def _reduce_213( val, _values, result ) result = val[0][:value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 825 - def _reduce_213( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 828 + def _reduce_214( val, _values, result ) result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2] result end .,., - # reduce 214 omitted + # reduce 215 omitted -module_eval <<'.,.,', 'grammar.ra', 830 - def _reduce_215( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 833 + def _reduce_216( val, _values, result ) result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2] result end diff --git a/spec/unit/parser/ast/leaf.rb b/spec/unit/parser/ast/leaf.rb index 12ec2711e..0c1c5864d 100755 --- a/spec/unit/parser/ast/leaf.rb +++ b/spec/unit/parser/ast/leaf.rb @@ -99,81 +99,102 @@ describe Puppet::Parser::AST::HashOrArrayAccess do @scope = stub 'scope' end - it "should evaluate the variable part if necessary" do - @scope.stubs(:lookupvar).with("a").returns(["b"]) + describe "when evaluating" do + it "should evaluate the variable part if necessary" do + @scope.stubs(:lookupvar).with("a").returns(["b"]) - variable = stub 'variable', :evaluate => "a" - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => variable, :key => 0 ) + variable = stub 'variable', :evaluate => "a" + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => variable, :key => 0 ) - variable.expects(:safeevaluate).with(@scope).returns("a") + variable.expects(:safeevaluate).with(@scope).returns("a") - access.evaluate(@scope).should == "b" - end + access.evaluate(@scope).should == "b" + end - it "should evaluate the access key part if necessary" do - @scope.stubs(:lookupvar).with("a").returns(["b"]) + it "should evaluate the access key part if necessary" do + @scope.stubs(:lookupvar).with("a").returns(["b"]) - index = stub 'index', :evaluate => 0 - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => index ) + index = stub 'index', :evaluate => 0 + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => index ) - index.expects(:safeevaluate).with(@scope).returns(0) + index.expects(:safeevaluate).with(@scope).returns(0) - access.evaluate(@scope).should == "b" - end + access.evaluate(@scope).should == "b" + end - it "should be able to return an array member" do - @scope.stubs(:lookupvar).with("a").returns(["val1", "val2", "val3"]) + it "should be able to return an array member" do + @scope.stubs(:lookupvar).with("a").returns(["val1", "val2", "val3"]) - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => 1 ) + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => 1 ) - access.evaluate(@scope).should == "val2" - end + access.evaluate(@scope).should == "val2" + end - it "should be able to return an hash value" do - @scope.stubs(:lookupvar).with("a").returns({ "key1" => "val1", "key2" => "val2", "key3" => "val3" }) + it "should be able to return an hash value" do + @scope.stubs(:lookupvar).with("a").returns({ "key1" => "val1", "key2" => "val2", "key3" => "val3" }) - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) - access.evaluate(@scope).should == "val2" - end + access.evaluate(@scope).should == "val2" + end - it "should raise an error if the variable lookup didn't return an hash or an array" do - @scope.stubs(:lookupvar).with("a").returns("I'm a string") + it "should raise an error if the variable lookup didn't return an hash or an array" do + @scope.stubs(:lookupvar).with("a").returns("I'm a string") - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) - lambda { access.evaluate(@scope) }.should raise_error - end + lambda { access.evaluate(@scope) }.should raise_error + end - it "should raise an error if the variable wasn't in the scope" do - @scope.stubs(:lookupvar).with("a").returns(nil) + it "should raise an error if the variable wasn't in the scope" do + @scope.stubs(:lookupvar).with("a").returns(nil) - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) - lambda { access.evaluate(@scope) }.should raise_error - end + lambda { access.evaluate(@scope) }.should raise_error + end - it "should return a correct string representation" do - access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) - access.to_s.should == '$a[key2]' - end + it "should return a correct string representation" do + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" ) + access.to_s.should == '$a[key2]' + end + + it "should work with recursive hash access" do + @scope.stubs(:lookupvar).with("a").returns({ "key" => { "subkey" => "b" }}) + + access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key") + access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => "subkey") + + access2.evaluate(@scope).should == 'b' + end - it "should work with recursive hash access" do - @scope.stubs(:lookupvar).with("a").returns({ "key" => { "subkey" => "b" }}) + it "should work with interleaved array and hash access" do + @scope.stubs(:lookupvar).with("a").returns({ "key" => [ "a" , "b" ]}) - access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key") - access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => "subkey") + access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key") + access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => 1) - access2.evaluate(@scope).should == 'b' + access2.evaluate(@scope).should == 'b' + end end - it "should work with interleaved array and hash access" do - @scope.stubs(:lookupvar).with("a").returns({ "key" => [ "a" , "b" ]}) + describe "when assigning" do + it "should add a new key and value" do + scope = Puppet::Parser::Scope.new + scope.setvar("a", { 'a' => 'b' }) + + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "b") + access.assign(scope, "c" ) - access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key") - access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => 1) + scope.lookupvar("a").should be_include("b") + end + + it "should raise an error when trying to overwrite an hash value" do + @scope.stubs(:lookupvar).with("a").returns({ "key" => [ "a" , "b" ]}) + access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key") - access2.evaluate(@scope).should == 'b' + lambda { access.assign(@scope, "test") }.should raise_error + end end end diff --git a/spec/unit/parser/ast/vardef.rb b/spec/unit/parser/ast/vardef.rb index 9730ceedb..a6863e75f 100755 --- a/spec/unit/parser/ast/vardef.rb +++ b/spec/unit/parser/ast/vardef.rb @@ -43,5 +43,18 @@ describe Puppet::Parser::AST::VarDef do vardef.evaluate(@scope) end + describe "when dealing with hash" do + it "should delegate to the HashOrArrayAccess assign" do + access = stub 'name' + access.stubs(:is_a?).with(Puppet::Parser::AST::HashOrArrayAccess).returns(true) + value = stub 'value', :safeevaluate => "1" + vardef = Puppet::Parser::AST::VarDef.new :name => access, :value => value, :file => nil, :line => nil + + access.expects(:assign).with(@scope, '1') + + vardef.evaluate(@scope) + end + end + end end |