diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-05-17 21:43:51 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-05-17 21:43:51 +0000 |
commit | eed85f41ffc31649032114b7aa89a541d239a257 (patch) | |
tree | 72b83438166fec47d107fa6d2c98261bfde76f60 | |
parent | 8410c4dc5bfbb450ea740be42e0f0d712bf86e7a (diff) | |
download | puppet-eed85f41ffc31649032114b7aa89a541d239a257.tar.gz puppet-eed85f41ffc31649032114b7aa89a541d239a257.tar.xz puppet-eed85f41ffc31649032114b7aa89a541d239a257.zip |
Adding #629 -- an undef keyword now exists
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2522 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r-- | CHANGELOG | 4 | ||||
-rw-r--r-- | lib/puppet/parser/ast/leaf.rb | 3 | ||||
-rw-r--r-- | lib/puppet/parser/grammar.ra | 11 | ||||
-rw-r--r-- | lib/puppet/parser/lexer.rb | 3 | ||||
-rw-r--r-- | lib/puppet/parser/parser.rb | 1155 | ||||
-rw-r--r-- | lib/puppet/parser/resource.rb | 5 | ||||
-rw-r--r-- | lib/puppet/parser/scope.rb | 8 | ||||
-rwxr-xr-x | test/language/parser.rb | 13 | ||||
-rwxr-xr-x | test/language/resource.rb | 14 | ||||
-rwxr-xr-x | test/language/scope.rb | 15 |
10 files changed, 670 insertions, 561 deletions
@@ -1,3 +1,7 @@ + Added an 'undef' keyword (#629), which will evaluate to "" + within strings but when used as a resource parameter value + will cause that parameter to be evaluated as undefined. + Changed the topological sort algorithm (#507) so it will always fail on cycles. diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb index ed02c4eef..c2fd0939d 100644 --- a/lib/puppet/parser/ast/leaf.rb +++ b/lib/puppet/parser/ast/leaf.rb @@ -66,6 +66,9 @@ class Puppet::Parser::AST # double-colon separated class names class ClassName < AST::Leaf; end + # undef values; equiv to nil + class Undef < AST::Leaf; end + # Host names, either fully qualified or just the short name class HostName < AST::Leaf def initialize(hash) diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index 16aa10459..6714afab8 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -9,10 +9,7 @@ token FALSE EQUALS LESSEQUAL NOTEQUAL DOT COLON TYPE LLCOLLECT RRCOLLECT token QMARK LPAREN RPAREN ISEQUAL GREATEREQUAL GREATERTHAN LESSTHAN token IF ELSE IMPORT DEFINE ELSIF VARIABLE CLASS INHERITS NODE BOOLEAN token NAME SEMIC CASE DEFAULT AT LCOLLECT RCOLLECT CLASSNAME CLASSREF -token NOT OR AND - -# We have 2 shift/reduce conflicts -#expect 2 +token NOT OR AND UNDEF rule program: statements { @@ -261,6 +258,10 @@ resourceinstances: resourceinst endsemi: # nothing | SEMIC +undef: UNDEF { + result = ast AST::Undef, :value => :undef +} + name: NAME { result = ast AST::Name, :value => val[0] } @@ -328,6 +329,7 @@ rvalue: quotedtext | array | resourceref | funcrvalue + | undef # We currently require arguments in these functions. funcrvalue: NAME LPAREN namestrings RPAREN { @@ -446,6 +448,7 @@ selectlhand: name | variable | funcrvalue | boolean + | undef | DEFAULT { result = ast AST::Default, :value => val[0] } diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb index 0c9594563..9fc1f9a38 100644 --- a/lib/puppet/parser/lexer.rb +++ b/lib/puppet/parser/lexer.rb @@ -68,7 +68,8 @@ module Puppet "node" => :NODE, "true" => :BOOLEAN, "and" => :AND, - "or" => :OR + "or" => :OR, + "undef" => :UNDEF } def clear diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb index ee8470a26..f86f7267f 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..id70ce3bc052', 'grammar.ra', 606 +module_eval <<'..end grammar.ra modeval..iddb7b85f023', 'grammar.ra', 609 require 'puppet/parser/functions' attr_reader :file, :interp @@ -254,432 +254,467 @@ end # $Id$ -..end grammar.ra modeval..id70ce3bc052 +..end grammar.ra modeval..iddb7b85f023 ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, - 1, 51, :_reduce_1, - 1, 51, :_reduce_none, + 1, 52, :_reduce_1, 1, 52, :_reduce_none, - 2, 52, :_reduce_4, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 54, :_reduce_none, - 4, 62, :_reduce_17, - 3, 62, :_reduce_18, - 2, 62, :_reduce_19, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, + 1, 53, :_reduce_none, + 2, 53, :_reduce_4, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 1, 55, :_reduce_none, + 4, 63, :_reduce_17, + 3, 63, :_reduce_18, + 2, 63, :_reduce_19, + 1, 68, :_reduce_none, 1, 68, :_reduce_none, - 3, 68, :_reduce_23, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 70, :_reduce_27, 1, 69, :_reduce_none, - 3, 69, :_reduce_29, - 5, 55, :_reduce_30, - 5, 55, :_reduce_31, - 5, 55, :_reduce_32, - 5, 66, :_reduce_33, - 2, 56, :_reduce_34, - 1, 80, :_reduce_35, - 2, 80, :_reduce_36, - 2, 57, :_reduce_37, - 1, 81, :_reduce_none, - 1, 81, :_reduce_none, - 3, 82, :_reduce_40, - 3, 82, :_reduce_41, - 1, 83, :_reduce_none, - 1, 83, :_reduce_none, - 3, 83, :_reduce_44, + 3, 69, :_reduce_23, + 1, 71, :_reduce_none, + 1, 71, :_reduce_none, + 1, 71, :_reduce_none, + 1, 71, :_reduce_27, + 1, 70, :_reduce_none, + 3, 70, :_reduce_29, + 5, 56, :_reduce_30, + 5, 56, :_reduce_31, + 5, 56, :_reduce_32, + 5, 67, :_reduce_33, + 2, 57, :_reduce_34, + 1, 81, :_reduce_35, + 2, 81, :_reduce_36, + 2, 58, :_reduce_37, + 1, 82, :_reduce_none, + 1, 82, :_reduce_none, + 3, 83, :_reduce_40, + 3, 83, :_reduce_41, 1, 84, :_reduce_none, - 3, 84, :_reduce_46, - 1, 85, :_reduce_none, + 1, 84, :_reduce_none, + 3, 84, :_reduce_44, 1, 85, :_reduce_none, - 3, 86, :_reduce_49, - 3, 86, :_reduce_50, - 1, 87, :_reduce_none, - 1, 87, :_reduce_none, - 4, 89, :_reduce_53, - 1, 76, :_reduce_none, - 3, 76, :_reduce_55, - 0, 77, :_reduce_none, - 1, 77, :_reduce_none, - 1, 71, :_reduce_58, - 1, 91, :_reduce_59, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 3, 58, :_reduce_66, - 0, 78, :_reduce_67, - 1, 78, :_reduce_68, - 3, 78, :_reduce_69, - 3, 95, :_reduce_70, - 1, 96, :_reduce_none, - 3, 96, :_reduce_72, + 3, 85, :_reduce_46, + 1, 86, :_reduce_none, + 1, 86, :_reduce_none, + 3, 87, :_reduce_49, + 3, 87, :_reduce_50, 1, 88, :_reduce_none, 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 1, 94, :_reduce_none, - 4, 99, :_reduce_88, - 3, 99, :_reduce_89, - 1, 73, :_reduce_90, - 1, 73, :_reduce_91, - 1, 98, :_reduce_92, - 4, 74, :_reduce_93, - 4, 74, :_reduce_94, - 6, 60, :_reduce_95, - 0, 101, :_reduce_none, - 4, 101, :_reduce_97, - 1, 100, :_reduce_none, - 5, 59, :_reduce_99, + 4, 90, :_reduce_53, + 1, 77, :_reduce_none, + 3, 77, :_reduce_55, + 0, 78, :_reduce_none, + 1, 78, :_reduce_none, + 1, 92, :_reduce_58, + 1, 72, :_reduce_59, + 1, 93, :_reduce_60, + 1, 91, :_reduce_none, + 1, 91, :_reduce_none, + 1, 91, :_reduce_none, + 1, 91, :_reduce_none, + 1, 91, :_reduce_none, + 1, 91, :_reduce_none, + 3, 59, :_reduce_67, + 0, 79, :_reduce_68, + 1, 79, :_reduce_69, + 3, 79, :_reduce_70, + 3, 97, :_reduce_71, + 1, 98, :_reduce_none, + 3, 98, :_reduce_73, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 1, 96, :_reduce_none, + 4, 101, :_reduce_90, + 3, 101, :_reduce_91, + 1, 74, :_reduce_92, + 1, 74, :_reduce_93, + 1, 100, :_reduce_94, + 4, 75, :_reduce_95, + 4, 75, :_reduce_96, + 6, 61, :_reduce_97, + 0, 103, :_reduce_none, + 4, 103, :_reduce_99, 1, 102, :_reduce_none, - 2, 102, :_reduce_101, - 5, 103, :_reduce_102, - 4, 103, :_reduce_103, + 5, 60, :_reduce_101, 1, 104, :_reduce_none, - 3, 104, :_reduce_105, - 3, 92, :_reduce_106, + 2, 104, :_reduce_103, + 5, 105, :_reduce_104, + 4, 105, :_reduce_105, 1, 106, :_reduce_none, - 4, 106, :_reduce_108, + 3, 106, :_reduce_107, + 3, 94, :_reduce_108, 1, 108, :_reduce_none, - 3, 108, :_reduce_110, - 3, 107, :_reduce_111, - 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, 105, :_reduce_118, - 1, 109, :_reduce_119, - 3, 109, :_reduce_120, - 2, 61, :_reduce_121, - 6, 63, :_reduce_122, - 5, 63, :_reduce_123, - 6, 64, :_reduce_124, - 5, 64, :_reduce_125, - 6, 65, :_reduce_126, - 5, 65, :_reduce_127, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 112, :_reduce_none, - 3, 112, :_reduce_131, - 1, 114, :_reduce_none, - 1, 114, :_reduce_none, - 1, 114, :_reduce_none, - 0, 53, :_reduce_135, - 0, 115, :_reduce_136, + 4, 108, :_reduce_110, 1, 110, :_reduce_none, - 3, 110, :_reduce_138, - 3, 110, :_reduce_139, + 3, 110, :_reduce_112, + 3, 109, :_reduce_113, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 107, :_reduce_121, + 1, 111, :_reduce_122, + 3, 111, :_reduce_123, + 2, 62, :_reduce_124, + 6, 64, :_reduce_125, + 5, 64, :_reduce_126, + 6, 65, :_reduce_127, + 5, 65, :_reduce_128, + 6, 66, :_reduce_129, + 5, 66, :_reduce_130, + 1, 76, :_reduce_none, + 1, 76, :_reduce_none, + 1, 114, :_reduce_none, + 3, 114, :_reduce_134, 1, 116, :_reduce_none, - 3, 116, :_reduce_141, - 3, 117, :_reduce_142, - 1, 117, :_reduce_143, - 3, 117, :_reduce_144, - 1, 117, :_reduce_145, - 1, 113, :_reduce_none, - 2, 113, :_reduce_147, - 1, 111, :_reduce_none, - 2, 111, :_reduce_149, - 1, 118, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 0, 54, :_reduce_138, + 0, 117, :_reduce_139, + 1, 112, :_reduce_none, + 3, 112, :_reduce_141, + 3, 112, :_reduce_142, 1, 118, :_reduce_none, - 1, 119, :_reduce_none, - 1, 119, :_reduce_none, - 1, 72, :_reduce_154, - 3, 93, :_reduce_155, - 2, 93, :_reduce_156, - 1, 97, :_reduce_none, - 1, 97, :_reduce_none, - 0, 79, :_reduce_none, - 1, 79, :_reduce_160 ] - -racc_reduce_n = 161 - -racc_shift_n = 263 + 3, 118, :_reduce_144, + 3, 119, :_reduce_145, + 1, 119, :_reduce_146, + 3, 119, :_reduce_147, + 1, 119, :_reduce_148, + 1, 115, :_reduce_none, + 2, 115, :_reduce_150, + 1, 113, :_reduce_none, + 2, 113, :_reduce_152, + 1, 120, :_reduce_none, + 1, 120, :_reduce_none, + 1, 121, :_reduce_none, + 1, 121, :_reduce_none, + 1, 73, :_reduce_157, + 3, 95, :_reduce_158, + 2, 95, :_reduce_159, + 1, 99, :_reduce_none, + 1, 99, :_reduce_none, + 0, 80, :_reduce_none, + 1, 80, :_reduce_163 ] + +racc_reduce_n = 164 + +racc_shift_n = 266 racc_action_table = [ - 49, 51, 53, 41, -128, 51, 53, 51, 53, 51, - 53, 188, 58, 96, 49, 110, 58, 63, 51, 53, - 46, 43, 58, 33, 116, 170, 156, 107, 217, 88, - 4, 45, 163, 74, 116, 45, 55, 45, 93, 45, - 98, 191, 55, 47, 98, 44, 192, 47, 45, 47, - 36, 47, 65, 69, 153, 154, 75, 63, 51, 53, - 33, 233, 187, 63, 51, 53, 113, 4, 79, 63, - 51, 53, 80, 74, 232, 63, 51, 53, 187, 74, - 158, 63, 51, 53, 38, 74, 196, 39, 45, 157, - 191, 74, 65, 69, 45, 192, 75, 74, 65, 69, - 45, 187, 75, 198, 65, 69, 45, -113, 75, -112, - 65, 69, 45, 185, 75, 97, 65, 69, 51, 53, - 75, 63, 51, 53, -115, 205, 45, 63, 51, 53, - -114, 98, 200, 63, 51, 53, -112, 74, -113, 63, - 51, 53, 117, 74, -115, 63, 51, 53, 112, 74, - 153, 154, 45, 167, 247, 74, 65, 69, 45, -116, - 75, 140, 65, 69, 45, 49, 75, 79, 65, 69, - 45, 49, 75, -114, 65, 69, 45, 116, 75, 241, - 65, 174, 33, 218, 75, 63, 51, 53, 224, 4, - 18, 63, 51, 53, 111, 223, 110, 36, 51, 53, - 15, 74, 21, 25, 79, 1, 5, 140, 8, 225, - 13, 121, 17, 140, 26, 161, 45, 4, 240, 228, - 65, 69, 45, 160, 75, 230, 65, 137, 45, 18, - 75, 38, 65, 174, 39, 147, 75, 234, 148, 15, - 231, 21, 25, 97, 1, 5, -117, 8, 18, 13, - 80, 17, 236, 26, 45, 121, 4, 238, 15, 98, - 21, 25, 262, 1, 5, 118, 8, 91, 13, 188, - 17, 97, 26, 18, 166, 4, -113, 33, 167, 169, - 144, 253, 45, 15, 4, 21, 25, 98, 1, 5, - 97, 8, 18, 13, -112, 17, -115, 26, 51, 53, - 4, 45, 15, -114, 21, 25, 98, 1, 5, -117, - 8, 243, 13, 140, 17, 87, 26, 150, 258, 4, - 51, 53, 159, 248, 222, 123, 153, 154, 45, 18, - 51, 53, 65, 174, 84, 140, 75, 51, 53, 15, - 143, 21, 25, 121, 1, 5, 81, 8, 187, 13, - 45, 17, 140, 26, 65, 174, 4, 261, 75, 255, - 256, 126, -160, 121, 124, 32, 229, 45, 18, nil, - nil, 65, 174, nil, nil, 75, 215, nil, 15, nil, - 21, 25, nil, 1, 5, nil, 8, 18, 13, nil, - 17, nil, 26, 51, 53, 4, nil, 15, nil, 21, - 25, nil, 1, 5, nil, 8, nil, 13, 140, 17, - nil, 26, nil, nil, 4, 51, 53, 51, 53, nil, - 177, nil, nil, 45, nil, nil, nil, 65, 174, nil, - 140, 75, 140, 203, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 18, 45, nil, 45, nil, 65, - 174, 65, 174, 75, 15, 75, 21, 25, 201, 1, - 5, nil, 8, nil, 13, nil, 17, nil, 26, 18, - nil, 4, nil, 51, 53, nil, nil, nil, nil, 15, - nil, 21, 25, nil, 1, 5, nil, 8, 140, 13, - nil, 17, nil, 26, nil, nil, 4, nil, nil, nil, - 18, nil, nil, 45, nil, nil, nil, 65, 174, nil, - 15, 75, 21, 25, nil, 1, 5, nil, 8, 18, - 13, nil, 17, nil, 26, nil, nil, 4, nil, 15, - nil, 21, 25, nil, 1, 5, nil, 8, 18, 13, - nil, 17, nil, 26, nil, nil, 4, nil, 15, nil, - 21, 25, nil, 1, 5, nil, 8, 18, 13, nil, - 17, nil, 26, nil, nil, 4, nil, 15, nil, 21, - 25, nil, 1, 5, nil, 8, nil, 13, nil, 17, - nil, 26, nil, nil, 4 ] + 62, 50, 52, 41, 161, 43, 62, 50, 52, 114, + 35, 156, 33, 98, 48, 112, 144, 81, -119, 4, + 155, 82, 74, 33, 62, 50, 52, 35, 220, 44, + 4, 45, 158, 159, 118, 65, 139, 45, 95, 75, + 74, 65, 68, 235, 37, 75, 57, 39, 71, 62, + 50, 52, 50, 52, 71, 45, 234, 193, 191, 65, + 68, 37, 194, 75, 39, 74, 166, 62, 50, 52, + 216, 118, 71, 62, 50, 52, 193, 170, 249, 33, + 45, 194, 45, 74, 65, 68, 4, 101, 75, 74, + 190, 62, 50, 52, 47, 158, 159, 71, 45, 50, + 52, 188, 65, 68, 45, 198, 75, 144, 65, 68, + 190, 150, 75, 100, 151, 71, 62, 50, 52, 50, + 52, 71, 45, 201, 45, 190, 65, 176, 203, 101, + 75, 227, 74, 100, 62, 50, 52, 100, 226, 71, + 62, 50, 52, -115, 45, -115, 100, 45, 45, 101, + 74, 65, 68, 101, -114, 75, 74, 45, 62, 50, + 52, -117, 101, 162, 71, 45, -116, 158, 159, 65, + 68, 45, -120, 75, 74, 65, 68, 50, 52, 75, + 117, -118, 71, 62, 50, 52, 169, -119, 71, 45, + 170, 171, 144, 65, 68, 50, 52, 75, -114, 74, + -117, 62, 50, 52, 48, 81, 71, 45, 48, 81, + 144, 65, 176, 118, 45, 75, 113, 74, 65, 68, + 50, 52, 75, 223, 71, 45, 112, 164, 228, 65, + 176, 71, 45, 75, 123, 144, 65, 68, 50, 52, + 75, 178, 71, 163, 50, 52, 119, 232, 233, 71, + 45, 50, 52, 144, 65, 176, -116, 82, 75, 144, + 50, 52, 50, 52, 238, 239, 57, 71, 45, 153, + 241, 109, 65, 176, 45, 144, 75, 144, 65, 176, + 123, 45, 75, 50, 52, 71, 54, 92, 90, 191, + 45, 71, 45, 47, 65, 176, 65, 176, 75, -115, + 75, 50, 52, 173, -114, 225, -117, 71, -116, 71, + 48, 50, 52, 45, -131, 246, 144, 33, 101, 149, + 147, 88, 251, 87, 4, 47, 57, 123, 85, 120, + 46, 45, 123, 219, 190, 65, 176, 258, 127, 75, + 260, 45, -163, 126, 19, 125, 54, 32, 71, 231, + nil, nil, 265, 47, 16, nil, 21, 24, nil, 1, + 5, nil, 9, 19, 14, nil, 18, nil, 25, nil, + nil, 4, nil, 16, nil, 21, 24, 256, 1, 5, + nil, 9, nil, 14, nil, 18, nil, 25, 19, nil, + 4, nil, nil, nil, nil, nil, 244, nil, 16, nil, + 21, 24, nil, 1, 5, nil, 9, 19, 14, nil, + 18, nil, 25, nil, nil, 4, nil, 16, nil, 21, + 24, 261, 1, 5, nil, 9, nil, 14, nil, 18, + nil, 25, 19, nil, 4, nil, nil, nil, nil, nil, + 264, nil, 16, nil, 21, 24, nil, 1, 5, nil, + 9, 19, 14, nil, 18, nil, 25, nil, nil, 4, + nil, 16, nil, 21, 24, 236, 1, 5, nil, 9, + nil, 14, nil, 18, nil, 25, 19, nil, 4, nil, + nil, nil, nil, nil, 206, nil, 16, nil, 21, 24, + nil, 1, 5, nil, 9, 19, 14, nil, 18, nil, + 25, nil, nil, 4, nil, 16, nil, 21, 24, 204, + 1, 5, nil, 9, nil, 14, nil, 18, nil, 25, + 19, nil, 4, nil, nil, nil, nil, nil, 243, nil, + 16, nil, 21, 24, nil, 1, 5, nil, 9, 19, + 14, nil, 18, nil, 25, nil, nil, 4, nil, 16, + nil, 21, 24, nil, 1, 5, nil, 9, 19, 14, + nil, 18, nil, 25, nil, nil, 4, nil, 16, nil, + 21, 24, nil, 1, 5, nil, 9, 19, 14, nil, + 18, nil, 25, nil, nil, 4, nil, 16, nil, 21, + 24, nil, 1, 5, nil, 9, 19, 14, nil, 18, + nil, 25, nil, nil, 4, nil, 16, nil, 21, 24, + nil, 1, 5, nil, 9, 19, 14, nil, 18, nil, + 25, nil, nil, 4, nil, 16, nil, 21, 24, nil, + 1, 5, nil, 9, nil, 14, nil, 18, nil, 25, + nil, nil, 4 ] racc_action_check = [ - 13, 13, 13, 9, 13, 116, 116, 46, 46, 110, - 110, 137, 111, 35, 69, 171, 13, 17, 17, 17, - 13, 11, 46, 9, 137, 116, 101, 46, 171, 27, - 9, 13, 111, 17, 69, 116, 13, 46, 35, 110, - 116, 126, 46, 13, 110, 11, 126, 116, 17, 46, - 8, 110, 17, 17, 101, 101, 17, 49, 49, 49, - 25, 194, 125, 63, 63, 63, 63, 25, 18, 15, - 15, 15, 18, 49, 194, 168, 168, 168, 120, 63, - 105, 79, 79, 79, 8, 15, 127, 8, 49, 105, - 233, 168, 49, 49, 63, 233, 49, 79, 63, 63, - 15, 131, 63, 132, 15, 15, 168, 133, 15, 136, - 168, 168, 79, 119, 168, 44, 79, 79, 21, 21, - 79, 188, 188, 188, 138, 152, 44, 230, 230, 230, - 139, 44, 142, 229, 229, 229, 68, 188, 64, 32, - 32, 32, 70, 230, 72, 200, 200, 200, 62, 229, - 152, 152, 188, 220, 220, 32, 188, 188, 230, 61, - 188, 200, 230, 230, 229, 163, 230, 58, 229, 229, - 32, 55, 229, 73, 32, 32, 200, 174, 32, 204, - 200, 200, 5, 176, 200, 218, 218, 218, 183, 5, - 204, 88, 88, 88, 52, 183, 50, 96, 224, 224, - 204, 218, 204, 204, 74, 204, 204, 88, 204, 186, - 204, 187, 204, 224, 204, 109, 218, 204, 202, 190, - 218, 218, 88, 108, 218, 192, 88, 88, 224, 202, - 88, 96, 224, 224, 96, 93, 224, 196, 93, 202, - 193, 202, 202, 155, 202, 202, 77, 202, 196, 202, - 41, 202, 197, 202, 155, 198, 202, 199, 196, 155, - 196, 196, 260, 196, 196, 78, 196, 34, 196, 121, - 196, 97, 196, 260, 115, 196, 208, 91, 115, 115, - 91, 235, 97, 260, 91, 260, 260, 97, 260, 260, - 43, 260, 235, 260, 210, 260, 211, 260, 246, 246, - 260, 43, 235, 212, 235, 235, 43, 235, 235, 213, - 235, 215, 235, 246, 235, 26, 235, 94, 248, 235, - 181, 181, 106, 223, 181, 81, 106, 106, 246, 248, - 124, 124, 246, 246, 22, 181, 246, 177, 177, 248, - 90, 248, 248, 80, 248, 248, 20, 248, 237, 248, - 181, 248, 177, 248, 181, 181, 248, 259, 181, 243, - 245, 86, 247, 84, 83, 1, 191, 177, 259, nil, - nil, 177, 177, nil, nil, 177, 165, nil, 259, nil, - 259, 259, nil, 259, 259, nil, 259, 165, 259, nil, - 259, nil, 259, 118, 118, 259, nil, 165, nil, 165, - 165, nil, 165, 165, nil, 165, nil, 165, 118, 165, - nil, 165, nil, nil, 165, 157, 157, 117, 117, nil, - 117, nil, nil, 118, nil, nil, nil, 118, 118, nil, - 157, 118, 117, 150, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 150, 157, nil, 117, nil, 157, - 157, 117, 117, 157, 150, 117, 150, 150, 143, 150, - 150, nil, 150, nil, 150, nil, 150, nil, 150, 143, - nil, 150, nil, 158, 158, nil, nil, nil, nil, 143, - nil, 143, 143, nil, 143, 143, nil, 143, 158, 143, - nil, 143, nil, 143, nil, nil, 143, nil, nil, nil, - 112, nil, nil, 158, nil, nil, nil, 158, 158, nil, - 112, 158, 112, 112, nil, 112, 112, nil, 112, 255, - 112, nil, 112, nil, 112, nil, nil, 112, nil, 255, - nil, 255, 255, nil, 255, 255, nil, 255, 24, 255, - nil, 255, nil, 255, nil, nil, 255, nil, 24, nil, - 24, 24, nil, 24, 24, nil, 24, 0, 24, nil, - 24, nil, 24, nil, nil, 24, nil, 0, nil, 0, - 0, nil, 0, 0, nil, 0, nil, 0, nil, 0, - nil, 0, nil, nil, 0 ] + 90, 90, 90, 11, 104, 13, 62, 62, 62, 62, + 9, 99, 5, 36, 68, 174, 90, 19, 208, 5, + 99, 19, 62, 11, 168, 168, 168, 98, 174, 13, + 11, 90, 104, 104, 68, 90, 90, 62, 36, 90, + 168, 62, 62, 196, 9, 62, 113, 9, 90, 48, + 48, 48, 112, 112, 62, 168, 196, 127, 139, 168, + 168, 98, 127, 168, 98, 48, 113, 191, 191, 191, + 157, 139, 168, 231, 231, 231, 235, 221, 221, 24, + 48, 235, 112, 191, 48, 48, 24, 112, 48, 231, + 122, 201, 201, 201, 112, 157, 157, 48, 191, 21, + 21, 121, 191, 191, 231, 128, 191, 201, 231, 231, + 130, 95, 231, 43, 95, 191, 16, 16, 16, 125, + 125, 231, 201, 131, 43, 135, 201, 201, 136, 43, + 201, 186, 16, 160, 18, 18, 18, 44, 186, 201, + 32, 32, 32, 138, 160, 67, 100, 16, 44, 160, + 18, 16, 16, 44, 141, 16, 32, 100, 223, 223, + 223, 143, 100, 108, 16, 18, 145, 108, 108, 18, + 18, 32, 66, 18, 223, 32, 32, 227, 227, 32, + 64, 63, 18, 232, 232, 232, 116, 61, 32, 223, + 116, 116, 227, 223, 223, 178, 178, 223, 70, 232, + 73, 81, 81, 81, 166, 57, 223, 227, 54, 74, + 178, 227, 227, 176, 232, 227, 53, 81, 232, 232, + 156, 156, 232, 181, 227, 178, 51, 111, 189, 178, + 178, 232, 81, 178, 190, 156, 81, 81, 119, 119, + 81, 119, 178, 110, 247, 247, 76, 194, 195, 81, + 156, 46, 46, 119, 156, 156, 78, 41, 156, 247, + 120, 120, 155, 155, 199, 200, 46, 156, 119, 96, + 202, 46, 119, 119, 247, 120, 119, 155, 247, 247, + 203, 46, 247, 118, 118, 119, 46, 34, 29, 123, + 120, 247, 155, 46, 120, 120, 155, 155, 120, 210, + 155, 184, 184, 118, 212, 184, 213, 120, 214, 155, + 14, 14, 14, 118, 14, 219, 184, 92, 118, 93, + 92, 26, 226, 25, 92, 118, 14, 82, 23, 80, + 14, 184, 88, 172, 242, 184, 184, 246, 86, 184, + 248, 14, 249, 85, 172, 83, 14, 1, 184, 193, + nil, nil, 263, 14, 172, nil, 172, 172, nil, 172, + 172, nil, 172, 263, 172, nil, 172, nil, 172, nil, + nil, 172, nil, 263, nil, 263, 263, 237, 263, 263, + nil, 263, nil, 263, nil, 263, nil, 263, 237, nil, + 263, nil, nil, nil, nil, nil, 207, nil, 237, nil, + 237, 237, nil, 237, 237, nil, 237, 207, 237, nil, + 237, nil, 237, nil, nil, 237, nil, 207, nil, 207, + 207, 251, 207, 207, nil, 207, nil, 207, nil, 207, + nil, 207, 251, nil, 207, nil, nil, nil, nil, nil, + 262, nil, 251, nil, 251, 251, nil, 251, 251, nil, + 251, 262, 251, nil, 251, nil, 251, nil, nil, 251, + nil, 262, nil, 262, 262, 198, 262, 262, nil, 262, + nil, 262, nil, 262, nil, 262, 198, nil, 262, nil, + nil, nil, nil, nil, 153, nil, 198, nil, 198, 198, + nil, 198, 198, nil, 198, 153, 198, nil, 198, nil, + 198, nil, nil, 198, nil, 153, nil, 153, 153, 149, + 153, 153, nil, 153, nil, 153, nil, 153, nil, 153, + 149, nil, 153, nil, nil, nil, nil, nil, 205, nil, + 149, nil, 149, 149, nil, 149, 149, nil, 149, 205, + 149, nil, 149, nil, 149, nil, nil, 149, nil, 205, + nil, 205, 205, nil, 205, 205, nil, 205, 258, 205, + nil, 205, nil, 205, nil, nil, 205, nil, 258, nil, + 258, 258, nil, 258, 258, nil, 258, 117, 258, nil, + 258, nil, 258, nil, nil, 258, nil, 117, nil, 117, + 117, nil, 117, 117, nil, 117, 28, 117, nil, 117, + nil, 117, nil, nil, 117, nil, 28, nil, 28, 28, + nil, 28, 28, nil, 28, 0, 28, nil, 28, nil, + 28, nil, nil, 28, nil, 0, nil, 0, 0, nil, + 0, 0, nil, 0, nil, 0, nil, 0, nil, 0, + nil, nil, 0 ] racc_action_pointer = [ - 539, 352, nil, nil, nil, 144, nil, nil, 46, -15, - nil, 2, nil, -2, nil, 67, nil, 15, 66, nil, - 346, 115, 328, nil, 520, 22, 273, 23, nil, nil, - nil, nil, 137, nil, 232, 3, nil, nil, nil, nil, - nil, 244, nil, 268, 93, nil, 4, nil, nil, 55, - 186, nil, 184, nil, nil, 169, nil, nil, 165, nil, - nil, 138, 142, 61, 117, nil, nil, nil, 115, 12, - 121, nil, 123, 152, 202, nil, nil, 225, 259, 79, - 305, 325, nil, 354, 325, nil, 339, nil, 189, nil, - 334, 239, nil, 197, 311, nil, 193, 249, nil, nil, - nil, 6, nil, nil, nil, 65, 278, nil, 200, 210, - 6, -6, 482, nil, nil, 269, 2, 414, 390, 108, - 68, 260, nil, nil, 327, 52, 8, 80, nil, nil, - nil, 91, 86, 86, nil, nil, 88, 2, 103, 109, - nil, nil, 93, 451, nil, nil, nil, nil, nil, nil, - 426, nil, 102, nil, nil, 221, nil, 412, 470, nil, - nil, nil, nil, 163, nil, 369, nil, nil, 73, nil, - nil, 5, nil, nil, 155, nil, 174, 334, nil, nil, - nil, 317, nil, 178, nil, nil, 202, 173, 119, nil, - 212, 353, 212, 217, 51, nil, 230, 245, 217, 250, - 143, nil, 211, nil, 172, nil, nil, nil, 255, nil, - 273, 275, 282, 288, nil, 282, nil, nil, 183, nil, - 144, nil, nil, 317, 195, nil, nil, nil, nil, 131, - 125, nil, nil, 57, nil, 274, nil, 338, nil, nil, - nil, nil, nil, 353, nil, 353, 295, 355, 311, nil, - nil, nil, nil, nil, nil, 501, nil, nil, nil, 350, - 255, nil, nil ] + 597, 334, nil, nil, nil, -26, nil, nil, nil, 6, + nil, -15, nil, -14, 308, nil, 114, nil, 132, 15, + nil, 96, nil, 328, 41, 281, 315, nil, 578, 282, + nil, nil, 138, nil, 252, nil, 3, nil, nil, nil, + nil, 251, nil, 91, 115, nil, 248, nil, 47, nil, + nil, 216, nil, 206, 206, nil, nil, 203, nil, nil, + nil, 166, 4, 160, 174, nil, 151, 124, 12, nil, + 177, nil, nil, 179, 207, nil, 225, nil, 235, nil, + 323, 199, 289, 335, nil, 343, 316, nil, 294, nil, + -2, nil, 279, 313, nil, 73, 263, nil, 23, -4, + 124, nil, nil, nil, -16, nil, nil, nil, 119, nil, + 220, 222, 49, 28, nil, nil, 181, 559, 280, 235, + 257, 96, 80, 280, nil, 116, nil, 24, 99, nil, + 100, 84, nil, nil, nil, 115, 111, nil, 122, 49, + nil, 133, nil, 140, nil, 145, nil, nil, nil, 502, + nil, nil, nil, 477, nil, 259, 217, 47, nil, nil, + 111, nil, nil, nil, nil, nil, 202, nil, 22, nil, + nil, nil, 326, nil, 5, nil, 191, nil, 192, nil, + nil, 214, nil, nil, 298, nil, 121, nil, nil, 221, + 196, 65, nil, 336, 234, 225, 33, nil, 458, 257, + 258, 89, 263, 242, nil, 521, nil, 389, -3, nil, + 278, nil, 283, 285, 287, nil, nil, nil, nil, 286, + nil, 68, nil, 156, nil, nil, 316, 174, nil, nil, + nil, 71, 181, nil, nil, 43, nil, 370, nil, nil, + nil, nil, 324, nil, nil, nil, 331, 241, 333, 335, + nil, 414, nil, nil, nil, nil, nil, nil, 540, nil, + nil, nil, 433, 345, nil, nil ] racc_action_default = [ - -135, -161, -16, -5, -129, -161, -6, -7, -161, -161, - -8, -161, -9, -39, -10, -161, -11, -161, -38, -12, - -161, -161, -161, -13, -1, -161, -35, -161, -14, -2, - -15, -3, -161, -128, -135, -135, -133, -130, -132, -134, - -34, -161, -37, -135, -135, -154, -161, -27, -19, -161, - -20, -90, -21, -91, -22, -58, -24, -25, -161, -26, - -28, -87, -161, -161, -81, -92, -83, -85, -80, -58, - -161, -98, -84, -79, -59, -118, -86, -82, -161, -161, - -67, -161, -119, -121, -67, -4, -135, -36, -67, -66, - -161, -161, -148, -161, -161, -146, -161, -135, -58, -52, - -51, -161, -43, -45, -42, -161, -161, -18, -161, -161, - -161, -161, -161, -156, -71, -161, -161, -161, -161, -161, - -159, -161, -68, 263, -161, -159, -136, -161, -137, -116, - -54, -159, -161, -62, -63, -65, -61, -58, -64, -60, - -59, -117, -56, -161, -153, -152, -149, -150, -151, -147, - -161, -131, -161, -48, -47, -161, -41, -161, -161, -40, - -17, -93, -23, -161, -29, -161, -155, -157, -161, -158, - -89, -161, -113, -112, -58, -115, -161, -161, -114, -106, - -107, -161, -100, -161, -104, -94, -161, -160, -161, -120, - -161, -145, -143, -161, -161, -140, -161, -161, -67, -161, - -57, -125, -161, -127, -161, -46, -44, -49, -75, -77, - -74, -78, -73, -76, -50, -96, -72, -88, -161, -109, - -159, -101, -99, -161, -161, -32, -69, -70, -33, -161, - -161, -138, -139, -161, -123, -161, -31, -159, -30, -55, - -124, -126, -95, -161, -111, -161, -161, -158, -161, -105, - -144, -142, -141, -122, -53, -161, -108, -110, -103, -161, - -161, -102, -97 ] + -138, -164, -15, -3, -132, -164, -16, -5, -6, -164, + -7, -164, -8, -164, -39, -9, -164, -10, -164, -38, + -11, -164, -12, -164, -164, -35, -164, -13, -1, -164, + -14, -2, -164, -131, -138, -136, -138, -135, -133, -137, + -34, -164, -37, -138, -138, -157, -164, -27, -164, -19, + -92, -20, -93, -21, -59, -22, -24, -164, -25, -26, + -28, -83, -164, -88, -164, -94, -89, -82, -59, -84, + -81, -58, -86, -85, -60, -121, -164, -100, -80, -87, + -164, -164, -68, -124, -122, -164, -138, -36, -68, -4, + -68, -67, -164, -164, -151, -164, -164, -149, -164, -164, + -138, -59, -52, -51, -164, -43, -45, -42, -164, -18, + -164, -164, -164, -164, -159, -72, -164, -164, -164, -164, + -164, -164, -162, -164, -69, -164, 266, -139, -164, -140, + -162, -56, -119, -118, -54, -162, -164, -120, -63, -59, + -64, -62, -66, -65, -60, -61, -152, -156, -155, -164, + -153, -154, -150, -164, -134, -164, -164, -164, -48, -47, + -164, -41, -40, -17, -95, -23, -164, -29, -164, -158, + -160, -161, -164, -91, -164, -115, -59, -114, -164, -117, + -116, -164, -108, -109, -164, -102, -164, -106, -96, -164, + -163, -164, -123, -148, -146, -164, -164, -143, -164, -164, + -164, -57, -164, -68, -128, -164, -130, -164, -77, -49, + -76, -78, -75, -79, -74, -50, -46, -44, -73, -98, + -90, -162, -111, -164, -103, -101, -164, -164, -32, -70, + -71, -164, -164, -141, -142, -164, -126, -164, -33, -30, + -55, -31, -162, -127, -129, -97, -164, -164, -164, -161, + -113, -164, -107, -147, -145, -144, -125, -53, -164, -112, + -110, -105, -164, -164, -104, -99 ] racc_goto_table = [ - 24, 85, 59, 60, 37, 76, 180, 76, 135, 120, - 82, 182, 57, 125, 71, 20, 78, 131, 195, 176, - 184, 115, 76, 186, 130, 129, 48, 56, 190, 207, - 214, 89, 226, 168, 197, 59, 60, 101, 106, 76, - 206, 42, 100, 100, 62, 57, 242, 181, 109, 199, - 142, 179, 141, 76, 129, 129, 162, 99, 99, 108, - 56, 220, 114, 29, 83, 34, 219, 127, 90, 76, - 35, 94, 171, 193, 221, 194, 40, 139, 119, 176, - 149, 141, 141, 184, 146, 86, nil, 138, nil, nil, - 134, 152, 151, nil, 129, 129, 100, 92, 95, 59, - nil, 164, 136, nil, 133, 59, 178, 178, nil, 57, - nil, 99, 165, 189, 129, 57, 175, 175, 129, nil, - 135, 213, 213, 245, 56, 252, 249, 237, nil, nil, - 56, 173, 173, 172, 172, 257, 239, 129, 246, nil, - 254, 141, 85, 202, nil, 141, 212, 212, 176, 128, - 204, 145, nil, nil, 100, nil, 211, 211, 76, 209, - 209, 129, nil, nil, 141, nil, 178, 216, nil, 99, - 178, 210, 210, 208, 208, nil, 175, nil, 76, 85, - 175, 85, nil, 129, nil, nil, nil, 227, 141, 139, - nil, 173, nil, 172, nil, 173, 235, 172, nil, 138, - nil, nil, 134, nil, nil, nil, nil, nil, 76, nil, - 141, nil, 85, 178, 136, nil, 133, 244, nil, 76, - 76, nil, nil, 175, nil, nil, nil, nil, 250, 251, - nil, nil, nil, nil, nil, 178, 85, 85, 173, nil, - 172, nil, nil, nil, nil, 175, nil, nil, 259, nil, - nil, nil, nil, nil, nil, 260, nil, nil, nil, nil, - 173, nil, 172 ] + 28, 89, 183, 168, 197, 59, 23, 185, 122, 58, + 38, 34, 84, 77, 130, 80, 135, 140, 116, 31, + 56, 142, 60, 134, 79, 49, 79, 104, 108, 91, + 86, 229, 181, 187, 189, 209, 215, 59, 103, 103, + 79, 58, 199, 217, 42, 111, 64, 202, 245, 102, + 102, 184, 56, 94, 60, 97, 79, 110, 200, 115, + 131, 222, 182, 165, 221, 83, 128, 93, 36, 96, + 79, 224, 174, 195, 196, 40, 152, 146, 121, nil, + nil, 145, 211, 211, 157, 143, nil, nil, nil, 79, + nil, 181, nil, 133, nil, 103, 141, 187, 148, 154, + nil, nil, nil, 59, nil, 129, 102, 58, 247, 59, + 180, 180, 255, 58, 179, 179, 192, 172, 56, nil, + nil, 167, 133, 133, 56, 177, 177, nil, 140, 242, + 259, nil, 142, 248, 240, nil, nil, nil, nil, nil, + 252, nil, nil, nil, nil, 89, 214, 214, nil, 205, + 213, 213, nil, 207, 257, 103, nil, nil, 133, 133, + 181, 212, 212, nil, nil, 218, 102, nil, nil, 180, + nil, nil, nil, 179, nil, 180, 79, nil, 89, 179, + 89, 133, 132, nil, 177, nil, nil, 133, 230, nil, + 177, nil, 145, nil, 138, nil, 143, 137, 237, 79, + nil, nil, nil, nil, 133, nil, nil, 141, nil, nil, + 89, 132, 132, nil, nil, nil, nil, nil, 180, nil, + 250, nil, 179, 175, 175, nil, 137, 137, 253, 254, + 133, 79, nil, 177, nil, 89, 89, nil, 180, 79, + 79, nil, 179, nil, nil, nil, nil, 208, 208, nil, + 133, 262, nil, 177, nil, nil, nil, nil, 263, 210, + 210, nil, 137, 137, nil, nil, nil, nil, nil, nil, + 132, nil, nil, nil, nil, nil, 132, nil, nil, nil, + nil, nil, 175, nil, nil, 137, nil, nil, 175, nil, + nil, 137, nil, 132, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 138, nil, nil, 137, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 132, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 175, nil, nil, 137, nil, nil, nil, nil, 132, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 175, nil, nil, 137 ] racc_goto_check = [ - 2, 4, 23, 24, 64, 24, 57, 24, 43, 28, - 23, 53, 22, 28, 44, 1, 44, 28, 67, 55, - 55, 46, 24, 29, 39, 49, 17, 21, 29, 38, - 38, 44, 45, 47, 29, 23, 24, 33, 33, 24, - 34, 32, 22, 22, 50, 22, 51, 52, 44, 27, - 26, 56, 48, 24, 49, 49, 20, 21, 21, 17, - 21, 58, 44, 3, 59, 25, 57, 60, 61, 24, - 62, 63, 18, 65, 53, 66, 5, 23, 44, 55, - 68, 48, 48, 55, 69, 25, nil, 22, nil, nil, - 42, 33, 64, nil, 49, 49, 22, 3, 3, 23, - nil, 24, 21, nil, 41, 23, 23, 23, nil, 22, - nil, 21, 2, 23, 49, 22, 22, 22, 49, nil, - 43, 48, 48, 29, 21, 67, 55, 28, nil, nil, - 21, 21, 21, 41, 41, 57, 39, 49, 47, nil, - 29, 48, 4, 2, nil, 48, 23, 23, 55, 3, - 2, 25, nil, nil, 22, nil, 22, 22, 24, 42, - 42, 49, nil, nil, 48, nil, 23, 44, nil, 21, - 23, 21, 21, 41, 41, nil, 22, nil, 24, 4, - 22, 4, nil, 49, nil, nil, nil, 44, 48, 23, - nil, 21, nil, 41, nil, 21, 2, 41, nil, 22, - nil, nil, 42, nil, nil, nil, nil, nil, 24, nil, - 48, nil, 4, 23, 21, nil, 41, 44, nil, 24, - 24, nil, nil, 22, nil, nil, nil, nil, 44, 44, - nil, nil, nil, nil, nil, 23, 4, 4, 21, nil, - 41, nil, nil, nil, nil, 22, nil, nil, 2, nil, - nil, nil, nil, nil, nil, 2, nil, nil, nil, nil, - 21, nil, 41 ] + 2, 4, 58, 48, 68, 23, 1, 54, 28, 22, + 65, 25, 23, 45, 28, 45, 28, 43, 47, 3, + 21, 44, 24, 39, 24, 17, 24, 33, 33, 45, + 25, 46, 56, 56, 29, 38, 38, 23, 22, 22, + 24, 22, 29, 34, 32, 45, 51, 29, 52, 21, + 21, 53, 21, 3, 24, 3, 24, 17, 27, 45, + 26, 58, 57, 20, 59, 60, 61, 62, 63, 64, + 24, 54, 18, 66, 67, 5, 69, 70, 45, nil, + nil, 23, 43, 43, 33, 22, nil, nil, nil, 24, + nil, 56, nil, 50, nil, 22, 21, 56, 25, 65, + nil, nil, nil, 23, nil, 3, 21, 22, 48, 23, + 23, 23, 68, 22, 22, 22, 23, 2, 21, nil, + nil, 24, 50, 50, 21, 21, 21, nil, 43, 28, + 58, nil, 44, 29, 39, nil, nil, nil, nil, nil, + 56, nil, nil, nil, nil, 4, 23, 23, nil, 2, + 22, 22, nil, 2, 29, 22, nil, nil, 50, 50, + 56, 21, 21, nil, nil, 45, 21, nil, nil, 23, + nil, nil, nil, 22, nil, 23, 24, nil, 4, 22, + 4, 50, 49, nil, 21, nil, nil, 50, 45, nil, + 21, nil, 23, nil, 42, nil, 22, 41, 2, 24, + nil, nil, nil, nil, 50, nil, nil, 21, nil, nil, + 4, 49, 49, nil, nil, nil, nil, nil, 23, nil, + 45, nil, 22, 42, 42, nil, 41, 41, 45, 45, + 50, 24, nil, 21, nil, 4, 4, nil, 23, 24, + 24, nil, 22, nil, nil, nil, nil, 49, 49, nil, + 50, 2, nil, 21, nil, nil, nil, nil, 2, 42, + 42, nil, 41, 41, nil, nil, nil, nil, nil, nil, + 49, nil, nil, nil, nil, nil, 49, nil, nil, nil, + nil, nil, 42, nil, nil, 41, nil, nil, 42, nil, + nil, 41, nil, 49, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 42, nil, nil, 41, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, 49, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 42, nil, nil, 41, nil, nil, nil, nil, 49, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 42, nil, nil, 41 ] racc_goto_pointer = [ - nil, 15, 0, 63, -23, 67, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 13, -44, nil, - -54, 14, -1, -11, -10, 60, -38, -93, -71, -97, - nil, nil, 30, -6, -115, nil, nil, nil, -128, -64, - nil, 16, 2, -80, -1, -155, -42, -82, -36, -63, - 29, -169, -71, -107, nil, -98, -66, -111, -116, 43, - -19, 34, 62, 36, -4, -53, -51, -108, -13, -7 ] + nil, 6, 0, 19, -27, 64, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 11, -46, nil, + -49, 6, -5, -9, 8, 6, -30, -73, -74, -88, + nil, nil, 31, -16, -117, nil, nil, nil, -120, -67, + nil, 107, 104, -73, -69, -3, -159, -44, -113, 92, + 3, 30, -171, -69, -113, nil, -87, -57, -117, -114, + 44, -20, 33, 59, 33, 1, -54, -53, -123, -19, + -15 ] racc_goto_default = [ - nil, nil, nil, 104, 31, 3, 6, 7, 10, 12, - 14, 16, 19, 23, 28, 30, 2, nil, 50, 52, - 54, 68, 72, 73, 22, 27, nil, nil, nil, nil, - 9, 11, nil, nil, 102, 155, 103, 105, nil, nil, - 132, 64, 66, 67, nil, 122, nil, nil, 77, 61, - nil, nil, nil, nil, 183, 70, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ] + nil, nil, nil, 107, 3, 7, 8, 10, 12, 15, + 17, 20, 22, 27, 30, 2, 6, nil, 51, 53, + 55, 70, 73, 78, 26, 29, nil, nil, nil, nil, + 11, 13, nil, nil, 105, 160, 106, 99, nil, nil, + 136, 66, 67, 69, 72, nil, 124, nil, nil, 61, + 63, nil, nil, nil, nil, 186, 76, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil ] racc_token_table = { false => 0, @@ -731,11 +766,12 @@ racc_token_table = { :CLASSREF => 46, :NOT => 47, :OR => 48, - :AND => 49 } + :AND => 49, + :UNDEF => 50 } racc_use_result_var = true -racc_nt_base = 50 +racc_nt_base = 51 Racc_arg = [ racc_action_table, @@ -804,6 +840,7 @@ Racc_token_to_s_table = [ 'NOT', 'OR', 'AND', +'UNDEF', '$start', 'program', 'statements', @@ -845,6 +882,7 @@ Racc_token_to_s_table = [ 'simplervalue', 'resourceinst', 'resourcename', +'undef', 'type', 'selector', 'array', @@ -881,7 +919,7 @@ Racc_debug_parser = false # reduce 0 omitted -module_eval <<'.,.,', 'grammar.ra', 33 +module_eval <<'.,.,', 'grammar.ra', 30 def _reduce_1( val, _values, result ) if val[0] # Make sure we always return an array. @@ -905,7 +943,7 @@ module_eval <<'.,.,', 'grammar.ra', 33 # reduce 3 omitted -module_eval <<'.,.,', 'grammar.ra', 49 +module_eval <<'.,.,', 'grammar.ra', 46 def _reduce_4( val, _values, result ) if val[0] and val[1] if val[0].instance_of?(AST::ASTArray) @@ -946,7 +984,7 @@ module_eval <<'.,.,', 'grammar.ra', 49 # reduce 16 omitted -module_eval <<'.,.,', 'grammar.ra', 71 +module_eval <<'.,.,', 'grammar.ra', 68 def _reduce_17( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, @@ -957,7 +995,7 @@ module_eval <<'.,.,', 'grammar.ra', 71 end .,., -module_eval <<'.,.,', 'grammar.ra', 77 +module_eval <<'.,.,', 'grammar.ra', 74 def _reduce_18( val, _values, result ) result = ast AST::Function, :name => val[0], @@ -967,7 +1005,7 @@ module_eval <<'.,.,', 'grammar.ra', 77 end .,., -module_eval <<'.,.,', 'grammar.ra', 84 +module_eval <<'.,.,', 'grammar.ra', 81 def _reduce_19( val, _values, result ) args = aryfy(val[1]) result = ast AST::Function, @@ -984,7 +1022,7 @@ module_eval <<'.,.,', 'grammar.ra', 84 # reduce 22 omitted -module_eval <<'.,.,', 'grammar.ra', 94 +module_eval <<'.,.,', 'grammar.ra', 91 def _reduce_23( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line @@ -999,7 +1037,7 @@ module_eval <<'.,.,', 'grammar.ra', 94 # reduce 26 omitted -module_eval <<'.,.,', 'grammar.ra', 101 +module_eval <<'.,.,', 'grammar.ra', 98 def _reduce_27( val, _values, result ) result = ast AST::Name, :value => val[0] result @@ -1008,7 +1046,7 @@ module_eval <<'.,.,', 'grammar.ra', 101 # reduce 28 omitted -module_eval <<'.,.,', 'grammar.ra', 112 +module_eval <<'.,.,', 'grammar.ra', 109 def _reduce_29( val, _values, result ) unless val[0].is_a?(AST::ASTArray) val[0] = aryfy(val[0]) @@ -1021,7 +1059,7 @@ module_eval <<'.,.,', 'grammar.ra', 112 end .,., -module_eval <<'.,.,', 'grammar.ra', 133 +module_eval <<'.,.,', 'grammar.ra', 130 def _reduce_30( val, _values, result ) array = val[2] if array.instance_of?(AST::ResourceInst) @@ -1045,7 +1083,7 @@ module_eval <<'.,.,', 'grammar.ra', 133 end .,., -module_eval <<'.,.,', 'grammar.ra', 136 +module_eval <<'.,.,', 'grammar.ra', 133 def _reduce_31( val, _values, result ) # This is a deprecated syntax. error "All resource specifications require names" @@ -1053,7 +1091,7 @@ module_eval <<'.,.,', 'grammar.ra', 136 end .,., -module_eval <<'.,.,', 'grammar.ra', 139 +module_eval <<'.,.,', 'grammar.ra', 136 def _reduce_32( val, _values, result ) # a defaults setting for a type result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2]) @@ -1061,14 +1099,14 @@ module_eval <<'.,.,', 'grammar.ra', 139 end .,., -module_eval <<'.,.,', 'grammar.ra', 144 +module_eval <<'.,.,', 'grammar.ra', 141 def _reduce_33( val, _values, result ) result = ast AST::ResourceOverride, :object => val[0], :params => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 171 +module_eval <<'.,.,', 'grammar.ra', 168 def _reduce_34( val, _values, result ) type = val[0] @@ -1096,21 +1134,21 @@ module_eval <<'.,.,', 'grammar.ra', 171 end .,., -module_eval <<'.,.,', 'grammar.ra', 172 +module_eval <<'.,.,', 'grammar.ra', 169 def _reduce_35( val, _values, result ) result = :virtual result end .,., -module_eval <<'.,.,', 'grammar.ra', 173 +module_eval <<'.,.,', 'grammar.ra', 170 def _reduce_36( val, _values, result ) result = :exported result end .,., -module_eval <<'.,.,', 'grammar.ra', 196 +module_eval <<'.,.,', 'grammar.ra', 193 def _reduce_37( val, _values, result ) if val[0] =~ /^[a-z]/ Puppet.warning addcontext("Collection names must now be capitalized") @@ -1137,7 +1175,7 @@ module_eval <<'.,.,', 'grammar.ra', 196 # reduce 39 omitted -module_eval <<'.,.,', 'grammar.ra', 207 +module_eval <<'.,.,', 'grammar.ra', 204 def _reduce_40( val, _values, result ) if val[1] result = val[1] @@ -1149,7 +1187,7 @@ module_eval <<'.,.,', 'grammar.ra', 207 end .,., -module_eval <<'.,.,', 'grammar.ra', 215 +module_eval <<'.,.,', 'grammar.ra', 212 def _reduce_41( val, _values, result ) if val[1] result = val[1] @@ -1165,7 +1203,7 @@ module_eval <<'.,.,', 'grammar.ra', 215 # reduce 43 omitted -module_eval <<'.,.,', 'grammar.ra', 223 +module_eval <<'.,.,', 'grammar.ra', 220 def _reduce_44( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] result @@ -1174,7 +1212,7 @@ module_eval <<'.,.,', 'grammar.ra', 223 # reduce 45 omitted -module_eval <<'.,.,', 'grammar.ra', 229 +module_eval <<'.,.,', 'grammar.ra', 226 def _reduce_46( val, _values, result ) result = val[1] result.parens = true @@ -1186,7 +1224,7 @@ module_eval <<'.,.,', 'grammar.ra', 229 # reduce 48 omitted -module_eval <<'.,.,', 'grammar.ra', 237 +module_eval <<'.,.,', 'grammar.ra', 234 def _reduce_49( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr @@ -1195,7 +1233,7 @@ module_eval <<'.,.,', 'grammar.ra', 237 end .,., -module_eval <<'.,.,', 'grammar.ra', 242 +module_eval <<'.,.,', 'grammar.ra', 239 def _reduce_50( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr @@ -1208,7 +1246,7 @@ module_eval <<'.,.,', 'grammar.ra', 242 # reduce 52 omitted -module_eval <<'.,.,', 'grammar.ra', 249 +module_eval <<'.,.,', 'grammar.ra', 246 def _reduce_53( val, _values, result ) result = ast AST::ResourceInst, :children => [val[0],val[2]] result @@ -1217,7 +1255,7 @@ module_eval <<'.,.,', 'grammar.ra', 249 # reduce 54 omitted -module_eval <<'.,.,', 'grammar.ra', 259 +module_eval <<'.,.,', 'grammar.ra', 256 def _reduce_55( val, _values, result ) if val[0].instance_of?(AST::ResourceInst) result = ast AST::ASTArray, :children => [val[0],val[2]] @@ -1233,21 +1271,26 @@ module_eval <<'.,.,', 'grammar.ra', 259 # reduce 57 omitted -module_eval <<'.,.,', 'grammar.ra', 266 +module_eval <<'.,.,', 'grammar.ra', 263 def _reduce_58( val, _values, result ) - result = ast AST::Name, :value => val[0] + result = ast AST::Undef, :value => :undef result end .,., -module_eval <<'.,.,', 'grammar.ra', 270 +module_eval <<'.,.,', 'grammar.ra', 267 def _reduce_59( val, _values, result ) - result = ast AST::Type, :value => val[0] + result = ast AST::Name, :value => val[0] result end .,., - # reduce 60 omitted +module_eval <<'.,.,', 'grammar.ra', 271 + def _reduce_60( val, _values, result ) + result = ast AST::Type, :value => val[0] + result + end +.,., # reduce 61 omitted @@ -1259,8 +1302,10 @@ module_eval <<'.,.,', 'grammar.ra', 270 # reduce 65 omitted -module_eval <<'.,.,', 'grammar.ra', 286 - def _reduce_66( val, _values, result ) + # reduce 66 omitted + +module_eval <<'.,.,', 'grammar.ra', 287 + def _reduce_67( val, _values, result ) if val[0] =~ /::/ raise Puppet::ParseError, "Cannot assign to variables in other namespaces" end @@ -1271,22 +1316,22 @@ module_eval <<'.,.,', 'grammar.ra', 286 end .,., -module_eval <<'.,.,', 'grammar.ra', 291 - def _reduce_67( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 292 + def _reduce_68( val, _values, result ) result = ast AST::ASTArray result end .,., -module_eval <<'.,.,', 'grammar.ra', 291 - def _reduce_68( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 292 + def _reduce_69( val, _values, result ) result = val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 300 - def _reduce_69( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 301 + def _reduce_70( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1297,17 +1342,17 @@ module_eval <<'.,.,', 'grammar.ra', 300 end .,., -module_eval <<'.,.,', 'grammar.ra', 304 - def _reduce_70( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 305 + def _reduce_71( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., - # reduce 71 omitted + # reduce 72 omitted -module_eval <<'.,.,', 'grammar.ra', 313 - def _reduce_72( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 314 + def _reduce_73( val, _values, result ) if val[0].instance_of?(AST::ASTArray) result = val[0].push(val[2]) else @@ -1317,8 +1362,6 @@ module_eval <<'.,.,', 'grammar.ra', 313 end .,., - # reduce 73 omitted - # reduce 74 omitted # reduce 75 omitted @@ -1347,8 +1390,12 @@ module_eval <<'.,.,', 'grammar.ra', 313 # reduce 87 omitted -module_eval <<'.,.,', 'grammar.ra', 339 - def _reduce_88( val, _values, result ) + # reduce 88 omitted + + # reduce 89 omitted + +module_eval <<'.,.,', 'grammar.ra', 341 + def _reduce_90( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], @@ -1358,8 +1405,8 @@ module_eval <<'.,.,', 'grammar.ra', 339 end .,., -module_eval <<'.,.,', 'grammar.ra', 344 - def _reduce_89( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 346 + def _reduce_91( val, _values, result ) result = ast AST::Function, :name => val[0], :arguments => AST::ASTArray.new({}), @@ -1368,44 +1415,44 @@ module_eval <<'.,.,', 'grammar.ra', 344 end .,., -module_eval <<'.,.,', 'grammar.ra', 348 - def _reduce_90( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 350 + def _reduce_92( val, _values, result ) result = ast AST::String, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 350 - def _reduce_91( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 352 + def _reduce_93( val, _values, result ) result = ast AST::FlatString, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 354 - def _reduce_92( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 356 + def _reduce_94( val, _values, result ) result = ast AST::Boolean, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 359 - def _reduce_93( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 361 + def _reduce_95( val, _values, result ) Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceRef, :type => val[0], :title => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 361 - def _reduce_94( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 363 + def _reduce_96( val, _values, result ) result = ast AST::ResourceRef, :type => val[0], :title => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 374 - def _reduce_95( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 376 + def _reduce_97( val, _values, result ) args = { :test => val[1], :statements => val[3] @@ -1420,19 +1467,19 @@ module_eval <<'.,.,', 'grammar.ra', 374 end .,., - # reduce 96 omitted + # reduce 98 omitted -module_eval <<'.,.,', 'grammar.ra', 379 - def _reduce_97( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 381 + def _reduce_99( val, _values, result ) result = ast AST::Else, :statements => val[2] result end .,., - # reduce 98 omitted + # reduce 100 omitted -module_eval <<'.,.,', 'grammar.ra', 391 - def _reduce_99( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 393 + def _reduce_101( val, _values, result ) options = val[3] unless options.instance_of?(AST::ASTArray) options = ast AST::ASTArray, :children => [val[3]] @@ -1442,10 +1489,10 @@ module_eval <<'.,.,', 'grammar.ra', 391 end .,., - # reduce 100 omitted + # reduce 102 omitted -module_eval <<'.,.,', 'grammar.ra', 401 - def _reduce_101( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 403 + def _reduce_103( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push val[1] result = val[0] @@ -1456,15 +1503,15 @@ module_eval <<'.,.,', 'grammar.ra', 401 end .,., -module_eval <<'.,.,', 'grammar.ra', 405 - def _reduce_102( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 407 + def _reduce_104( val, _values, result ) result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., -module_eval <<'.,.,', 'grammar.ra', 410 - def _reduce_103( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 412 + def _reduce_105( val, _values, result ) result = ast(AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) @@ -1473,10 +1520,10 @@ module_eval <<'.,.,', 'grammar.ra', 410 end .,., - # reduce 104 omitted + # reduce 106 omitted -module_eval <<'.,.,', 'grammar.ra', 420 - def _reduce_105( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 422 + def _reduce_107( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1487,26 +1534,26 @@ module_eval <<'.,.,', 'grammar.ra', 420 end .,., -module_eval <<'.,.,', 'grammar.ra', 424 - def _reduce_106( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 426 + def _reduce_108( val, _values, result ) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., - # reduce 107 omitted + # reduce 109 omitted -module_eval <<'.,.,', 'grammar.ra', 426 - def _reduce_108( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 428 + def _reduce_110( val, _values, result ) result = val[1] result end .,., - # reduce 109 omitted + # reduce 111 omitted -module_eval <<'.,.,', 'grammar.ra', 437 - def _reduce_110( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 439 + def _reduce_112( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1517,17 +1564,13 @@ module_eval <<'.,.,', 'grammar.ra', 437 end .,., -module_eval <<'.,.,', 'grammar.ra', 441 - def _reduce_111( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 443 + def _reduce_113( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., - # reduce 112 omitted - - # reduce 113 omitted - # reduce 114 omitted # reduce 115 omitted @@ -1536,29 +1579,35 @@ module_eval <<'.,.,', 'grammar.ra', 441 # reduce 117 omitted -module_eval <<'.,.,', 'grammar.ra', 451 - def _reduce_118( val, _values, result ) + # reduce 118 omitted + + # reduce 119 omitted + + # reduce 120 omitted + +module_eval <<'.,.,', 'grammar.ra', 454 + def _reduce_121( val, _values, result ) result = ast AST::Default, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 453 - def _reduce_119( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 456 + def _reduce_122( val, _values, result ) result = [val[0].value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 457 - def _reduce_120( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 460 + def _reduce_123( val, _values, result ) results = val[0] << val[2].value result end .,., -module_eval <<'.,.,', 'grammar.ra', 465 - def _reduce_121( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 468 + def _reduce_124( val, _values, result ) val[1].each do |file| import(file) end @@ -1568,8 +1617,8 @@ module_eval <<'.,.,', 'grammar.ra', 465 end .,., -module_eval <<'.,.,', 'grammar.ra', 475 - def _reduce_122( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 478 + def _reduce_125( val, _values, result ) interp.newdefine classname(val[1]), :arguments => val[2], :code => val[4] @lexer.indefine = false result = nil @@ -1579,8 +1628,8 @@ module_eval <<'.,.,', 'grammar.ra', 475 end .,., -module_eval <<'.,.,', 'grammar.ra', 479 - def _reduce_123( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 482 + def _reduce_126( val, _values, result ) interp.newdefine classname(val[1]), :arguments => val[2] @lexer.indefine = false result = nil @@ -1588,8 +1637,8 @@ module_eval <<'.,.,', 'grammar.ra', 479 end .,., -module_eval <<'.,.,', 'grammar.ra', 487 - def _reduce_124( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 490 + def _reduce_127( val, _values, result ) # Our class gets defined in the parent namespace, not our own. @lexer.namepop interp.newclass classname(val[1]), :code => val[4], :parent => val[2] @@ -1598,8 +1647,8 @@ module_eval <<'.,.,', 'grammar.ra', 487 end .,., -module_eval <<'.,.,', 'grammar.ra', 492 - def _reduce_125( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 495 + def _reduce_128( val, _values, result ) # Our class gets defined in the parent namespace, not our own. @lexer.namepop interp.newclass classname(val[1]), :parent => val[2] @@ -1608,30 +1657,30 @@ module_eval <<'.,.,', 'grammar.ra', 492 end .,., -module_eval <<'.,.,', 'grammar.ra', 497 - def _reduce_126( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 500 + def _reduce_129( val, _values, result ) interp.newnode val[1], :parent => val[2], :code => val[4] result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 500 - def _reduce_127( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 503 + def _reduce_130( val, _values, result ) interp.newnode val[1], :parent => val[2] result = nil result end .,., - # reduce 128 omitted + # reduce 131 omitted - # reduce 129 omitted + # reduce 132 omitted - # reduce 130 omitted + # reduce 133 omitted -module_eval <<'.,.,', 'grammar.ra', 512 - def _reduce_131( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 515 + def _reduce_134( val, _values, result ) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] @@ -1639,47 +1688,47 @@ module_eval <<'.,.,', 'grammar.ra', 512 end .,., - # reduce 132 omitted + # reduce 135 omitted - # reduce 133 omitted + # reduce 136 omitted - # reduce 134 omitted + # reduce 137 omitted -module_eval <<'.,.,', 'grammar.ra', 520 - def _reduce_135( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 523 + def _reduce_138( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 524 - def _reduce_136( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 527 + def _reduce_139( val, _values, result ) result = ast AST::ASTArray, :children => [] result end .,., - # reduce 137 omitted + # reduce 140 omitted -module_eval <<'.,.,', 'grammar.ra', 529 - def _reduce_138( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 532 + def _reduce_141( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 533 - def _reduce_139( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 536 + def _reduce_142( val, _values, result ) result = val[1] result = [result] unless result[0].is_a?(Array) result end .,., - # reduce 140 omitted + # reduce 143 omitted -module_eval <<'.,.,', 'grammar.ra', 540 - def _reduce_141( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 543 + def _reduce_144( val, _values, result ) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] @@ -1687,71 +1736,71 @@ module_eval <<'.,.,', 'grammar.ra', 540 end .,., -module_eval <<'.,.,', 'grammar.ra', 545 - def _reduce_142( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 548 + def _reduce_145( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0], val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 549 - def _reduce_143( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 552 + def _reduce_146( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 551 - def _reduce_144( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 554 + def _reduce_147( val, _values, result ) result = [val[0], val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 553 - def _reduce_145( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 556 + def _reduce_148( val, _values, result ) result = [val[0]] result end .,., - # reduce 146 omitted + # reduce 149 omitted -module_eval <<'.,.,', 'grammar.ra', 558 - def _reduce_147( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 561 + def _reduce_150( val, _values, result ) result = val[1] result end .,., - # reduce 148 omitted + # reduce 151 omitted -module_eval <<'.,.,', 'grammar.ra', 563 - def _reduce_149( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 566 + def _reduce_152( val, _values, result ) result = val[1] result end .,., - # reduce 150 omitted + # reduce 153 omitted - # reduce 151 omitted + # reduce 154 omitted - # reduce 152 omitted + # reduce 155 omitted - # reduce 153 omitted + # reduce 156 omitted -module_eval <<'.,.,', 'grammar.ra', 570 - def _reduce_154( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 573 + def _reduce_157( val, _values, result ) result = ast AST::Variable, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 578 - def _reduce_155( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 581 + def _reduce_158( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -1761,21 +1810,21 @@ module_eval <<'.,.,', 'grammar.ra', 578 end .,., -module_eval <<'.,.,', 'grammar.ra', 580 - def _reduce_156( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 583 + def _reduce_159( val, _values, result ) result = ast AST::ASTArray result end .,., - # reduce 157 omitted + # reduce 160 omitted - # reduce 158 omitted + # reduce 161 omitted - # reduce 159 omitted + # reduce 162 omitted -module_eval <<'.,.,', 'grammar.ra', 585 - def _reduce_160( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 588 + def _reduce_163( val, _values, result ) result = nil result end diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index d00c8d50f..6dcfd36c3 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -260,7 +260,10 @@ class Puppet::Parser::Resource def to_hash @params.inject({}) do |hash, ary| param = ary[1] - hash[param.name] = param.value + # Skip "undef" values. + if param.value != :undef + hash[param.name] = param.value + end hash end end diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index b792346fa..c7b36e36c 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -48,7 +48,7 @@ class Puppet::Parser::Scope # Is the value true? This allows us to control the definition of truth # in one place. def self.true?(value) - if value == false or value == "" + if value == false or value == "" or value == :undef return false else return true @@ -414,7 +414,11 @@ class Puppet::Parser::Scope end # We can't use "if @symtable[name]" here because the value might be false if @symtable.include?(name) - return @symtable[name] + if usestring and @symtable[name] == :undef + return "" + else + return @symtable[name] + end elsif self.parent return @parent.lookupvar(name, usestring) elsif usestring diff --git a/test/language/parser.rb b/test/language/parser.rb index ce54efc7e..e4b913ab8 100755 --- a/test/language/parser.rb +++ b/test/language/parser.rb @@ -763,6 +763,19 @@ file { "/tmp/yayness": parser.import("%s/*" % dir) end end + + # #629 - undef keyword + def test_undef + parser = mkparser + result = nil + assert_nothing_raised("Could not parse assignment to undef") { + result = parser.parse %{$variable = undef} + } + + children = result.children + assert_instance_of(AST::VarDef, result.children[0]) + assert_instance_of(AST::Undef, result.children[0].value) + end end # $Id$ diff --git a/test/language/resource.rb b/test/language/resource.rb index 205d86d2c..6dee5b573 100755 --- a/test/language/resource.rb +++ b/test/language/resource.rb @@ -530,6 +530,20 @@ class TestResource < Test::Unit::TestCase end end end + + # part of #629 -- the undef keyword. Make sure 'undef' params get skipped. + def test_undef_and_to_hash + res = mkresource :type => "file", :title => "/tmp/testing", + :source => @source, :scope => @scope, + :params => {:owner => :undef, :mode => "755"} + + hash = nil + assert_nothing_raised("Could not convert resource with undef to hash") do + hash = res.to_hash + end + + assert_nil(hash[:owner], "got a value for an undef parameter") + end end # $Id$ diff --git a/test/language/scope.rb b/test/language/scope.rb index 428fe3e09..0c9881dac 100755 --- a/test/language/scope.rb +++ b/test/language/scope.rb @@ -445,6 +445,8 @@ class TestScope < Test::Unit::TestCase "Empty strings considered true") assert_equal(false, Puppet::Parser::Scope.true?(false), "false considered true") + assert_equal(false, Puppet::Parser::Scope.true?(:undef), + "undef considered true") end # Verify scope context is handled correctly. @@ -745,6 +747,19 @@ Host <<||>>" scope.add_namespace("b") assert_nothing_raised { test.call([["a", "testing"], ["b", "testing"]]) } end + + # #629 - undef should be "" or :undef + def test_lookupvar_with_undef + scope = mkscope + + scope.setvar("testing", :undef) + + assert_equal(:undef, scope.lookupvar("testing", false), + "undef was not returned as :undef when not string") + + assert_equal("", scope.lookupvar("testing", true), + "undef was not returned as '' when string") + end end # $Id$ |