summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrice Figureau <brice-puppet@daysofwonder.com>2009-07-28 19:42:24 +0200
committerJames Turnbull <james@lovedthanlost.net>2009-08-01 11:15:29 +1000
commit58a73b5c68485dc5d41a46936c31e5fad5f037b5 (patch)
treed8fa2e0b6429a1a1262bc19ad6d876b565500b42
parent3ebf148bf3d82d25e690aec6ec49975e0837e604 (diff)
downloadpuppet-58a73b5c68485dc5d41a46936c31e5fad5f037b5.tar.gz
puppet-58a73b5c68485dc5d41a46936c31e5fad5f037b5.tar.xz
puppet-58a73b5c68485dc5d41a46936c31e5fad5f037b5.zip
Make sure node are referenced by their names
This patch uses the unused AST::HostName as the only way to reference a node in the AST nodes array. The AST::HostName respect the hash properties of the underlying string, to keep the O(1) hash properties. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
-rw-r--r--lib/puppet/parser/ast/leaf.rb18
-rw-r--r--lib/puppet/parser/ast/node.rb5
-rw-r--r--lib/puppet/parser/grammar.ra10
-rw-r--r--lib/puppet/parser/loaded_code.rb13
-rw-r--r--lib/puppet/parser/parser.rb1129
-rw-r--r--lib/puppet/parser/parser_support.rb4
-rwxr-xr-xspec/unit/parser/ast/leaf.rb45
-rw-r--r--spec/unit/parser/loaded_code.rb73
-rwxr-xr-xspec/unit/parser/parser.rb90
-rw-r--r--test/lib/puppettest/support/collection.rb2
10 files changed, 792 insertions, 597 deletions
diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb
index 7743862d7..59bfc9e9d 100644
--- a/lib/puppet/parser/ast/leaf.rb
+++ b/lib/puppet/parser/ast/leaf.rb
@@ -90,11 +90,27 @@ class Puppet::Parser::AST
def initialize(hash)
super
- unless @value =~ %r{^[0-9a-zA-Z\-]+(\.[0-9a-zA-Z\-]+)*$}
+ @value = @value.to_s.downcase
+ if @value =~ /[^-\w.]/
raise Puppet::DevError,
"'%s' is not a valid hostname" % @value
end
end
+
+ def to_classname
+ return @value
+ end
+
+ # implementing eql? and hash so that when an HostName is stored
+ # in a hash it has the same hashing properties as the underlying value
+ def eql?(value)
+ value = value.value if value.is_a?(HostName)
+ return @value.eql?(value)
+ end
+
+ def hash
+ return @value.hash
+ end
end
# A simple variable. This object is only used during interpolation;
diff --git a/lib/puppet/parser/ast/node.rb b/lib/puppet/parser/ast/node.rb
index faa7fa19a..b2d404487 100644
--- a/lib/puppet/parser/ast/node.rb
+++ b/lib/puppet/parser/ast/node.rb
@@ -11,11 +11,6 @@ class Puppet::Parser::AST::Node < Puppet::Parser::AST::HostClass
def initialize(options)
@parentclass = nil
super
-
- # Do some validation on the node name
- if @name =~ /[^-\w.]/
- raise Puppet::ParseError, "Invalid node name %s" % @name
- end
end
def namespace
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 072f3515f..ed55d2150 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -684,11 +684,15 @@ classname: NAME { result = val[0][:value] }
# Multiple hostnames, as used for node names. These are all literal
# strings, not AST objects.
-hostnames: hostname
- | hostnames COMMA hostname {
+hostnames: nodename
+ | hostnames COMMA nodename {
result = val[0]
result = [result] unless result.is_a?(Array)
- result << val[2][:value]
+ result << val[2]
+}
+
+nodename: hostname {
+ result = ast AST::HostName, :value => val[0]
}
hostname: NAME { result = val[0][:value] }
diff --git a/lib/puppet/parser/loaded_code.rb b/lib/puppet/parser/loaded_code.rb
index 6c519613f..9200c3256 100644
--- a/lib/puppet/parser/loaded_code.rb
+++ b/lib/puppet/parser/loaded_code.rb
@@ -14,11 +14,11 @@ class Puppet::Parser::LoadedCode
end
def add_node(name, code)
- @nodes[munge_name(name)] = code
+ @nodes[check_name(name)] = code
end
def node(name)
- @nodes[munge_name(name)]
+ @nodes[check_name(name)]
end
def nodes?
@@ -88,4 +88,13 @@ class Puppet::Parser::LoadedCode
def munge_name(name)
name.to_s.downcase
end
+
+ # Check that the given (node) name is an HostName instance
+ # We're doing this so that hashing of node in the @nodes hash
+ # is consistent (see AST::HostName#hash and AST::HostName#eql?)
+ # and that the @nodes hash still keep its O(1) get/put properties.
+ def check_name(name)
+ name = Puppet::Parser::AST::HostName.new(:value => name) unless name.is_a?(Puppet::Parser::AST::HostName)
+ name
+ end
end
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index cedc7de89..dbe0be4b6 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..id0c32fac69d', 'grammar.ra', 797
+module_eval <<'..end grammar.ra modeval..id9c55934a79', 'grammar.ra', 801
# 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..id0c32fac69d
+..end grammar.ra modeval..id9c55934a79
##### racc 1.4.5 generates ###
@@ -215,581 +215,570 @@ racc_reduce_table = [
1, 128, :_reduce_none,
3, 128, :_reduce_167,
1, 130, :_reduce_168,
- 1, 130, :_reduce_169,
- 1, 130, :_reduce_170,
- 1, 130, :_reduce_171,
- 0, 65, :_reduce_172,
- 0, 131, :_reduce_173,
+ 1, 131, :_reduce_169,
+ 1, 131, :_reduce_170,
+ 1, 131, :_reduce_171,
+ 1, 131, :_reduce_172,
+ 0, 65, :_reduce_173,
+ 0, 132, :_reduce_174,
1, 126, :_reduce_none,
- 3, 126, :_reduce_175,
3, 126, :_reduce_176,
- 1, 132, :_reduce_none,
- 3, 132, :_reduce_178,
+ 3, 126, :_reduce_177,
+ 1, 133, :_reduce_none,
3, 133, :_reduce_179,
- 1, 133, :_reduce_180,
- 3, 133, :_reduce_181,
- 1, 133, :_reduce_182,
+ 3, 134, :_reduce_180,
+ 1, 134, :_reduce_181,
+ 3, 134, :_reduce_182,
+ 1, 134, :_reduce_183,
1, 129, :_reduce_none,
- 2, 129, :_reduce_184,
+ 2, 129, :_reduce_185,
1, 127, :_reduce_none,
- 2, 127, :_reduce_186,
- 1, 134, :_reduce_none,
- 1, 134, :_reduce_none,
- 1, 84, :_reduce_189,
- 3, 108, :_reduce_190,
- 4, 108, :_reduce_191,
- 2, 108, :_reduce_192,
+ 2, 127, :_reduce_187,
+ 1, 135, :_reduce_none,
+ 1, 135, :_reduce_none,
+ 1, 84, :_reduce_190,
+ 3, 108, :_reduce_191,
+ 4, 108, :_reduce_192,
+ 2, 108, :_reduce_193,
1, 115, :_reduce_none,
1, 115, :_reduce_none,
0, 94, :_reduce_none,
- 1, 94, :_reduce_196,
- 1, 117, :_reduce_197 ]
+ 1, 94, :_reduce_197,
+ 1, 117, :_reduce_198 ]
-racc_reduce_n = 198
+racc_reduce_n = 199
-racc_shift_n = 327
+racc_shift_n = 328
racc_action_table = [
- 75, 53, 56, 285, 185, 38, 39, 247, 88, 245,
- 51, 298, 89, 158, 142, 246, -145, 124, 150, 154,
- 71, 75, 53, 56, 297, 90, 38, 39, 243, 244,
- 136, 45, 38, 39, 259, 55, 58, 243, 244, 66,
- 40, 71, 121, 42, 52, 76, 192, 163, 61, 91,
- -151, 82, 45, 75, 53, 56, 55, 58, 45, 60,
- 66, 40, 163, 168, 42, 52, 76, 40, 205, 61,
- 42, 163, 82, 45, 75, 53, 56, -148, 168, 163,
- 60, 204, 45, 185, 45, 135, 36, 168, 55, 199,
- 45, 283, 66, 4, 71, 168, 136, 109, 275, 282,
- 262, 61, 53, 56, 36, 45, 75, 53, 56, 55,
- 58, 4, 60, 66, 36, 251, 36, 181, 52, 76,
- 254, 4, 61, 4, 8, 82, 161, 75, 53, 56,
- 158, 142, 161, 60, 215, 150, 154, 45, 208, 216,
- -145, 55, 58, -147, 239, 66, 268, 71, 208, 209,
- 52, 206, 251, 128, 61, 208, 209, 254, 45, 51,
- 53, 56, 55, 58, 248, 60, 66, 270, 243, 244,
- 136, 52, 76, 33, 34, 61, 150, 154, 82, 48,
- 75, 53, 56, 53, 56, -149, 60, 150, 154, -150,
- 45, 208, 309, -146, 55, 58, 256, 276, 66, 128,
- 71, -146, 49, 52, -148, 187, -148, 61, 88, -145,
- 185, 45, 75, 53, 56, 55, 58, 135, 60, 66,
- -163, -150, 278, -147, 52, 76, -149, 159, 61, 161,
- 130, 82, 60, 75, 53, 56, 284, 173, 174, 60,
- 128, 188, 194, 45, 296, 60, 194, 55, 58, 300,
- 103, 66, -146, 71, 187, 175, 52, 97, 176, 310,
- 61, 278, 312, 89, 45, 75, 53, 56, 55, 58,
- -147, 60, 66, -145, -148, -146, -150, 52, 76, 314,
- 95, 61, 182, -147, 82, 44, 75, 53, 56, 190,
- 320, -196, 60, 37, 184, 187, 45, 299, nil, nil,
- 55, 58, nil, nil, 66, nil, nil, nil, nil, 52,
- nil, nil, nil, 61, nil, nil, nil, 45, 75, 53,
- 56, 55, 58, nil, 60, 66, nil, nil, nil, nil,
- 52, nil, nil, nil, 61, nil, nil, nil, 71, 75,
- 53, 56, nil, nil, nil, 60, nil, nil, nil, 45,
- nil, nil, nil, 55, 58, nil, nil, 66, nil, nil,
- nil, nil, 52, 76, nil, nil, 61, nil, nil, 82,
- 45, 75, 53, 56, 55, 58, nil, 60, 66, nil,
- nil, nil, nil, 52, nil, nil, nil, 61, nil, nil,
- nil, 71, 75, 53, 56, nil, nil, nil, 60, nil,
- nil, nil, 45, nil, nil, nil, 55, 58, nil, nil,
- 66, nil, 71, nil, nil, 52, 76, nil, nil, 61,
- nil, nil, 82, 45, 75, 53, 56, 55, 58, nil,
- 60, 66, nil, nil, nil, nil, 52, 76, nil, nil,
- 61, nil, nil, 82, 71, 75, 53, 56, nil, nil,
- nil, 60, nil, nil, nil, 45, nil, nil, nil, 55,
- 58, nil, nil, 66, nil, 71, nil, nil, 52, 76,
- nil, nil, 61, nil, nil, 82, 45, 75, 53, 56,
- 55, 58, nil, 60, 66, nil, nil, nil, nil, 52,
- 76, nil, nil, 61, nil, nil, 82, 71, 75, 53,
- 56, nil, nil, nil, 60, nil, nil, nil, 45, nil,
- nil, nil, 55, 58, nil, nil, 66, 75, 53, 56,
- 139, 52, 76, nil, nil, 61, nil, nil, 82, 45,
- nil, nil, nil, 55, 111, nil, 60, 66, 75, 53,
- 56, nil, 109, nil, nil, nil, 61, nil, 45, 53,
- 56, nil, 55, 58, nil, nil, 66, 60, nil, nil,
- nil, 52, nil, nil, nil, 61, nil, nil, nil, 45,
- 75, 53, 56, 55, 58, nil, 60, 66, nil, 45,
- nil, nil, 52, 55, 199, nil, 61, 66, 75, 53,
- 56, nil, 109, nil, nil, nil, 61, 60, nil, nil,
- nil, 45, nil, nil, nil, 55, 58, 60, 71, 66,
- 75, 53, 56, nil, 52, nil, nil, nil, 61, 45,
- nil, nil, nil, 55, 58, nil, nil, 66, nil, 60,
- 71, nil, 52, 76, nil, nil, 61, nil, nil, 82,
- nil, 45, 75, 53, 56, 55, 58, 60, nil, 66,
- nil, nil, nil, nil, 52, 76, nil, nil, 61, nil,
- nil, 82, nil, 75, 53, 56, nil, nil, nil, 60,
- nil, nil, nil, 45, nil, nil, nil, 55, 58, nil,
- nil, 66, nil, 71, nil, nil, 52, nil, nil, nil,
- 61, nil, nil, nil, 45, 75, 53, 56, 55, 58,
- nil, 60, 66, nil, nil, nil, nil, 52, 76, nil,
- nil, 61, nil, nil, 82, 71, 75, 53, 56, nil,
- nil, nil, 60, nil, nil, nil, 45, nil, nil, nil,
- 55, 58, nil, nil, 66, nil, 71, nil, nil, 52,
- 76, nil, nil, 61, nil, nil, 82, 45, 75, 53,
- 56, 55, 58, nil, 60, 66, nil, nil, nil, nil,
- 52, 76, nil, nil, 61, nil, nil, 82, 71, 75,
- 53, 56, nil, nil, nil, 60, nil, nil, nil, 45,
- nil, nil, nil, 55, 58, nil, nil, 66, nil, 71,
- nil, nil, 52, 76, nil, nil, 61, nil, nil, 82,
- 45, 75, 53, 56, 55, 58, nil, 60, 66, nil,
- nil, nil, nil, 52, 76, nil, nil, 61, nil, nil,
- 82, nil, 75, 53, 56, nil, nil, nil, 60, nil,
- nil, nil, 45, nil, nil, nil, 55, 58, nil, nil,
- 66, nil, 71, nil, nil, 52, nil, nil, nil, 61,
- nil, nil, nil, 45, 53, 56, nil, 55, 58, nil,
- 60, 66, nil, nil, nil, nil, 52, 76, 53, 56,
- 61, nil, nil, 82, 273, 53, 56, nil, nil, nil,
- nil, 60, nil, nil, 45, nil, nil, nil, 55, 58,
- nil, nil, 66, 53, 56, 131, 49, 52, 45, nil,
- nil, 61, 55, 199, nil, 45, 66, 53, 56, 55,
- 58, 109, 60, 66, nil, 61, nil, 49, 52, nil,
- nil, nil, 61, 45, nil, nil, 60, 55, 199, 53,
- 56, 66, nil, 60, nil, nil, 109, 45, nil, nil,
- 61, 55, 199, 53, 56, 66, nil, nil, nil, nil,
- 109, 60, nil, nil, 61, nil, nil, nil, nil, 45,
- nil, nil, nil, 55, 199, 60, nil, 66, 53, 56,
- 53, 56, 109, 45, nil, nil, 61, 55, 199, nil,
- nil, 66, nil, nil, nil, nil, 109, 60, 212, nil,
- 61, nil, nil, nil, nil, 53, 56, nil, 45, 280,
- 45, 60, 55, 58, 55, 58, 66, nil, 66, nil,
- 49, 52, 49, 52, nil, 61, nil, 61, nil, nil,
- 53, 56, nil, 201, nil, 45, 60, nil, 60, 55,
- 199, nil, nil, 66, nil, nil, nil, nil, 109, nil,
- nil, nil, 61, nil, nil, nil, nil, nil, nil, nil,
- 45, 155, nil, 60, 55, 199, nil, nil, 66, nil,
- 148, 153, nil, 109, nil, nil, nil, 61, nil, 144,
- 146, 149, 152, 148, 153, nil, nil, nil, 60, nil,
- nil, 214, 144, 146, 149, 152, nil, nil, 156, 157,
- 158, 142, nil, 147, 151, 150, 154, 156, 157, 158,
- 142, 143, 145, nil, 150, 154, 147, 151, nil, nil,
- 156, 157, 158, 142, 143, 145, nil, 150, 154, 148,
- 153, nil, nil, nil, nil, nil, nil, nil, 144, 146,
- 149, 152, 148, 153, nil, nil, nil, nil, nil, nil,
- nil, 144, 146, 149, 152, nil, nil, 156, 157, 158,
- 142, nil, 147, 151, 150, 154, 156, 157, 158, 142,
- 143, 145, nil, 150, 154, nil, nil, nil, nil, 156,
- 157, 158, 142, 143, 145, nil, 150, 154, 148, 153,
- nil, nil, nil, nil, nil, nil, nil, 144, 146, 149,
- 152, 148, 153, nil, nil, nil, nil, nil, nil, nil,
- 144, 146, 149, 152, nil, 153, nil, nil, nil, nil,
- nil, nil, 151, 144, nil, 156, 157, 158, 142, 143,
- 145, nil, 150, 154, 147, 151, 153, nil, 156, 157,
- 158, 142, 143, 145, 144, 150, 154, nil, nil, 153,
- nil, 156, 157, 158, 142, 143, 145, 144, 150, 154,
- 153, nil, 156, 157, 158, 142, 143, 145, 144, 150,
- 154, nil, 156, 157, 158, 142, 143, 145, nil, 150,
- 154, nil, nil, nil, 318, 156, 157, 158, 142, 143,
- 145, nil, 150, 154, nil, nil, 156, 157, 158, 142,
- 143, 145, nil, 150, 154, 18, 265, 23, 26, nil,
+ 76, 54, 57, 286, 186, 38, 39, 284, 89, 246,
+ 52, 186, 90, 159, 143, 283, 98, 125, 151, 155,
+ 72, 76, 54, 57, 137, 91, 38, 39, 244, 245,
+ 137, 46, 38, 39, 260, 56, 59, 244, 245, 67,
+ 40, 72, 122, 42, 53, 77, 193, 164, 62, 92,
+ -151, 83, 46, 76, 54, 57, 56, 59, 46, 61,
+ 67, 40, 164, 169, 42, 53, 77, 40, 206, 62,
+ 42, 164, 83, 46, 76, 54, 57, -148, 169, 164,
+ 61, 205, 46, 136, 46, 300, 36, 169, 56, 200,
+ 46, 248, 67, 4, 72, 169, 276, 110, 299, 247,
+ 263, 62, 151, 155, 36, 46, 76, 54, 57, 56,
+ 59, 4, 61, 67, 36, 252, 36, 182, 53, 77,
+ 256, 4, 62, 4, 8, 83, 162, 76, 54, 57,
+ 159, 143, 162, 61, 249, 151, 155, 46, 244, 245,
+ -145, 56, 59, -147, 216, 67, 269, 72, 209, 217,
+ 53, 207, 252, 129, 62, 209, 210, 256, 46, 52,
+ 54, 57, 56, 59, 240, 61, 67, 271, 209, 210,
+ 137, 53, 77, 209, 310, 62, 54, 57, 83, 49,
+ 76, 54, 57, 54, 57, -149, 61, 33, 34, -150,
+ 46, 151, 155, -146, 56, 59, 176, 277, 67, 257,
+ 72, 177, 50, 53, 90, 129, -148, 62, 89, -145,
+ 61, 46, 76, 54, 57, 56, 59, 136, 61, 67,
+ -163, 183, 279, -147, 53, 77, -148, 175, 62, 188,
+ 131, 83, -147, 76, 54, 57, 285, 185, 186, 61,
+ 129, 189, 195, 46, 297, 298, 195, 56, 59, 301,
+ 104, 67, -146, 72, 188, 188, 53, -146, 61, 311,
+ 62, 279, 313, -150, 46, 76, 54, 57, 56, 59,
+ -147, 61, 67, -145, -148, -146, -150, 53, 77, 315,
+ 96, 62, -149, 160, 83, 45, 76, 54, 57, 191,
+ 321, -197, 61, 37, 162, 174, 46, -145, nil, nil,
+ 56, 59, nil, nil, 67, nil, nil, nil, nil, 53,
+ nil, nil, nil, 62, nil, nil, nil, 46, 76, 54,
+ 57, 56, 59, nil, 61, 67, nil, nil, nil, nil,
+ 53, nil, nil, nil, 62, nil, nil, nil, 72, 76,
+ 54, 57, nil, nil, nil, 61, nil, nil, nil, 46,
+ nil, nil, nil, 56, 59, nil, nil, 67, nil, nil,
+ nil, nil, 53, 77, nil, nil, 62, nil, nil, 83,
+ 46, 76, 54, 57, 56, 59, nil, 61, 67, nil,
+ nil, nil, nil, 53, nil, nil, nil, 62, nil, nil,
+ nil, 72, 76, 54, 57, nil, nil, nil, 61, nil,
+ nil, nil, 46, nil, nil, nil, 56, 59, nil, nil,
+ 67, nil, 72, nil, nil, 53, 77, nil, nil, 62,
+ nil, nil, 83, 46, 76, 54, 57, 56, 59, nil,
+ 61, 67, nil, nil, nil, nil, 53, 77, nil, nil,
+ 62, nil, nil, 83, 72, 76, 54, 57, nil, nil,
+ nil, 61, nil, nil, nil, 46, nil, nil, nil, 56,
+ 59, nil, nil, 67, nil, 72, nil, nil, 53, 77,
+ nil, nil, 62, nil, nil, 83, 46, 76, 54, 57,
+ 56, 59, nil, 61, 67, nil, nil, nil, nil, 53,
+ 77, nil, nil, 62, nil, nil, 83, 72, 76, 54,
+ 57, nil, nil, nil, 61, nil, nil, nil, 46, nil,
+ nil, nil, 56, 59, nil, nil, 67, 76, 54, 57,
+ 140, 53, 77, nil, nil, 62, nil, nil, 83, 46,
+ nil, nil, nil, 56, 112, nil, 61, 67, 76, 54,
+ 57, nil, 110, nil, nil, nil, 62, nil, 46, 54,
+ 57, nil, 56, 59, nil, nil, 67, 61, nil, nil,
+ nil, 53, nil, nil, nil, 62, nil, nil, nil, 46,
+ 76, 54, 57, 56, 59, nil, 61, 67, nil, 46,
+ nil, nil, 53, 56, 200, nil, 62, 67, 76, 54,
+ 57, nil, 110, nil, nil, nil, 62, 61, nil, nil,
+ nil, 46, nil, nil, nil, 56, 59, 61, 72, 67,
+ 76, 54, 57, nil, 53, nil, nil, nil, 62, 46,
+ nil, nil, nil, 56, 59, nil, nil, 67, nil, 61,
+ 72, nil, 53, 77, nil, nil, 62, nil, nil, 83,
+ nil, 46, 76, 54, 57, 56, 59, 61, nil, 67,
+ nil, nil, nil, nil, 53, 77, nil, nil, 62, nil,
+ nil, 83, nil, 76, 54, 57, nil, nil, nil, 61,
+ nil, nil, nil, 46, nil, nil, nil, 56, 59, nil,
+ nil, 67, nil, 72, nil, nil, 53, nil, nil, nil,
+ 62, nil, nil, nil, 46, 76, 54, 57, 56, 59,
+ nil, 61, 67, nil, nil, nil, nil, 53, 77, nil,
+ nil, 62, nil, nil, 83, 72, 76, 54, 57, nil,
+ nil, nil, 61, nil, nil, nil, 46, nil, nil, nil,
+ 56, 59, nil, nil, 67, nil, 72, nil, nil, 53,
+ 77, nil, nil, 62, nil, nil, 83, 46, 76, 54,
+ 57, 56, 59, nil, 61, 67, nil, nil, nil, nil,
+ 53, 77, nil, nil, 62, nil, nil, 83, 72, 76,
+ 54, 57, nil, nil, nil, 61, nil, nil, nil, 46,
+ nil, nil, nil, 56, 59, nil, nil, 67, nil, 72,
+ nil, nil, 53, 77, nil, nil, 62, nil, nil, 83,
+ 46, 76, 54, 57, 56, 59, nil, 61, 67, nil,
+ nil, nil, nil, 53, 77, nil, nil, 62, nil, nil,
+ 83, nil, 76, 54, 57, nil, nil, nil, 61, nil,
+ nil, nil, 46, nil, nil, nil, 56, 59, nil, nil,
+ 67, nil, 72, nil, nil, 53, nil, nil, nil, 62,
+ nil, nil, nil, 46, 54, 57, nil, 56, 59, nil,
+ 61, 67, nil, nil, nil, nil, 53, 77, 54, 57,
+ 62, nil, nil, 83, 274, 54, 57, nil, nil, nil,
+ nil, 61, nil, nil, 46, nil, nil, nil, 56, 59,
+ nil, nil, 67, 54, 57, 132, 50, 53, 46, nil,
+ nil, 62, 56, 200, nil, 46, 67, 54, 57, 56,
+ 59, 110, 61, 67, nil, 62, nil, 50, 53, nil,
+ nil, nil, 62, 46, nil, nil, 61, 56, 200, 54,
+ 57, 67, nil, 61, nil, nil, 110, 46, nil, nil,
+ 62, 56, 200, 54, 57, 67, nil, nil, nil, nil,
+ 110, 61, nil, nil, 62, nil, nil, nil, nil, 46,
+ nil, nil, nil, 56, 200, 61, nil, 67, 54, 57,
+ 54, 57, 110, 46, nil, nil, 62, 56, 200, nil,
+ nil, 67, nil, nil, nil, nil, 110, 61, 213, nil,
+ 62, nil, nil, nil, nil, 54, 57, nil, 46, 281,
+ 46, 61, 56, 59, 56, 59, 67, nil, 67, nil,
+ 50, 53, 50, 53, nil, 62, nil, 62, nil, nil,
+ 54, 57, nil, 202, nil, 46, 61, nil, 61, 56,
+ 200, nil, nil, 67, nil, nil, nil, nil, 110, nil,
+ nil, nil, 62, nil, nil, nil, nil, nil, nil, nil,
+ 46, 156, nil, 61, 56, 200, nil, nil, 67, nil,
+ 149, 154, nil, 110, nil, nil, nil, 62, nil, 145,
+ 147, 150, 153, 149, 154, nil, nil, nil, 61, nil,
+ nil, 215, 145, 147, 150, 153, nil, nil, 157, 158,
+ 159, 143, nil, 148, 152, 151, 155, 157, 158, 159,
+ 143, 144, 146, nil, 151, 155, 148, 152, nil, nil,
+ 157, 158, 159, 143, 144, 146, nil, 151, 155, 149,
+ 154, nil, nil, nil, nil, nil, nil, nil, 145, 147,
+ 150, 153, 149, 154, nil, nil, nil, nil, nil, nil,
+ nil, 145, 147, 150, 153, nil, nil, 157, 158, 159,
+ 143, nil, 148, 152, 151, 155, 157, 158, 159, 143,
+ 144, 146, nil, 151, 155, nil, nil, nil, nil, 157,
+ 158, 159, 143, 144, 146, nil, 151, 155, 149, 154,
+ nil, nil, nil, nil, nil, nil, nil, 145, 147, 150,
+ 153, 149, 154, nil, nil, nil, nil, nil, nil, nil,
+ 145, 147, 150, 153, nil, 154, nil, nil, nil, nil,
+ nil, nil, 152, 145, nil, 157, 158, 159, 143, 144,
+ 146, nil, 151, 155, 148, 152, 154, nil, 157, 158,
+ 159, 143, 144, 146, 145, 151, 155, nil, nil, 154,
+ nil, 157, 158, 159, 143, 144, 146, 145, 151, 155,
+ 154, nil, 157, 158, 159, 143, 144, 146, 145, 151,
+ 155, nil, 157, 158, 159, 143, 144, 146, nil, 151,
+ 155, nil, nil, nil, 319, 157, 158, 159, 143, 144,
+ 146, nil, 151, 155, nil, nil, 157, 158, 159, 143,
+ 144, 146, nil, 151, 155, 18, 266, 23, 26, nil,
1, 5, nil, 12, nil, 16, nil, 20, nil, 27,
- nil, nil, 4, 8, nil, 303, nil, 18, nil, 23,
+ nil, nil, 4, 8, nil, 304, nil, 18, nil, 23,
26, nil, 1, 5, nil, 12, nil, 16, nil, 20,
- nil, 27, nil, nil, 4, 8, 18, 305, 23, 26,
+ nil, 27, nil, nil, 4, 8, 18, 306, 23, 26,
nil, 1, 5, nil, 12, nil, 16, nil, 20, nil,
- 27, nil, nil, 4, 8, nil, 279, nil, 18, nil,
+ 27, nil, nil, 4, 8, nil, 280, nil, 18, nil,
23, 26, nil, 1, 5, nil, 12, nil, 16, nil,
- 20, nil, 27, nil, nil, 4, 8, 18, 230, 23,
+ 20, nil, 27, nil, nil, 4, 8, 18, 231, 23,
26, nil, 1, 5, nil, 12, nil, 16, nil, 20,
- nil, 27, nil, nil, 4, 8, nil, 321, nil, 18,
+ nil, 27, nil, nil, 4, 8, nil, 322, nil, 18,
nil, 23, 26, nil, 1, 5, nil, 12, nil, 16,
- nil, 20, nil, 27, nil, nil, 4, 8, 18, 257,
+ nil, 20, nil, 27, nil, nil, 4, 8, 18, 258,
23, 26, nil, 1, 5, nil, 12, nil, 16, nil,
- 20, nil, 27, nil, nil, 4, 8, nil, 323, nil,
+ 20, nil, 27, nil, nil, 4, 8, nil, 324, nil,
18, nil, 23, 26, nil, 1, 5, nil, 12, nil,
16, nil, 20, nil, 27, nil, nil, 4, 8, 18,
- 325, 23, 26, nil, 1, 5, nil, 12, nil, 16,
- nil, 20, nil, 27, nil, nil, 4, 8, nil, 301,
+ 326, 23, 26, nil, 1, 5, nil, 12, nil, 16,
+ nil, 20, nil, 27, nil, nil, 4, 8, nil, 302,
nil, 18, nil, 23, 26, nil, 1, 5, nil, 12,
nil, 16, nil, 20, nil, 27, nil, nil, 4, 8,
- 18, 326, 23, 26, nil, 1, 5, nil, 12, nil,
+ 18, 327, 23, 26, nil, 1, 5, nil, 12, nil,
16, nil, 20, nil, 27, nil, nil, 4, 8, nil,
nil, nil, 18, nil, 23, 26, nil, 1, 5, nil,
12, nil, 16, nil, 20, nil, 27, nil, nil, 4,
8, 18, nil, 23, 26, nil, 1, 5, nil, 12,
nil, 16, nil, 20, nil, 27, nil, nil, 4, 8,
18, nil, 23, 26, nil, 1, 5, nil, 12, nil,
- 16, nil, 20, nil, 27, nil, nil, 4, 8, 156,
- 157, 158, 142, 143, 145, nil, 150, 154 ]
+ 16, nil, 20, nil, 27, nil, nil, 4, 8, 157,
+ 158, 159, 143, 144, 146, nil, 151, 155 ]
racc_action_check = [
- 34, 34, 34, 241, 128, 121, 121, 167, 21, 164,
- 58, 252, 21, 233, 233, 167, 113, 41, 233, 233,
- 34, 158, 158, 158, 252, 21, 12, 12, 241, 241,
- 58, 34, 124, 124, 183, 34, 34, 164, 164, 34,
- 121, 158, 41, 121, 34, 34, 128, 90, 34, 21,
- 80, 34, 158, 184, 184, 184, 158, 158, 90, 34,
- 158, 12, 163, 90, 12, 158, 158, 124, 132, 158,
- 124, 91, 158, 163, 142, 142, 142, 79, 163, 242,
- 158, 132, 91, 111, 184, 213, 5, 91, 184, 184,
- 242, 238, 184, 5, 142, 242, 111, 184, 213, 238,
- 186, 184, 23, 23, 26, 142, 185, 185, 185, 142,
- 142, 26, 184, 142, 103, 176, 28, 103, 142, 142,
- 176, 103, 142, 28, 28, 142, 187, 143, 143, 143,
- 232, 232, 188, 142, 138, 232, 232, 185, 138, 138,
- 78, 185, 185, 74, 160, 185, 193, 143, 160, 160,
- 185, 134, 298, 194, 185, 134, 134, 298, 143, 16,
- 16, 16, 143, 143, 172, 185, 143, 195, 172, 172,
- 199, 143, 143, 1, 1, 143, 217, 217, 143, 16,
- 18, 18, 18, 174, 174, 70, 143, 234, 234, 69,
- 16, 272, 272, 68, 16, 16, 177, 216, 16, 173,
- 18, 81, 16, 16, 115, 162, 65, 16, 64, 62,
- 161, 18, 20, 20, 20, 18, 18, 54, 16, 18,
- 52, 84, 230, 50, 18, 18, 86, 87, 18, 89,
- 46, 18, 154, 144, 144, 144, 240, 92, 94, 18,
- 44, 116, 249, 20, 251, 150, 129, 20, 20, 255,
- 35, 20, 117, 144, 264, 95, 20, 27, 96, 278,
- 20, 279, 282, 99, 144, 299, 299, 299, 144, 144,
- 288, 20, 144, 290, 291, 292, 293, 144, 144, 295,
- 25, 144, 104, 108, 144, 15, 296, 296, 296, 122,
- 308, 309, 144, 9, 110, 112, 299, 254, nil, nil,
- 299, 299, nil, nil, 299, nil, nil, nil, nil, 299,
- nil, nil, nil, 299, nil, nil, nil, 296, 157, 157,
- 157, 296, 296, nil, 299, 296, nil, nil, nil, nil,
- 296, nil, nil, nil, 296, nil, nil, nil, 157, 270,
- 270, 270, nil, nil, nil, 296, nil, nil, nil, 157,
+ 34, 34, 34, 242, 129, 122, 122, 239, 21, 165,
+ 59, 112, 21, 234, 234, 239, 27, 41, 234, 234,
+ 34, 159, 159, 159, 112, 21, 12, 12, 242, 242,
+ 59, 34, 125, 125, 184, 34, 34, 165, 165, 34,
+ 122, 159, 41, 122, 34, 34, 129, 91, 34, 21,
+ 81, 34, 159, 185, 185, 185, 159, 159, 91, 34,
+ 159, 12, 164, 91, 12, 159, 159, 125, 133, 159,
+ 125, 243, 159, 164, 143, 143, 143, 80, 164, 92,
+ 159, 133, 243, 214, 185, 254, 26, 243, 185, 185,
+ 92, 168, 185, 26, 143, 92, 214, 185, 254, 168,
+ 187, 185, 235, 235, 5, 143, 186, 186, 186, 143,
+ 143, 5, 185, 143, 104, 300, 28, 104, 143, 143,
+ 300, 104, 143, 28, 28, 143, 188, 144, 144, 144,
+ 233, 233, 189, 143, 173, 233, 233, 186, 173, 173,
+ 79, 186, 186, 75, 139, 186, 194, 144, 139, 139,
+ 186, 135, 177, 195, 186, 135, 135, 177, 144, 16,
+ 16, 16, 144, 144, 161, 186, 144, 196, 161, 161,
+ 200, 144, 144, 273, 273, 144, 23, 23, 144, 16,
+ 18, 18, 18, 175, 175, 71, 144, 1, 1, 70,
+ 16, 218, 218, 69, 16, 16, 96, 217, 16, 178,
+ 18, 97, 16, 16, 100, 174, 66, 16, 65, 63,
+ 151, 18, 20, 20, 20, 18, 18, 55, 16, 18,
+ 53, 105, 231, 51, 18, 18, 116, 95, 18, 163,
+ 47, 18, 109, 145, 145, 145, 241, 111, 162, 18,
+ 45, 117, 250, 20, 252, 253, 130, 20, 20, 256,
+ 35, 20, 118, 145, 265, 113, 20, 82, 155, 279,
+ 20, 280, 283, 85, 145, 301, 301, 301, 145, 145,
+ 289, 20, 145, 291, 292, 293, 294, 145, 145, 296,
+ 25, 145, 87, 88, 145, 15, 297, 297, 297, 123,
+ 309, 310, 145, 9, 90, 93, 301, 114, nil, nil,
+ 301, 301, nil, nil, 301, nil, nil, nil, nil, 301,
+ nil, nil, nil, 301, nil, nil, nil, 297, 158, 158,
+ 158, 297, 297, nil, 301, 297, nil, nil, nil, nil,
+ 297, nil, nil, nil, 297, nil, nil, nil, 158, 271,
+ 271, 271, nil, nil, nil, 297, nil, nil, nil, 158,
+ nil, nil, nil, 158, 158, nil, nil, 158, nil, nil,
+ nil, nil, 158, 158, nil, nil, 158, nil, nil, 158,
+ 271, 146, 146, 146, 271, 271, nil, 158, 271, nil,
+ nil, nil, nil, 271, nil, nil, nil, 271, nil, nil,
+ nil, 146, 147, 147, 147, nil, nil, nil, 271, nil,
+ nil, nil, 146, nil, nil, nil, 146, 146, nil, nil,
+ 146, nil, 147, nil, nil, 146, 146, nil, nil, 146,
+ nil, nil, 146, 147, 33, 33, 33, 147, 147, nil,
+ 146, 147, nil, nil, nil, nil, 147, 147, nil, nil,
+ 147, nil, nil, 147, 33, 77, 77, 77, nil, nil,
+ nil, 147, nil, nil, nil, 33, nil, nil, nil, 33,
+ 33, nil, nil, 33, nil, 77, nil, nil, 33, 33,
+ nil, nil, 33, nil, nil, 33, 77, 148, 148, 148,
+ 77, 77, nil, 33, 77, nil, nil, nil, nil, 77,
+ 77, nil, nil, 77, nil, nil, 77, 148, 37, 37,
+ 37, nil, nil, nil, 77, nil, nil, nil, 148, nil,
+ nil, nil, 148, 148, nil, nil, 148, 76, 76, 76,
+ 76, 148, 148, nil, nil, 148, nil, nil, 148, 37,
+ nil, nil, nil, 37, 37, nil, 148, 37, 193, 193,
+ 193, nil, 37, nil, nil, nil, 37, nil, 76, 202,
+ 202, nil, 76, 76, nil, nil, 76, 37, nil, nil,
+ nil, 76, nil, nil, nil, 76, nil, nil, nil, 193,
+ 208, 208, 208, 193, 193, nil, 76, 193, nil, 202,
+ nil, nil, 193, 202, 202, nil, 193, 202, 72, 72,
+ 72, nil, 202, nil, nil, nil, 202, 193, nil, nil,
+ nil, 208, nil, nil, nil, 208, 208, 202, 72, 208,
+ 149, 149, 149, nil, 208, nil, nil, nil, 208, 72,
+ nil, nil, nil, 72, 72, nil, nil, 72, nil, 208,
+ 149, nil, 72, 72, nil, nil, 72, nil, nil, 72,
+ nil, 149, 52, 52, 52, 149, 149, 72, nil, 149,
+ nil, nil, nil, nil, 149, 149, nil, nil, 149, nil,
+ nil, 149, nil, 150, 150, 150, nil, nil, nil, 149,
+ nil, nil, nil, 52, nil, nil, nil, 52, 52, nil,
+ nil, 52, nil, 150, nil, nil, 52, nil, nil, nil,
+ 52, nil, nil, nil, 150, 152, 152, 152, 150, 150,
+ nil, 52, 150, nil, nil, nil, nil, 150, 150, nil,
+ nil, 150, nil, nil, 150, 152, 153, 153, 153, nil,
+ nil, nil, 150, nil, nil, nil, 152, nil, nil, nil,
+ 152, 152, nil, nil, 152, nil, 153, nil, nil, 152,
+ 152, nil, nil, 152, nil, nil, 152, 153, 154, 154,
+ 154, 153, 153, nil, 152, 153, nil, nil, nil, nil,
+ 153, 153, nil, nil, 153, nil, nil, 153, 154, 157,
+ 157, 157, nil, nil, nil, 153, nil, nil, nil, 154,
+ nil, nil, nil, 154, 154, nil, nil, 154, nil, 157,
+ nil, nil, 154, 154, nil, nil, 154, nil, nil, 154,
+ 157, 89, 89, 89, 157, 157, nil, 154, 157, nil,
nil, nil, nil, 157, 157, nil, nil, 157, nil, nil,
- nil, nil, 157, 157, nil, nil, 157, nil, nil, 157,
- 270, 145, 145, 145, 270, 270, nil, 157, 270, nil,
- nil, nil, nil, 270, nil, nil, nil, 270, nil, nil,
- nil, 145, 146, 146, 146, nil, nil, nil, 270, nil,
- nil, nil, 145, nil, nil, nil, 145, 145, nil, nil,
- 145, nil, 146, nil, nil, 145, 145, nil, nil, 145,
- nil, nil, 145, 146, 33, 33, 33, 146, 146, nil,
- 145, 146, nil, nil, nil, nil, 146, 146, nil, nil,
- 146, nil, nil, 146, 33, 76, 76, 76, nil, nil,
- nil, 146, nil, nil, nil, 33, nil, nil, nil, 33,
- 33, nil, nil, 33, nil, 76, nil, nil, 33, 33,
- nil, nil, 33, nil, nil, 33, 76, 147, 147, 147,
- 76, 76, nil, 33, 76, nil, nil, nil, nil, 76,
- 76, nil, nil, 76, nil, nil, 76, 147, 37, 37,
- 37, nil, nil, nil, 76, nil, nil, nil, 147, nil,
- nil, nil, 147, 147, nil, nil, 147, 75, 75, 75,
- 75, 147, 147, nil, nil, 147, nil, nil, 147, 37,
- nil, nil, nil, 37, 37, nil, 147, 37, 192, 192,
- 192, nil, 37, nil, nil, nil, 37, nil, 75, 201,
- 201, nil, 75, 75, nil, nil, 75, 37, nil, nil,
- nil, 75, nil, nil, nil, 75, nil, nil, nil, 192,
- 207, 207, 207, 192, 192, nil, 75, 192, nil, 201,
- nil, nil, 192, 201, 201, nil, 192, 201, 71, 71,
- 71, nil, 201, nil, nil, nil, 201, 192, nil, nil,
- nil, 207, nil, nil, nil, 207, 207, 201, 71, 207,
- 148, 148, 148, nil, 207, nil, nil, nil, 207, 71,
- nil, nil, nil, 71, 71, nil, nil, 71, nil, 207,
- 148, nil, 71, 71, nil, nil, 71, nil, nil, 71,
- nil, 148, 51, 51, 51, 148, 148, 71, nil, 148,
- nil, nil, nil, nil, 148, 148, nil, nil, 148, nil,
- nil, 148, nil, 149, 149, 149, nil, nil, nil, 148,
- nil, nil, nil, 51, nil, nil, nil, 51, 51, nil,
- nil, 51, nil, 149, nil, nil, 51, nil, nil, nil,
- 51, nil, nil, nil, 149, 151, 151, 151, 149, 149,
- nil, 51, 149, nil, nil, nil, nil, 149, 149, nil,
- nil, 149, nil, nil, 149, 151, 152, 152, 152, nil,
- nil, nil, 149, 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, 153, 153,
- 153, 152, 152, nil, 151, 152, nil, nil, nil, nil,
- 152, 152, nil, nil, 152, nil, nil, 152, 153, 156,
- 156, 156, nil, nil, nil, 152, nil, nil, nil, 153,
- nil, nil, nil, 153, 153, nil, nil, 153, nil, 156,
- nil, nil, 153, 153, nil, nil, 153, nil, nil, 153,
- 156, 88, 88, 88, 156, 156, nil, 153, 156, nil,
- nil, nil, nil, 156, 156, nil, nil, 156, nil, nil,
- 156, nil, 82, 82, 82, nil, nil, nil, 156, nil,
- nil, nil, 88, nil, nil, nil, 88, 88, nil, nil,
- 88, nil, 82, nil, nil, 88, nil, nil, nil, 88,
- nil, nil, nil, 82, 205, 205, nil, 82, 82, nil,
- 88, 82, nil, nil, nil, nil, 82, 82, 246, 246,
- 82, nil, nil, 82, 205, 48, 48, nil, nil, nil,
- nil, 82, nil, nil, 205, nil, nil, nil, 205, 205,
- nil, nil, 205, 247, 247, 48, 205, 205, 246, nil,
- nil, 205, 246, 246, nil, 48, 246, 159, 159, 48,
- 48, 246, 205, 48, nil, 246, nil, 48, 48, nil,
- nil, nil, 48, 247, nil, nil, 246, 247, 247, 283,
- 283, 247, nil, 48, nil, nil, 247, 159, nil, nil,
- 247, 159, 159, 307, 307, 159, nil, nil, nil, nil,
- 159, 247, nil, nil, 159, nil, nil, nil, nil, 283,
- nil, nil, nil, 283, 283, 159, nil, 283, 136, 136,
- 135, 135, 283, 307, nil, nil, 283, 307, 307, nil,
- nil, 307, nil, nil, nil, nil, 307, 283, 136, nil,
- 307, nil, nil, nil, nil, 236, 236, nil, 136, 236,
- 135, 307, 136, 136, 135, 135, 136, nil, 135, nil,
- 136, 136, 135, 135, nil, 136, nil, 135, nil, nil,
- 130, 130, nil, 130, nil, 236, 136, nil, 135, 236,
- 236, nil, nil, 236, nil, nil, nil, nil, 236, nil,
- nil, nil, 236, nil, nil, nil, nil, nil, nil, nil,
- 130, 85, nil, 236, 130, 130, nil, nil, 130, nil,
- 85, 85, nil, 130, nil, nil, nil, 130, nil, 85,
- 85, 85, 85, 137, 137, nil, nil, nil, 130, nil,
- nil, 137, 137, 137, 137, 137, nil, nil, 218, 218,
- 218, 218, nil, 85, 85, 218, 218, 85, 85, 85,
- 85, 85, 85, nil, 85, 85, 137, 137, nil, nil,
- 137, 137, 137, 137, 137, 137, nil, 137, 137, 102,
- 102, nil, nil, nil, nil, nil, nil, nil, 102, 102,
- 102, 102, 226, 226, nil, nil, nil, nil, nil, nil,
- nil, 226, 226, 226, 226, nil, nil, 220, 220, 220,
- 220, nil, 102, 102, 220, 220, 102, 102, 102, 102,
- 102, 102, nil, 102, 102, nil, nil, nil, nil, 226,
- 226, 226, 226, 226, 226, nil, 226, 226, 222, 222,
- nil, nil, nil, nil, nil, nil, nil, 222, 222, 222,
- 222, 101, 101, nil, nil, nil, nil, nil, nil, nil,
- 101, 101, 101, 101, nil, 223, nil, nil, nil, nil,
- nil, nil, 222, 223, nil, 222, 222, 222, 222, 222,
- 222, nil, 222, 222, 101, 101, 224, nil, 101, 101,
- 101, 101, 101, 101, 224, 101, 101, nil, nil, 221,
- nil, 223, 223, 223, 223, 223, 223, 221, 223, 223,
- 227, nil, 219, 219, 219, 219, 219, 219, 227, 219,
- 219, nil, 224, 224, 224, 224, 224, 224, nil, 224,
- 224, nil, nil, nil, 302, 221, 221, 221, 221, 221,
- 221, nil, 221, 221, nil, nil, 227, 227, 227, 227,
- 227, 227, nil, 227, 227, 302, 190, 302, 302, nil,
- 302, 302, nil, 302, nil, 302, nil, 302, nil, 302,
- nil, nil, 302, 302, nil, 258, nil, 190, nil, 190,
- 190, nil, 190, 190, nil, 190, nil, 190, nil, 190,
- nil, 190, nil, nil, 190, 190, 258, 266, 258, 258,
- nil, 258, 258, nil, 258, nil, 258, nil, 258, nil,
- 258, nil, nil, 258, 258, nil, 231, nil, 266, nil,
- 266, 266, nil, 266, 266, nil, 266, nil, 266, nil,
- 266, nil, 266, nil, nil, 266, 266, 231, 155, 231,
- 231, nil, 231, 231, nil, 231, nil, 231, nil, 231,
- nil, 231, nil, nil, 231, 231, nil, 310, nil, 155,
- nil, 155, 155, nil, 155, 155, nil, 155, nil, 155,
- nil, 155, nil, 155, nil, nil, 155, 155, 310, 182,
- 310, 310, nil, 310, 310, nil, 310, nil, 310, nil,
- 310, nil, 310, nil, nil, 310, 310, nil, 312, nil,
- 182, nil, 182, 182, nil, 182, 182, nil, 182, nil,
- 182, nil, 182, nil, 182, nil, nil, 182, 182, 312,
- 322, 312, 312, nil, 312, 312, nil, 312, nil, 312,
- nil, 312, nil, 312, nil, nil, 312, 312, nil, 256,
- nil, 322, nil, 322, 322, nil, 322, 322, nil, 322,
- nil, 322, nil, 322, nil, 322, nil, nil, 322, 322,
- 256, 324, 256, 256, nil, 256, 256, nil, 256, nil,
- 256, nil, 256, nil, 256, nil, nil, 256, 256, nil,
- nil, nil, 324, nil, 324, 324, nil, 324, 324, nil,
- 324, nil, 324, nil, 324, nil, 324, nil, nil, 324,
- 324, 30, nil, 30, 30, nil, 30, 30, nil, 30,
+ 157, nil, 83, 83, 83, nil, nil, nil, 157, nil,
+ nil, nil, 89, nil, nil, nil, 89, 89, nil, nil,
+ 89, nil, 83, nil, nil, 89, nil, nil, nil, 89,
+ nil, nil, nil, 83, 206, 206, nil, 83, 83, nil,
+ 89, 83, nil, nil, nil, nil, 83, 83, 247, 247,
+ 83, nil, nil, 83, 206, 49, 49, nil, nil, nil,
+ nil, 83, nil, nil, 206, nil, nil, nil, 206, 206,
+ nil, nil, 206, 248, 248, 49, 206, 206, 247, nil,
+ nil, 206, 247, 247, nil, 49, 247, 160, 160, 49,
+ 49, 247, 206, 49, nil, 247, nil, 49, 49, nil,
+ nil, nil, 49, 248, nil, nil, 247, 248, 248, 284,
+ 284, 248, nil, 49, nil, nil, 248, 160, nil, nil,
+ 248, 160, 160, 308, 308, 160, nil, nil, nil, nil,
+ 160, 248, nil, nil, 160, nil, nil, nil, nil, 284,
+ nil, nil, nil, 284, 284, 160, nil, 284, 137, 137,
+ 136, 136, 284, 308, nil, nil, 284, 308, 308, nil,
+ nil, 308, nil, nil, nil, nil, 308, 284, 137, nil,
+ 308, nil, nil, nil, nil, 237, 237, nil, 137, 237,
+ 136, 308, 137, 137, 136, 136, 137, nil, 136, nil,
+ 137, 137, 136, 136, nil, 137, nil, 136, nil, nil,
+ 131, 131, nil, 131, nil, 237, 137, nil, 136, 237,
+ 237, nil, nil, 237, nil, nil, nil, nil, 237, nil,
+ nil, nil, 237, nil, nil, nil, nil, nil, nil, nil,
+ 131, 86, nil, 237, 131, 131, nil, nil, 131, nil,
+ 86, 86, nil, 131, nil, nil, nil, 131, nil, 86,
+ 86, 86, 86, 138, 138, nil, nil, nil, 131, nil,
+ nil, 138, 138, 138, 138, 138, nil, nil, 219, 219,
+ 219, 219, nil, 86, 86, 219, 219, 86, 86, 86,
+ 86, 86, 86, nil, 86, 86, 138, 138, nil, nil,
+ 138, 138, 138, 138, 138, 138, nil, 138, 138, 103,
+ 103, nil, nil, nil, nil, nil, nil, nil, 103, 103,
+ 103, 103, 227, 227, nil, nil, nil, nil, nil, nil,
+ nil, 227, 227, 227, 227, nil, nil, 221, 221, 221,
+ 221, nil, 103, 103, 221, 221, 103, 103, 103, 103,
+ 103, 103, nil, 103, 103, nil, nil, nil, nil, 227,
+ 227, 227, 227, 227, 227, nil, 227, 227, 223, 223,
+ nil, nil, nil, nil, nil, nil, nil, 223, 223, 223,
+ 223, 102, 102, nil, nil, nil, nil, nil, nil, nil,
+ 102, 102, 102, 102, nil, 224, nil, nil, nil, nil,
+ nil, nil, 223, 224, nil, 223, 223, 223, 223, 223,
+ 223, nil, 223, 223, 102, 102, 225, nil, 102, 102,
+ 102, 102, 102, 102, 225, 102, 102, nil, nil, 222,
+ nil, 224, 224, 224, 224, 224, 224, 222, 224, 224,
+ 228, nil, 220, 220, 220, 220, 220, 220, 228, 220,
+ 220, nil, 225, 225, 225, 225, 225, 225, nil, 225,
+ 225, nil, nil, nil, 303, 222, 222, 222, 222, 222,
+ 222, nil, 222, 222, nil, nil, 228, 228, 228, 228,
+ 228, 228, nil, 228, 228, 303, 191, 303, 303, nil,
+ 303, 303, nil, 303, nil, 303, nil, 303, nil, 303,
+ nil, nil, 303, 303, nil, 259, nil, 191, nil, 191,
+ 191, nil, 191, 191, nil, 191, nil, 191, nil, 191,
+ nil, 191, nil, nil, 191, 191, 259, 267, 259, 259,
+ nil, 259, 259, nil, 259, nil, 259, nil, 259, nil,
+ 259, nil, nil, 259, 259, nil, 232, nil, 267, nil,
+ 267, 267, nil, 267, 267, nil, 267, nil, 267, nil,
+ 267, nil, 267, nil, nil, 267, 267, 232, 156, 232,
+ 232, nil, 232, 232, nil, 232, nil, 232, nil, 232,
+ nil, 232, nil, nil, 232, 232, nil, 311, nil, 156,
+ nil, 156, 156, nil, 156, 156, nil, 156, nil, 156,
+ nil, 156, nil, 156, nil, nil, 156, 156, 311, 183,
+ 311, 311, nil, 311, 311, nil, 311, nil, 311, nil,
+ 311, nil, 311, nil, nil, 311, 311, nil, 313, nil,
+ 183, nil, 183, 183, nil, 183, 183, nil, 183, nil,
+ 183, nil, 183, nil, 183, nil, nil, 183, 183, 313,
+ 323, 313, 313, nil, 313, 313, nil, 313, nil, 313,
+ nil, 313, nil, 313, nil, nil, 313, 313, nil, 257,
+ nil, 323, nil, 323, 323, nil, 323, 323, nil, 323,
+ nil, 323, nil, 323, nil, 323, nil, nil, 323, 323,
+ 257, 325, 257, 257, nil, 257, 257, nil, 257, nil,
+ 257, nil, 257, nil, 257, nil, nil, 257, 257, nil,
+ nil, nil, 325, nil, 325, 325, nil, 325, 325, nil,
+ 325, nil, 325, nil, 325, nil, 325, nil, nil, 325,
+ 325, 30, nil, 30, 30, nil, 30, 30, nil, 30,
nil, 30, nil, 30, nil, 30, nil, nil, 30, 30,
0, nil, 0, 0, nil, 0, 0, nil, 0, nil,
- 0, nil, 0, nil, 0, nil, nil, 0, 0, 228,
- 228, 228, 228, 228, 228, nil, 228, 228 ]
+ 0, nil, 0, nil, 0, nil, nil, 0, 0, 229,
+ 229, 229, 229, 229, 229, nil, 229, 229 ]
racc_action_pointer = [
- 1532, 160, nil, nil, nil, 48, nil, nil, nil, 287,
+ 1532, 174, nil, nil, nil, 66, nil, nil, nil, 287,
nil, nil, 23, nil, nil, 279, 157, nil, 178, nil,
- 210, 6, nil, 99, nil, 280, 66, 215, 78, nil,
+ 210, 6, nil, 173, nil, 280, 48, -26, 78, nil,
1513, nil, nil, 422, -2, 215, nil, 496, nil, nil,
- nil, 7, nil, nil, 202, nil, 209, nil, 872, nil,
- 202, 640, 218, nil, 207, nil, nil, nil, 8, nil,
- nil, nil, 188, nil, 206, 185, nil, nil, 172, 168,
- 164, 586, nil, nil, 122, 515, 443, nil, 119, 56,
- 29, 180, 820, nil, 200, 1045, 205, 221, 799, 191,
- 25, 49, 231, nil, 228, 255, 236, nil, nil, 257,
- nil, 1176, 1104, 76, 276, nil, nil, nil, 262, nil,
- 255, 74, 285, -5, nil, 183, 223, 231, nil, nil,
- nil, 2, 283, nil, 29, nil, nil, nil, -5, 236,
- 1017, nil, 58, nil, 146, 967, 965, 1058, 129, nil,
- nil, nil, 72, 125, 231, 369, 390, 475, 608, 661,
- 184, 693, 714, 746, 171, 1371, 767, 316, 19, 904,
- 139, 201, 195, 40, -11, nil, nil, -9, nil, nil,
- nil, nil, 120, 161, 180, nil, 82, 190, nil, nil,
- nil, nil, 1412, 27, 51, 104, 93, 88, 94, nil,
- 1289, nil, 536, 139, 115, 158, nil, nil, nil, 148,
- nil, 546, nil, nil, nil, 851, nil, 568, nil, nil,
- nil, nil, nil, 75, nil, nil, 192, 117, 1036, 1200,
- 1095, 1223, 1163, 1189, 1210, nil, 1117, 1234, 1527, nil,
- 193, 1349, 76, -41, 128, nil, 992, nil, 81, nil,
- 229, -20, 57, nil, nil, nil, 865, 890, nil, 232,
- nil, 231, 1, nil, 284, 226, 1472, nil, 1308, nil,
- nil, nil, nil, nil, 244, nil, 1330, nil, nil, nil,
- 337, nil, 182, nil, nil, nil, nil, nil, 253, 232,
- nil, nil, 256, 926, nil, nil, nil, nil, 249, nil,
- 252, 253, 254, 255, nil, 272, 284, nil, 119, 263,
- nil, nil, 1267, nil, nil, nil, nil, 940, 283, 284,
- 1390, nil, 1431, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, 1453, nil, 1494, nil, nil ]
+ nil, 7, nil, nil, nil, 202, nil, 209, nil, 872,
+ nil, 202, 640, 218, nil, 207, nil, nil, nil, 8,
+ nil, nil, nil, 188, nil, 206, 185, nil, nil, 172,
+ 168, 164, 586, nil, nil, 122, 515, 443, nil, 119,
+ 56, 29, 236, 820, nil, 242, 1045, 261, 277, 799,
+ 256, 25, 57, 289, nil, 217, 196, 179, nil, nil,
+ 198, nil, 1176, 1104, 76, 215, nil, nil, nil, 211,
+ nil, 198, 2, 245, 276, nil, 205, 223, 231, nil,
+ nil, nil, 2, 283, nil, 29, nil, nil, nil, -5,
+ 236, 1017, nil, 58, nil, 146, 967, 965, 1058, 139,
+ nil, nil, nil, 72, 125, 231, 369, 390, 475, 608,
+ 661, 149, 693, 714, 746, 197, 1371, 767, 316, 19,
+ 904, 159, 229, 219, 40, -11, nil, nil, 75, nil,
+ nil, nil, nil, 90, 167, 180, nil, 119, 193, nil,
+ nil, nil, nil, 1412, 27, 51, 104, 93, 88, 94,
+ nil, 1289, nil, 536, 139, 115, 158, nil, nil, nil,
+ 148, nil, 546, nil, nil, nil, 851, nil, 568, nil,
+ nil, nil, nil, nil, 73, nil, nil, 192, 132, 1036,
+ 1200, 1095, 1223, 1163, 1189, 1210, nil, 1117, 1234, 1527,
+ nil, 193, 1349, 76, -41, 43, nil, 992, nil, -3,
+ nil, 229, -20, 49, nil, nil, nil, 865, 890, nil,
+ 232, nil, 231, 222, 75, nil, 236, 1472, nil, 1308,
+ nil, nil, nil, nil, nil, 244, nil, 1330, nil, nil,
+ nil, 337, nil, 164, nil, nil, nil, nil, nil, 253,
+ 232, nil, nil, 256, 926, nil, nil, nil, nil, 249,
+ nil, 252, 253, 254, 255, nil, 272, 284, nil, nil,
+ 82, 263, nil, 1267, nil, nil, nil, nil, 940, 283,
+ 284, 1390, nil, 1431, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, 1453, nil, 1494, nil, nil ]
racc_action_default = [
- -172, -198, -15, -3, -165, -198, -16, -5, -163, -198,
- -17, -6, -198, -7, -8, -198, -164, -9, -198, -10,
- -198, -198, -11, -198, -12, -198, -198, -39, -198, -13,
- -1, -14, -2, -198, -198, -172, -164, -72, -170, -169,
- -168, -172, -171, -166, -79, -189, -198, -31, -198, -33,
- -32, -198, -63, -102, -21, -104, -103, -22, -62, -23,
- -197, -61, -26, -153, -198, -27, -152, -151, -28, -29,
- -30, -198, -94, -112, -90, -198, -198, -97, -91, -95,
- -99, -92, -198, -96, -93, -198, -98, -198, -198, -72,
- -172, -172, -42, -154, -156, -198, -172, -40, -38, -198,
- -4, -70, -71, -198, -198, -185, -73, -67, -64, -63,
- -59, -62, -195, -65, -57, -68, -198, -66, -150, -69,
- -149, -198, -198, -183, -198, -77, -78, -80, -198, -195,
- -198, -20, -198, -82, -198, -198, -198, -198, -198, -192,
- -128, -121, -198, -198, -198, -198, -198, -198, -198, -198,
- -198, -198, -198, -198, -198, -198, -198, -198, -198, -198,
- -198, -198, -195, -172, -198, -46, -48, -198, -62, -55,
- -54, -45, -198, -79, -198, 327, -173, -198, -174, -187,
- -186, -188, -198, -198, -60, -198, -198, -196, -72, -184,
- -198, -167, -198, -198, -196, -198, -147, -139, -140, -62,
- -145, -198, -148, -146, -18, -198, -105, -198, -193, -194,
- -24, -25, -101, -198, -131, -190, -194, -117, -119, -123,
- -120, -125, -130, -127, -124, -113, -129, -126, -122, -114,
- -109, -198, -115, -116, -118, -137, -198, -133, -198, -106,
- -198, -198, -198, -51, -50, -44, -198, -198, -43, -195,
- -155, -182, -198, -177, -180, -198, -198, -160, -198, -34,
- -58, -75, -35, -74, -195, -162, -198, -76, -37, -81,
- -198, -142, -195, -19, -83, -100, -191, -108, -198, -109,
- -132, -134, -198, -198, -36, -49, -47, -88, -84, -52,
- -85, -89, -86, -87, -53, -198, -198, -176, -198, -198,
- -175, -158, -198, -159, -56, -161, -144, -198, -198, -194,
- -198, -107, -198, -138, -41, -181, -178, -179, -157, -143,
- -141, -111, -198, -136, -198, -110, -135 ]
+ -173, -199, -15, -3, -165, -199, -16, -5, -163, -199,
+ -17, -6, -199, -7, -8, -199, -164, -9, -199, -10,
+ -199, -199, -11, -199, -12, -199, -199, -39, -199, -13,
+ -1, -14, -2, -199, -199, -173, -164, -72, -171, -170,
+ -169, -173, -172, -166, -168, -79, -190, -199, -31, -199,
+ -33, -32, -199, -63, -102, -21, -104, -103, -22, -62,
+ -23, -198, -61, -26, -153, -199, -27, -152, -151, -28,
+ -29, -30, -199, -94, -112, -90, -199, -199, -97, -91,
+ -95, -99, -92, -199, -96, -93, -199, -98, -199, -199,
+ -72, -173, -173, -42, -154, -156, -199, -173, -40, -38,
+ -199, -4, -70, -71, -199, -199, -186, -73, -67, -64,
+ -63, -59, -62, -196, -65, -57, -68, -199, -66, -150,
+ -69, -149, -199, -199, -184, -199, -77, -78, -80, -199,
+ -196, -199, -20, -199, -82, -199, -199, -199, -199, -199,
+ -193, -128, -121, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, -196, -173, -199, -46, -48, -199, -62,
+ -55, -54, -45, -199, -79, -199, 328, -174, -199, -175,
+ -188, -187, -189, -199, -199, -60, -199, -199, -197, -72,
+ -185, -199, -167, -199, -199, -197, -199, -147, -139, -140,
+ -62, -145, -199, -148, -146, -18, -199, -105, -199, -194,
+ -195, -24, -25, -101, -199, -131, -191, -195, -117, -119,
+ -123, -120, -125, -130, -127, -124, -113, -129, -126, -122,
+ -114, -109, -199, -115, -116, -118, -137, -199, -133, -199,
+ -106, -199, -199, -199, -51, -50, -44, -199, -199, -43,
+ -196, -155, -183, -199, -199, -178, -181, -199, -160, -199,
+ -34, -58, -75, -35, -74, -196, -162, -199, -76, -37,
+ -81, -199, -142, -196, -19, -83, -100, -192, -108, -199,
+ -109, -132, -134, -199, -199, -36, -49, -47, -88, -84,
+ -52, -85, -89, -86, -87, -53, -199, -199, -176, -177,
+ -199, -199, -158, -199, -159, -56, -161, -144, -199, -199,
+ -195, -199, -107, -199, -138, -41, -182, -179, -180, -157,
+ -143, -141, -111, -199, -136, -199, -110, -135 ]
racc_goto_table = [
- 21, 15, 100, 198, 30, 186, 114, 195, 253, 54,
- 112, 119, 43, 35, 237, 164, 172, 59, 129, 32,
- 210, 47, 193, 277, 67, 125, 25, 134, 99, 225,
- 21, 15, 269, 229, 96, 307, 235, 289, 294, 236,
- 286, 132, 107, 92, 197, 67, 183, 272, 94, 59,
- 50, 138, 69, 47, 105, 240, 67, 93, 177, 104,
- 123, 41, 162, 122, 160, 110, 255, 252, 98, 180,
- nil, 108, 311, 118, 271, nil, nil, 87, 195, nil,
- nil, nil, 50, nil, 69, nil, nil, nil, 241, nil,
- 210, 281, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, 133, nil,
- nil, 179, nil, 235, nil, 178, nil, nil, nil, nil,
- nil, 189, nil, nil, 191, nil, nil, nil, nil, 213,
- 316, nil, 133, nil, nil, nil, 211, 59, 67, nil,
- 47, 47, 295, 67, 67, 133, nil, 249, nil, nil,
- nil, nil, nil, 260, 125, 21, 15, 304, 119, 231,
- 313, 264, nil, nil, 196, 308, 118, 67, 263, 50,
- 50, 69, 69, nil, nil, 125, nil, nil, nil, nil,
- 319, nil, 21, 15, 195, nil, 258, nil, nil, 107,
- 21, 15, 67, 196, 266, 118, nil, nil, nil, nil,
- nil, nil, nil, 100, nil, nil, 211, nil, 250, 67,
- 47, nil, nil, 67, nil, 65, nil, nil, 108, nil,
- 118, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 100, 21, 15, nil, nil, 196, 115, 118, 100, 50,
- nil, 69, 261, nil, 67, nil, nil, 65, nil, 267,
- nil, 287, 287, nil, 67, 67, 21, 15, 21, 15,
- 302, nil, nil, nil, 274, 62, 21, 15, nil, nil,
- 196, nil, 118, nil, 100, nil, nil, nil, nil, nil,
- 288, 288, 293, 293, nil, nil, 113, nil, nil, 170,
- 170, 67, nil, nil, 100, nil, 100, 62, nil, 68,
- nil, nil, 21, 15, nil, nil, nil, nil, nil, nil,
- 21, 15, 21, 15, 322, 67, 324, 196, nil, 118,
- 117, nil, 21, 15, 21, 15, nil, 306, nil, 202,
- nil, 68, nil, 70, 65, 65, nil, nil, nil, 169,
- 169, 196, nil, 118, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 315, 120, nil, 317, nil, 202, nil,
- nil, nil, 170, nil, nil, 70, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 200,
- nil, nil, nil, 115, 62, 62, nil, nil, nil, nil,
+ 15, 21, 101, 199, 30, 196, 130, 113, 255, 43,
+ 238, 126, 211, 278, 35, 120, 60, 25, 115, 135,
+ 32, 55, 165, 173, 68, 187, 290, 295, 270, 100,
+ 15, 21, 48, 226, 236, 97, 308, 230, 237, 287,
+ 93, 198, 194, 139, 184, 68, 273, 95, 178, 60,
+ 66, 105, 51, 108, 133, 106, 161, 68, 41, 94,
+ 163, 124, 312, 123, 111, 48, 190, 253, 254, 99,
+ 181, 116, nil, 109, 272, 241, 196, nil, 88, nil,
+ nil, nil, 211, 66, nil, 51, nil, 282, nil, nil,
+ nil, nil, nil, nil, nil, 242, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 202, nil, nil, nil, 65, nil, nil, nil, 200, nil,
- 85, nil, 169, 203, nil, nil, nil, nil, 68, 68,
- nil, nil, nil, nil, nil, 101, 102, nil, nil, nil,
- nil, nil, nil, 113, nil, 202, nil, nil, nil, nil,
- nil, 170, 203, nil, nil, 291, 291, 120, nil, nil,
- 200, nil, 70, 70, 62, nil, nil, nil, nil, nil,
- nil, nil, nil, 137, nil, nil, nil, 117, 140, nil,
- nil, nil, nil, nil, 141, nil, 120, nil, nil, nil,
- nil, nil, 202, nil, 203, 200, nil, nil, 68, nil,
- nil, 169, nil, nil, nil, 290, 290, nil, nil, nil,
- nil, 120, nil, nil, nil, nil, 202, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, 120, 203,
- nil, nil, 70, nil, nil, nil, nil, nil, nil, 292,
- 292, nil, 200, nil, 217, 218, 219, 220, 221, 222,
- 223, 224, nil, 226, 227, 228, nil, nil, 232, 233,
- 234, nil, nil, 120, nil, nil, 200, nil, nil, nil,
- nil, nil, nil, 120, 120, nil, 203, nil, nil, nil,
+ 134, 236, nil, 180, nil, nil, nil, 179, nil, nil,
+ nil, nil, 192, nil, nil, 171, 171, nil, nil, nil,
+ nil, 317, nil, nil, 134, 250, 212, 60, nil, 68,
+ 126, nil, 214, nil, 68, 68, nil, 134, nil, nil,
+ nil, nil, 48, 48, 264, nil, 15, 21, 314, 265,
+ 232, 126, 296, 120, nil, 203, 261, 197, 68, nil,
+ 66, 66, 51, 51, nil, nil, nil, 305, nil, nil,
+ 320, nil, 196, 15, 21, 309, nil, 259, nil, nil,
+ nil, 15, 21, 68, 203, 267, 197, nil, 171, nil,
+ nil, 108, nil, nil, 101, nil, 212, nil, nil, nil,
+ 68, 251, nil, 71, 68, nil, 70, nil, nil, 116,
+ nil, 109, 48, nil, nil, nil, nil, nil, nil, nil,
+ nil, 101, 15, 21, 121, nil, 203, 119, 197, 101,
+ 66, nil, 51, nil, 262, 68, 71, nil, nil, 70,
+ nil, 268, nil, nil, nil, 68, 68, 15, 21, 15,
+ 21, 303, nil, 288, 288, nil, 275, 15, 21, 69,
+ nil, 203, 63, 197, nil, 101, nil, 171, nil, nil,
+ nil, 292, 292, 289, 289, nil, nil, nil, nil, nil,
+ 118, nil, 68, 114, nil, 101, nil, 101, nil, nil,
+ nil, nil, 69, 15, 21, 63, nil, nil, nil, nil,
+ nil, 15, 21, 15, 21, 323, 68, 325, 203, nil,
+ 197, nil, nil, 15, 21, 15, 21, nil, 121, 307,
+ nil, 119, nil, 71, 71, nil, 70, 70, nil, nil,
+ nil, nil, 203, nil, 197, nil, nil, 170, 170, nil,
+ nil, nil, nil, nil, nil, 316, nil, 121, nil, 318,
+ 119, nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 121, nil, 204, 119, nil, 201, nil, 69,
+ 69, nil, 63, 63, nil, 86, nil, nil, nil, 121,
+ nil, nil, 119, 71, nil, nil, 70, nil, nil, nil,
+ 102, 103, nil, 204, nil, nil, 201, nil, nil, nil,
+ 170, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 121, nil, nil, 119, 118, nil,
+ nil, 114, nil, nil, 121, 121, nil, 294, 294, 138,
+ nil, nil, nil, nil, 141, 204, nil, nil, 201, 69,
+ 142, nil, 63, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 203, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 120, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 121, nil, nil, 119, nil, nil, nil, nil, nil,
+ 204, nil, nil, 201, nil, nil, nil, nil, nil, 170,
+ 293, 293, nil, 291, 291, 121, nil, nil, 119, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 120 ]
+ 218, 219, 220, 221, 222, 223, 224, 225, nil, 227,
+ 228, 229, nil, nil, 233, 234, 235, 204, nil, nil,
+ 201, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 204, nil, nil, 201 ]
racc_goto_check = [
- 33, 20, 4, 61, 2, 32, 43, 59, 71, 18,
- 31, 46, 68, 28, 57, 37, 37, 20, 34, 3,
- 19, 26, 32, 54, 45, 48, 1, 52, 33, 55,
- 33, 20, 51, 55, 28, 53, 59, 42, 42, 56,
- 38, 18, 26, 36, 60, 45, 30, 62, 63, 20,
- 27, 52, 24, 26, 3, 32, 45, 27, 64, 65,
- 3, 66, 31, 67, 52, 29, 69, 70, 5, 72,
- nil, 27, 54, 24, 61, nil, nil, 49, 59, nil,
- nil, nil, 27, nil, 24, nil, nil, nil, 37, nil,
- 19, 57, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, 49, nil,
- nil, 28, nil, 59, nil, 3, nil, nil, nil, nil,
- nil, 68, nil, nil, 68, nil, nil, nil, nil, 18,
- 71, nil, 49, nil, nil, nil, 20, 20, 45, nil,
- 26, 26, 32, 45, 45, 49, nil, 34, nil, nil,
- nil, nil, nil, 43, 48, 33, 20, 32, 46, 2,
- 59, 31, nil, nil, 27, 32, 24, 45, 48, 27,
- 27, 24, 24, nil, nil, 48, nil, nil, nil, nil,
- 61, nil, 33, 20, 59, nil, 2, nil, nil, 26,
- 33, 20, 45, 27, 2, 24, nil, nil, nil, nil,
- nil, nil, nil, 4, nil, nil, 20, nil, 27, 45,
- 26, nil, nil, 45, nil, 22, nil, nil, 27, nil,
+ 20, 33, 4, 61, 2, 59, 34, 31, 72, 68,
+ 57, 48, 19, 54, 28, 46, 20, 1, 43, 52,
+ 3, 18, 37, 37, 45, 32, 42, 42, 51, 33,
+ 20, 33, 26, 55, 59, 28, 53, 55, 56, 38,
+ 36, 60, 32, 52, 30, 45, 62, 63, 64, 20,
+ 22, 65, 27, 26, 18, 3, 52, 45, 66, 27,
+ 31, 3, 54, 67, 29, 26, 69, 70, 71, 5,
+ 73, 22, nil, 27, 61, 32, 59, nil, 49, nil,
+ nil, nil, 19, 22, nil, 27, nil, 57, nil, nil,
+ nil, nil, nil, nil, nil, 37, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ 49, 59, nil, 28, nil, nil, nil, 3, nil, nil,
+ nil, nil, 68, nil, nil, 22, 22, nil, nil, nil,
+ nil, 72, nil, nil, 49, 34, 20, 20, nil, 45,
+ 48, nil, 18, nil, 45, 45, nil, 49, nil, nil,
+ nil, nil, 26, 26, 48, nil, 20, 33, 59, 31,
+ 2, 48, 32, 46, nil, 22, 43, 27, 45, nil,
+ 22, 22, 27, 27, nil, nil, nil, 32, nil, nil,
+ 61, nil, 59, 20, 33, 32, nil, 2, nil, nil,
+ nil, 20, 33, 45, 22, 2, 27, nil, 22, nil,
+ nil, 26, nil, nil, 4, nil, 20, nil, nil, nil,
+ 45, 27, nil, 25, 45, nil, 24, nil, nil, 22,
+ nil, 27, 26, nil, nil, nil, nil, nil, nil, nil,
+ nil, 4, 20, 33, 25, nil, 22, 24, 27, 4,
+ 22, nil, 27, nil, 49, 45, 25, nil, nil, 24,
+ nil, 49, nil, nil, nil, 45, 45, 20, 33, 20,
+ 33, 2, nil, 26, 26, nil, 49, 20, 33, 23,
+ nil, 22, 21, 27, nil, 4, nil, 22, nil, nil,
+ nil, 22, 22, 27, 27, nil, nil, nil, nil, nil,
+ 23, nil, 45, 21, nil, 4, nil, 4, nil, nil,
+ nil, nil, 23, 20, 33, 21, nil, nil, nil, nil,
+ nil, 20, 33, 20, 33, 2, 45, 2, 22, nil,
+ 27, nil, nil, 20, 33, 20, 33, nil, 25, 49,
+ nil, 24, nil, 25, 25, nil, 24, 24, nil, nil,
+ nil, nil, 22, nil, 27, nil, nil, 21, 21, nil,
+ nil, nil, nil, nil, nil, 49, nil, 25, nil, 49,
24, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 4, 33, 20, nil, nil, 27, 22, 24, 4, 27,
- nil, 24, 49, nil, 45, nil, nil, 22, nil, 49,
- nil, 26, 26, nil, 45, 45, 33, 20, 33, 20,
- 2, nil, nil, nil, 49, 21, 33, 20, nil, nil,
- 27, nil, 24, nil, 4, nil, nil, nil, nil, nil,
- 27, 27, 24, 24, nil, nil, 21, nil, nil, 22,
- 22, 45, nil, nil, 4, nil, 4, 21, nil, 23,
- nil, nil, 33, 20, nil, nil, nil, nil, nil, nil,
- 33, 20, 33, 20, 2, 45, 2, 27, nil, 24,
- 23, nil, 33, 20, 33, 20, nil, 49, nil, 22,
- nil, 23, nil, 25, 22, 22, nil, nil, nil, 21,
- 21, 27, nil, 24, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 49, 25, nil, 49, nil, 22, nil,
- nil, nil, 22, nil, nil, 25, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 21,
- nil, nil, nil, 22, 21, 21, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 22, nil, nil, nil, 22, nil, nil, nil, 21, nil,
- 47, nil, 21, 23, nil, nil, nil, nil, 23, 23,
- nil, nil, nil, nil, nil, 47, 47, nil, nil, nil,
- nil, nil, nil, 21, nil, 22, nil, nil, nil, nil,
- nil, 22, 23, nil, nil, 22, 22, 25, nil, nil,
- 21, nil, 25, 25, 21, nil, nil, nil, nil, nil,
- nil, nil, nil, 47, nil, nil, nil, 23, 47, nil,
- nil, nil, nil, nil, 47, nil, 25, nil, nil, nil,
- nil, nil, 22, nil, 23, 21, nil, nil, 23, nil,
- nil, 21, nil, nil, nil, 21, 21, nil, nil, nil,
- nil, 25, nil, nil, nil, nil, 22, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, 25, 23,
- nil, nil, 25, nil, nil, nil, nil, nil, nil, 23,
- 23, nil, 21, nil, 47, 47, 47, 47, 47, 47,
- 47, 47, nil, 47, 47, 47, nil, nil, 47, 47,
- 47, nil, nil, 25, nil, nil, 21, nil, nil, nil,
- nil, nil, nil, 25, 25, nil, 23, nil, nil, nil,
+ nil, nil, 25, nil, 23, 24, nil, 21, nil, 23,
+ 23, nil, 21, 21, nil, 47, nil, nil, nil, 25,
+ nil, nil, 24, 25, nil, nil, 24, nil, nil, nil,
+ 47, 47, nil, 23, nil, nil, 21, nil, nil, nil,
+ 21, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 25, nil, nil, 24, 23, nil,
+ nil, 21, nil, nil, 25, 25, nil, 24, 24, 47,
+ nil, nil, nil, nil, 47, 23, nil, nil, 21, 23,
+ 47, nil, 21, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 25, nil, nil, 24, nil, nil, nil, nil, nil,
+ 23, nil, nil, 21, nil, nil, nil, nil, nil, 21,
+ 23, 23, nil, 21, 21, 25, nil, nil, 24, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 23, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 25, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ 47, 47, 47, 47, 47, 47, 47, 47, nil, 47,
+ 47, 47, nil, nil, 47, 47, 47, 23, nil, nil,
+ 21, nil, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 25 ]
+ nil, 23, nil, nil, 21 ]
racc_goto_pointer = [
- nil, 26, 4, 19, -28, 40, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, -7, -115,
- 1, 249, 199, 283, 36, 317, 5, 34, 8, 28,
- -64, -27, -107, 0, -26, nil, 22, -75, -202, nil,
- nil, nil, -209, -31, nil, 8, -26, 392, -19, 57,
- nil, -162, -24, -237, -207, -121, -120, -145, nil, -123,
- -86, -127, -154, 25, -38, 24, 49, 22, 0, -110,
- -109, -168, -34 ]
+ nil, 17, 4, 20, -28, 41, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, 5, -124,
+ 0, 256, 34, 253, 200, 197, 16, 36, 9, 27,
+ -67, -30, -88, 1, -39, nil, 19, -69, -204, nil,
+ nil, nil, -221, -19, nil, 8, -22, 377, -34, 58,
+ nil, -167, -33, -237, -218, -118, -122, -150, nil, -126,
+ -90, -128, -156, 24, -49, 16, 46, 22, -3, -56,
+ -110, -109, -169, -34 ]
racc_goto_default = [
- nil, nil, nil, 171, 3, 7, 11, 13, 14, 17,
- 19, 22, 24, 29, 31, 2, 6, 10, nil, 57,
- 77, 78, 79, 81, 84, 86, 72, 74, 9, nil,
- nil, nil, nil, 64, nil, 28, nil, nil, 165, 242,
- 166, 167, nil, nil, 116, 80, 83, nil, 106, 73,
- 126, 127, nil, 207, nil, 63, nil, nil, 238, 46,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil ]
+ nil, nil, nil, 172, 3, 7, 11, 13, 14, 17,
+ 19, 22, 24, 29, 31, 2, 6, 10, nil, 58,
+ 78, 79, 80, 82, 85, 87, 73, 75, 9, nil,
+ nil, nil, nil, 65, nil, 28, nil, nil, 166, 243,
+ 167, 168, nil, nil, 117, 81, 84, nil, 107, 74,
+ 127, 128, nil, 208, nil, 64, nil, nil, 239, 47,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 44,
+ nil, nil, nil, nil ]
racc_token_table = {
false => 0,
@@ -1006,6 +995,7 @@ Racc_token_to_s_table = [
'classparent',
'hostnames',
'nodeparent',
+'nodename',
'hostname',
'nothing',
'arguments',
@@ -2070,74 +2060,81 @@ module_eval <<'.,.,', 'grammar.ra', 692
def _reduce_167( val, _values, result )
result = val[0]
result = [result] unless result.is_a?(Array)
- result << val[2][:value]
+ result << val[2]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 693
+module_eval <<'.,.,', 'grammar.ra', 696
def _reduce_168( val, _values, result )
- result = val[0][:value]
+ result = ast AST::HostName, :value => val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 694
+module_eval <<'.,.,', 'grammar.ra', 697
def _reduce_169( val, _values, result )
result = val[0][:value]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 695
+module_eval <<'.,.,', 'grammar.ra', 698
def _reduce_170( val, _values, result )
result = val[0][:value]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 696
+module_eval <<'.,.,', 'grammar.ra', 699
def _reduce_171( val, _values, result )
result = val[0][:value]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 701
+module_eval <<'.,.,', 'grammar.ra', 700
def _reduce_172( val, _values, result )
- result = nil
+ result = val[0][:value]
result
end
.,.,
module_eval <<'.,.,', 'grammar.ra', 705
def _reduce_173( val, _values, result )
+ result = nil
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'grammar.ra', 709
+ def _reduce_174( val, _values, result )
result = ast AST::ASTArray, :children => []
result
end
.,.,
- # reduce 174 omitted
+ # reduce 175 omitted
-module_eval <<'.,.,', 'grammar.ra', 710
- def _reduce_175( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 714
+ def _reduce_176( val, _values, result )
result = nil
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 714
- def _reduce_176( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 718
+ def _reduce_177( val, _values, result )
result = val[1]
result = [result] unless result[0].is_a?(Array)
result
end
.,.,
- # reduce 177 omitted
+ # reduce 178 omitted
-module_eval <<'.,.,', 'grammar.ra', 721
- def _reduce_178( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 725
+ def _reduce_179( val, _values, result )
result = val[0]
result = [result] unless result[0].is_a?(Array)
result << val[2]
@@ -2145,67 +2142,67 @@ module_eval <<'.,.,', 'grammar.ra', 721
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 726
- def _reduce_179( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 730
+ def _reduce_180( 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', 730
- def _reduce_180( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 734
+ def _reduce_181( val, _values, result )
Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
result = [val[0][:value]]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 732
- def _reduce_181( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 736
+ def _reduce_182( val, _values, result )
result = [val[0][:value], val[2]]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 734
- def _reduce_182( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 738
+ def _reduce_183( val, _values, result )
result = [val[0][:value]]
result
end
.,.,
- # reduce 183 omitted
+ # reduce 184 omitted
-module_eval <<'.,.,', 'grammar.ra', 739
- def _reduce_184( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 743
+ def _reduce_185( val, _values, result )
result = val[1]
result
end
.,.,
- # reduce 185 omitted
+ # reduce 186 omitted
-module_eval <<'.,.,', 'grammar.ra', 744
- def _reduce_186( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 748
+ def _reduce_187( val, _values, result )
result = val[1]
result
end
.,.,
- # reduce 187 omitted
-
# reduce 188 omitted
-module_eval <<'.,.,', 'grammar.ra', 750
- def _reduce_189( val, _values, result )
+ # reduce 189 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 754
+ def _reduce_190( val, _values, result )
result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 758
- def _reduce_190( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 762
+ def _reduce_191( val, _values, result )
if val[1].instance_of?(AST::ASTArray)
result = val[1]
else
@@ -2215,8 +2212,8 @@ module_eval <<'.,.,', 'grammar.ra', 758
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 765
- def _reduce_191( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 769
+ def _reduce_192( val, _values, result )
if val[1].instance_of?(AST::ASTArray)
result = val[1]
else
@@ -2226,28 +2223,28 @@ module_eval <<'.,.,', 'grammar.ra', 765
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 767
- def _reduce_192( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 771
+ def _reduce_193( val, _values, result )
result = ast AST::ASTArray
result
end
.,.,
- # reduce 193 omitted
-
# reduce 194 omitted
# reduce 195 omitted
-module_eval <<'.,.,', 'grammar.ra', 772
- def _reduce_196( val, _values, result )
+ # reduce 196 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 776
+ def _reduce_197( val, _values, result )
result = nil
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 777
- def _reduce_197( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 781
+ def _reduce_198( val, _values, result )
result = ast AST::Regex, :value => val[0][:value]
result
end
diff --git a/lib/puppet/parser/parser_support.rb b/lib/puppet/parser/parser_support.rb
index e1af2fe82..b13fbb47f 100644
--- a/lib/puppet/parser/parser_support.rb
+++ b/lib/puppet/parser/parser_support.rb
@@ -354,7 +354,7 @@ class Puppet::Parser::Parser
names = [names] unless names.instance_of?(Array)
doc = lexer.getcomment
names.collect do |name|
- name = name.to_s.downcase
+ name = AST::HostName.new :value => name unless name.is_a?(AST::HostName)
if other = @loaded_code.node(name)
error("Node %s is already defined at %s:%s; cannot redefine" % [other.name, other.file, other.line])
end
@@ -372,7 +372,7 @@ class Puppet::Parser::Parser
args[:parentclass] = options[:parent]
end
node = ast(AST::Node, args)
- node.classname = name
+ node.classname = name.to_classname
@loaded_code.add_node(name, node)
node
end
diff --git a/spec/unit/parser/ast/leaf.rb b/spec/unit/parser/ast/leaf.rb
index 8315b8066..38b753b28 100755
--- a/spec/unit/parser/ast/leaf.rb
+++ b/spec/unit/parser/ast/leaf.rb
@@ -136,7 +136,9 @@ end
describe Puppet::Parser::AST::HostName do
before :each do
@scope = stub 'scope'
- @value = stub 'value', :is_a? => true, :=~ => true
+ @value = stub 'value', :=~ => false
+ @value.stubs(:to_s).returns(@value)
+ @value.stubs(:downcase).returns(@value)
@host = Puppet::Parser::AST::HostName.new( :value => @value)
end
@@ -144,7 +146,48 @@ describe Puppet::Parser::AST::HostName do
lambda { Puppet::Parser::AST::HostName.new( :value => "not an hostname!" ) }.should raise_error
end
+ it "should stringify the value" do
+ value = stub 'value', :=~ => false
+
+ value.expects(:to_s).returns("test")
+
+ Puppet::Parser::AST::HostName.new(:value => value)
+ end
+
+ it "should downcase the value" do
+ value = stub 'value', :=~ => false
+ value.stubs(:to_s).returns("UPCASED")
+ host = Puppet::Parser::AST::HostName.new(:value => value)
+
+ host.value == "upcased"
+ end
+
it "should evaluate to its value" do
@host.evaluate(@scope).should == @value
end
+
+ it "should implement to_classname" do
+ @host.should respond_to(:to_classname)
+ end
+
+ it "should return the downcased nodename as classname" do
+ host = Puppet::Parser::AST::HostName.new( :value => "KLASSNAME" )
+ host.to_classname.should == "klassname"
+ end
+
+ it "should delegate eql? to the underlying value if it is an HostName" do
+ @value.expects(:eql?).with("value")
+ @host.eql?("value")
+ end
+
+ it "should delegate eql? to the underlying value if it is not an HostName" do
+ value = stub 'compared', :is_a? => true, :value => "value"
+ @value.expects(:eql?).with("value")
+ @host.eql?(value)
+ end
+
+ it "should delegate hash to the underlying value" do
+ @value.expects(:hash)
+ @host.hash
+ end
end
diff --git a/spec/unit/parser/loaded_code.rb b/spec/unit/parser/loaded_code.rb
index d2986bf2c..d33bda9a9 100644
--- a/spec/unit/parser/loaded_code.rb
+++ b/spec/unit/parser/loaded_code.rb
@@ -37,49 +37,49 @@ describe Puppet::Parser::LoadedCode do
describe "when finding a qualified instance" do
it "should return any found instance if the instance name is fully qualified" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar", "yay"
- loader.find("namespace", "::foo::bar", :node).should == "yay"
+ loader.add_hostclass "foo::bar", "yay"
+ loader.find("namespace", "::foo::bar", :hostclass).should == "yay"
end
it "should return nil if the instance name is fully qualified and no such instance exists" do
loader = Puppet::Parser::LoadedCode.new
- loader.find("namespace", "::foo::bar", :node).should be_nil
+ loader.find("namespace", "::foo::bar", :hostclass).should be_nil
end
it "should return the partially qualified object if it exists in the provided namespace" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar::baz", "yay"
- loader.find("foo", "bar::baz", :node).should == "yay"
+ loader.add_hostclass "foo::bar::baz", "yay"
+ loader.find("foo", "bar::baz", :hostclass).should == "yay"
end
it "should return the unqualified object if it exists in the provided namespace" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar", "yay"
- loader.find("foo", "bar", :node).should == "yay"
+ loader.add_hostclass "foo::bar", "yay"
+ loader.find("foo", "bar", :hostclass).should == "yay"
end
it "should return the unqualified object if it exists in the parent namespace" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar", "yay"
- loader.find("foo::bar::baz", "bar", :node).should == "yay"
+ loader.add_hostclass "foo::bar", "yay"
+ loader.find("foo::bar::baz", "bar", :hostclass).should == "yay"
end
it "should should return the partially qualified object if it exists in the parent namespace" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar::baz", "yay"
- loader.find("foo::bar", "bar::baz", :node).should == "yay"
+ loader.add_hostclass "foo::bar::baz", "yay"
+ loader.find("foo::bar", "bar::baz", :hostclass).should == "yay"
end
it "should return the qualified object if it exists in the root namespace" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar::baz", "yay"
- loader.find("foo::bar", "foo::bar::baz", :node).should == "yay"
+ loader.add_hostclass "foo::bar::baz", "yay"
+ loader.find("foo::bar", "foo::bar::baz", :hostclass).should == "yay"
end
it "should return nil if the object cannot be found" do
loader = Puppet::Parser::LoadedCode.new
- loader.add_node "foo::bar::baz", "yay"
- loader.find("foo::bar", "eh", :node).should be_nil
+ loader.add_hostclass "foo::bar::baz", "yay"
+ loader.find("foo::bar", "eh", :hostclass).should be_nil
end
end
@@ -110,4 +110,47 @@ describe Puppet::Parser::LoadedCode do
it "should indicate whether no nodes are defined" do
Puppet::Parser::LoadedCode.new.should_not be_nodes
end
+
+ describe "when adding nodes" do
+ it "should create an HostName if nodename is a string" do
+ Puppet::Parser::AST::HostName.expects(:new).with(:value => "foo")
+ loader = Puppet::Parser::LoadedCode.new
+ loader.add_node("foo", "bar")
+ end
+
+ it "should not create an HostName if nodename is an HostName" do
+ name = Puppet::Parser::AST::HostName.new(:value => "foo")
+
+ Puppet::Parser::AST::HostName.expects(:new).with(:value => "foo").never
+
+ loader = Puppet::Parser::LoadedCode.new
+ loader.add_node(name, "bar")
+ end
+ end
+
+ describe "when finding nodes" do
+ it "should create an HostName if nodename is a string" do
+ Puppet::Parser::AST::HostName.expects(:new).with(:value => "foo")
+ loader = Puppet::Parser::LoadedCode.new
+ loader.node("foo")
+ end
+
+ it "should not create an HostName if nodename is an HostName" do
+ name = Puppet::Parser::AST::HostName.new(:value => "foo")
+
+ Puppet::Parser::AST::HostName.expects(:new).with(:value => "foo").never
+
+ loader = Puppet::Parser::LoadedCode.new
+ loader.node(name)
+ end
+
+ it "should be able to find nobe by HostName" do
+ namein = Puppet::Parser::AST::HostName.new(:value => "foo")
+ nameout = Puppet::Parser::AST::HostName.new(:value => "foo")
+ loader = Puppet::Parser::LoadedCode.new
+
+ loader.add_node(namein, "bar")
+ loader.node(nameout) == "bar"
+ end
+ end
end
diff --git a/spec/unit/parser/parser.rb b/spec/unit/parser/parser.rb
index 44e4bedea..46a582923 100755
--- a/spec/unit/parser/parser.rb
+++ b/spec/unit/parser/parser.rb
@@ -7,7 +7,8 @@ describe Puppet::Parser do
ast = Puppet::Parser::AST
before :each do
- @parser = Puppet::Parser::Parser.new :environment => "development"
+ @loaded_code = Puppet::Parser::LoadedCode.new
+ @parser = Puppet::Parser::Parser.new :environment => "development", :loaded_code => @loaded_code
@true_ast = Puppet::Parser::AST::Boolean.new :value => true
end
@@ -225,4 +226,91 @@ describe Puppet::Parser do
@parser.ast(Puppet::Parser::AST::Definition)
end
end
+
+ describe "when creating a node" do
+ before :each do
+ @lexer = stub 'lexer'
+ @lexer.stubs(:getcomment)
+ @parser.stubs(:lexer).returns(@lexer)
+ @node = stub_everything 'node'
+ @parser.stubs(:ast).returns(@node)
+ @parser.stubs(:node).returns(nil)
+
+ @nodename = stub 'nodename', :is_a? => false, :to_classname => "node"
+ @nodename.stubs(:is_a?).with(Puppet::Parser::AST::HostName).returns(true)
+ end
+
+ it "should get the lexer stacked comments" do
+ @lexer.expects(:getcomment)
+
+ @parser.newnode(@nodename)
+ end
+
+ it "should create an HostName if needed" do
+ Puppet::Parser::AST::HostName.expects(:new).with(:value => "node").returns(@nodename)
+
+ @parser.newnode("node")
+ end
+
+ it "should raise an error if the node already exists" do
+ @loaded_code.stubs(:node).with(@nodename).returns(@node)
+
+ lambda { @parser.newnode(@nodename) }.should raise_error
+ end
+
+ it "should store the created node in the loaded code" do
+ @loaded_code.expects(:add_node).with(@nodename, @node)
+
+ @parser.newnode(@nodename)
+ end
+
+ it "should create the node with code if provided" do
+ @parser.stubs(:ast).with { |*args| args[1][:code] == :code }.returns(@node)
+
+ @parser.newnode(@nodename, :code => :code)
+ end
+
+ it "should create the node with a parentclass if provided" do
+ @parser.stubs(:ast).with { |*args| args[1][:parent] == :parent }.returns(@node)
+
+ @parser.newnode(@nodename, :parent => :parent)
+ end
+
+ it "should set the node classname from the HostName" do
+ @nodename.stubs(:to_classname).returns(:classname)
+
+ @node.expects(:classname=).with(:classname)
+
+ @parser.newnode(@nodename)
+ end
+
+ it "should return an array of nodes" do
+ @parser.newnode(@nodename).should == [@node]
+ end
+ end
+
+ describe "when retrieving a specific node" do
+ it "should delegate to the loaded_code node" do
+ @loaded_code.expects(:node).with("node")
+
+ @parser.node("node")
+ end
+ end
+
+ describe "when retrieving a specific class" do
+ it "should delegate to the loaded code" do
+ @loaded_code.expects(:hostclass).with("class")
+
+ @parser.hostclass("class")
+ end
+ end
+
+ describe "when retrieving a specific definitions" do
+ it "should delegate to the loaded code" do
+ @loaded_code.expects(:definition).with("define")
+
+ @parser.definition("define")
+ end
+ end
+
end
diff --git a/test/lib/puppettest/support/collection.rb b/test/lib/puppettest/support/collection.rb
index 43df03048..9da15ea81 100644
--- a/test/lib/puppettest/support/collection.rb
+++ b/test/lib/puppettest/support/collection.rb
@@ -18,7 +18,7 @@ module PuppetTest::Support::Collection
query = nil
assert_nothing_raised("Could not parse '#{str}'") do
- query = parser.parse(code).classes[""].code[0].query
+ query = parser.parse(code).hostclass("").code[0].query
end
yield str, res, query