diff options
-rw-r--r-- | lib/puppet/parser/ast.rb | 1 | ||||
-rw-r--r-- | lib/puppet/parser/ast/astarray.rb | 34 | ||||
-rw-r--r-- | lib/puppet/parser/ast/caseopt.rb | 36 | ||||
-rw-r--r-- | lib/puppet/parser/ast/resource.rb | 93 | ||||
-rw-r--r-- | lib/puppet/parser/ast/resource_instance.rb | 9 | ||||
-rw-r--r-- | lib/puppet/parser/ast/resource_override.rb | 5 | ||||
-rw-r--r-- | lib/puppet/parser/grammar.ra | 131 | ||||
-rw-r--r-- | lib/puppet/parser/parser.rb | 2498 | ||||
-rw-r--r-- | lib/puppet/parser/parser_support.rb | 15 | ||||
-rw-r--r-- | lib/puppet/util/zaml.rb | 23 | ||||
-rwxr-xr-x | spec/unit/parser/ast/astarray_spec.rb | 49 | ||||
-rwxr-xr-x | spec/unit/parser/ast/resource_spec.rb | 23 | ||||
-rwxr-xr-x | spec/unit/parser/parser_spec.rb | 5 | ||||
-rw-r--r-- | spec/unit/util/zaml_spec.rb | 25 | ||||
-rwxr-xr-x | test/language/parser.rb | 6 | ||||
-rw-r--r-- | test/lib/puppettest/parsertesting.rb | 13 | ||||
-rwxr-xr-x | test/ral/providers/cron/crontab.rb | 5 |
17 files changed, 1370 insertions, 1601 deletions
diff --git a/lib/puppet/parser/ast.rb b/lib/puppet/parser/ast.rb index 0369a6d28..03891160b 100644 --- a/lib/puppet/parser/ast.rb +++ b/lib/puppet/parser/ast.rb @@ -129,6 +129,7 @@ require 'puppet/parser/ast/not' require 'puppet/parser/ast/relationship' require 'puppet/parser/ast/resource' require 'puppet/parser/ast/resource_defaults' +require 'puppet/parser/ast/resource_instance' require 'puppet/parser/ast/resource_override' require 'puppet/parser/ast/resource_reference' require 'puppet/parser/ast/resourceparam' diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb index e856570f8..7283a1f6c 100644 --- a/lib/puppet/parser/ast/astarray.rb +++ b/lib/puppet/parser/ast/astarray.rb @@ -16,30 +16,20 @@ class Puppet::Parser::AST # Evaluate our children. def evaluate(scope) - # Make a new array, so we don't have to deal with the details of - # flattening and such - items = [] - - # First clean out any AST::ASTArrays - @children.each { |child| - if child.instance_of?(AST::ASTArray) - child.each do |ac| - items << ac - end - else - items << child - end - } - - rets = items.flatten.collect { |child| + result = [] + @children.each do |child| # Skip things that respond to :instantiate (classes, nodes, # and definitions), because they have already been # instantiated. if !child.respond_to?(:instantiate) - child.safeevaluate(scope) + item = child.safeevaluate(scope) + if !item.nil? + # nil values are implicitly removed. + result.push(item) + end end - } - rets.reject { |o| o.nil? } + end + result end def push(*ary) @@ -57,10 +47,4 @@ class Puppet::Parser::AST "[" + @children.collect { |c| c.to_s }.join(', ') + "]" end end - - # A simple container class, containing the parameters for an object. - # Used for abstracting the grammar declarations. Basically unnecessary - # except that I kept finding bugs because I had too many arrays that - # meant completely different things. - class ResourceInstance < ASTArray; end end diff --git a/lib/puppet/parser/ast/caseopt.rb b/lib/puppet/parser/ast/caseopt.rb index 4e296e82f..db4c2b024 100644 --- a/lib/puppet/parser/ast/caseopt.rb +++ b/lib/puppet/parser/ast/caseopt.rb @@ -18,16 +18,12 @@ class Puppet::Parser::AST # Cache the @default value. return @default if defined?(@default) - if @value.is_a?(AST::ASTArray) - @value.each { |subval| - if subval.is_a?(AST::Default) - @default = true - break - end - } - else - @default = true if @value.is_a?(AST::Default) - end + @value.each { |subval| + if subval.is_a?(AST::Default) + @default = true + break + end + } @default ||= false @@ -36,23 +32,15 @@ class Puppet::Parser::AST # You can specify a list of values; return each in turn. def eachvalue(scope) - if @value.is_a?(AST::ASTArray) - @value.each { |subval| - yield subval.safeevaluate(scope) - } - else - yield @value.safeevaluate(scope) - end + @value.each { |subval| + yield subval.safeevaluate(scope) + } end def eachopt - if @value.is_a?(AST::ASTArray) - @value.each { |subval| - yield subval - } - else - yield @value - end + @value.each { |subval| + yield subval + } end # Evaluate the actual statements; this only gets called if diff --git a/lib/puppet/parser/ast/resource.rb b/lib/puppet/parser/ast/resource.rb index 0c58538d5..23207149f 100644 --- a/lib/puppet/parser/ast/resource.rb +++ b/lib/puppet/parser/ast/resource.rb @@ -3,26 +3,15 @@ require 'puppet/parser/ast/resource_reference' # Any normal puppet resource declaration. Can point to a definition or a # builtin type. class Puppet::Parser::AST -class Resource < AST::ResourceReference +class Resource < AST::Branch associates_doc - attr_accessor :title, :type, :exported, :virtual - attr_reader :parameters + attr_accessor :type, :instances, :exported, :virtual # Does not actually return an object; instead sets an object # in the current scope. def evaluate(scope) - # Evaluate all of the specified params. - paramobjects = parameters.collect { |param| - param.safeevaluate(scope) - } - - resource_titles = @title.safeevaluate(scope) - - # it's easier to always use an array, even for only one name - resource_titles = [resource_titles] unless resource_titles.is_a?(Array) - # We want virtual to be true if exported is true. We can't # just set :virtual => self.virtual in the initialization, # because sometimes the :virtual attribute is set *after* @@ -30,49 +19,49 @@ class Resource < AST::ResourceReference # is true. Argh, this was a very tough one to track down. virt = self.virtual || self.exported - # This is where our implicit iteration takes place; if someone - # passed an array as the name, then we act just like the called us - # many times. - fully_qualified_type, resource_titles = scope.resolve_type_and_titles(type, resource_titles) + # First level of implicit iteration: build a resource for each + # instance. This handles things like: + # file { '/foo': owner => blah; '/bar': owner => blah } + @instances.collect { |instance| - resource_titles.flatten.collect { |resource_title| - exceptwrap :type => Puppet::ParseError do - resource = Puppet::Parser::Resource.new( - fully_qualified_type, resource_title, - :parameters => paramobjects, - :file => self.file, - :line => self.line, - :exported => self.exported, - :virtual => virt, - :source => scope.source, - :scope => scope, - - :strict => true - ) + # Evaluate all of the specified params. + paramobjects = instance.parameters.collect { |param| + param.safeevaluate(scope) + } - # And then store the resource in the compiler. - # At some point, we need to switch all of this to return - # resources instead of storing them like this. - scope.compiler.add_resource(scope, resource) - resource - end - }.reject { |resource| resource.nil? } - end + resource_titles = instance.title.safeevaluate(scope) + + # it's easier to always use an array, even for only one name + resource_titles = [resource_titles] unless resource_titles.is_a?(Array) + + fully_qualified_type, resource_titles = scope.resolve_type_and_titles(type, resource_titles) + + # Second level of implicit iteration; build a resource for each + # title. This handles things like: + # file { ['/foo', '/bar']: owner => blah } + resource_titles.flatten.collect { |resource_title| + exceptwrap :type => Puppet::ParseError do + resource = Puppet::Parser::Resource.new( + fully_qualified_type, resource_title, + :parameters => paramobjects, + :file => self.file, + :line => self.line, + :exported => self.exported, + :virtual => virt, + :source => scope.source, + :scope => scope, - # Set the parameters for our object. - def parameters=(params) - if params.is_a?(AST::ASTArray) - @parameters = params - else + :strict => true + ) - @parameters = AST::ASTArray.new( - - :line => params.line, - :file => params.file, - - :children => [params] - ) - end + # And then store the resource in the compiler. + # At some point, we need to switch all of this to return + # resources instead of storing them like this. + scope.compiler.add_resource(scope, resource) + resource + end + } + }.flatten.reject { |resource| resource.nil? } end end end diff --git a/lib/puppet/parser/ast/resource_instance.rb b/lib/puppet/parser/ast/resource_instance.rb new file mode 100644 index 000000000..ebfb17bf1 --- /dev/null +++ b/lib/puppet/parser/ast/resource_instance.rb @@ -0,0 +1,9 @@ +require 'puppet/parser/ast/branch' + +class Puppet::Parser::AST + class ResourceInstance < Branch + # A simple container for a parameter for an object. Consists of a + # title and a set of parameters. + attr_accessor :title, :parameters + end +end diff --git a/lib/puppet/parser/ast/resource_override.rb b/lib/puppet/parser/ast/resource_override.rb index e0be889ff..d638202ab 100644 --- a/lib/puppet/parser/ast/resource_override.rb +++ b/lib/puppet/parser/ast/resource_override.rb @@ -3,12 +3,11 @@ require 'puppet/parser/ast/resource' class Puppet::Parser::AST # Set a parameter on a resource specification created somewhere else in the # configuration. The object is responsible for verifying that this is allowed. - class ResourceOverride < Resource + class ResourceOverride < AST::Branch associates_doc - attr_accessor :object - attr_reader :parameters + attr_accessor :object, :parameters # Iterate across all of our children. def each diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index 3d77d2db8..ecb27f363 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -32,10 +32,12 @@ program: statements_and_declarations | nil statements_and_declarations: statement_or_declaration { - result = ast AST::ASTArray, :children => [val[0]] + result = ast AST::ASTArray, :children => (val[0] ? [val[0]] : []) } | statements_and_declarations statement_or_declaration { - val[0].push(val[1]) + if val[1] + val[0].push(val[1]) + end result = val[0] } @@ -79,19 +81,17 @@ relationship_side: resource | resourceref | collection edge: IN_EDGE | OUT_EDGE | IN_EDGE_SUB | OUT_EDGE_SUB fstatement: NAME LPAREN funcvalues RPAREN { - args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[2], :ftype => :statement } | NAME LPAREN funcvalues COMMA RPAREN { - args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[2], :ftype => :statement } | NAME LPAREN RPAREN { result = ast AST::Function, @@ -101,29 +101,22 @@ fstatement: NAME LPAREN funcvalues RPAREN { :ftype => :statement } | NAME funcvalues { - args = aryfy(val[1]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[1], :ftype => :statement } -funcvalues: namestring - | resourceref +funcvalues: namestring { result = aryfy(val[0]) } + | resourceref { result = aryfy(val[0]) } | funcvalues COMMA namestring { - result = aryfy(val[0], val[2]) - result.line = @lexer.line - result.file = @lexer.file + val[0].push(val[2]) + result = val[0] } | funcvalues COMMA resourceref { - unless val[0].is_a?(AST::ASTArray) - val[0] = aryfy(val[0]) - end - - val[0].push(val[2]) - - result = val[0] + val[0].push(val[2]) + result = val[0] } # This is *almost* an rvalue, but I couldn't get a full @@ -142,23 +135,7 @@ namestring: name resource: classname LBRACE resourceinstances endsemi RBRACE { @lexer.commentpop - array = val[2] - array = [array] if array.instance_of?(AST::ResourceInstance) - result = ast AST::ASTArray - - # this iterates across each specified resourceinstance - array.each { |instance| - raise Puppet::Dev, "Got something that isn't an instance" unless instance.instance_of?(AST::ResourceInstance) - # now, i need to somehow differentiate between those things with - # arrays in their names, and normal things - - result.push ast( - AST::Resource, - :type => val[0], - :title => instance[0], - - :parameters => instance[1]) - } + result = ast(AST::Resource, :type => val[0], :instances => val[2]) } | classname LBRACE params endcomma RBRACE { # This is a deprecated syntax. error "All resource specifications require names" @@ -187,14 +164,8 @@ virtualresource: at resource { method = type.to_s + "=" - # Just mark our resources as exported and pass them through. - if val[1].instance_of?(AST::ASTArray) - val[1].each do |obj| - obj.send(method, true) - end - else - val[1].send(method, true) - end + # Just mark our resource as exported and pass it through. + val[1].send(method, true) result = val[1] } @@ -293,17 +264,13 @@ colllval: variable | name resourceinst: resourcename COLON params endcomma { - result = ast AST::ResourceInstance, :children => [val[0],val[2]] + result = ast AST::ResourceInstance, :title => val[0], :parameters => val[2] } -resourceinstances: resourceinst +resourceinstances: resourceinst { result = aryfy(val[0]) } | resourceinstances SEMIC resourceinst { - if val[0].instance_of?(AST::ResourceInstance) - result = ast AST::ASTArray, :children => [val[0],val[2]] - else val[0].push val[2] result = val[0] - end } endsemi: # nothing @@ -348,14 +315,10 @@ params: # nothing { result = ast AST::ASTArray } - | param { result = val[0] } + | param { result = aryfy(val[0]) } | params COMMA param { - if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end } param: NAME FARROW rvalue { @@ -374,24 +337,14 @@ anyparams: # nothing { result = ast AST::ASTArray } - | anyparam { result = val[0] } + | anyparam { result = aryfy(val[0]) } | anyparams COMMA anyparam { - if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end } -rvalues: rvalue - | rvalues comma rvalue { - if val[0].instance_of?(AST::ASTArray) - result = val[0].push(val[2]) - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end -} +rvalues: rvalue { result = aryfy(val[0]) } + | rvalues comma rvalue { result = val[0].push(val[2]) } simplervalue: quotedtext | name @@ -415,10 +368,9 @@ rvalue: quotedtext # We currently require arguments in these functions. funcrvalue: NAME LPAREN funcvalues RPAREN { - args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[2], :ftype => :rvalue } | NAME LPAREN RPAREN { result = ast AST::Function, @@ -562,19 +514,13 @@ expression: rvalue casestatement: CASE rvalue LBRACE caseopts RBRACE { @lexer.commentpop - options = val[3] - options = ast AST::ASTArray, :children => [val[3]] unless options.instance_of?(AST::ASTArray) - result = ast AST::CaseStatement, :test => val[1], :options => options + result = ast AST::CaseStatement, :test => val[1], :options => val[3] } -caseopts: caseopt +caseopts: caseopt { result = aryfy(val[0]) } | caseopts caseopt { - if val[0].instance_of?(AST::ASTArray) val[0].push val[1] result = val[0] - else - result = ast AST::ASTArray, :children => [val[0], val[1]] - end } caseopt: casevalues COLON LBRACE statements RBRACE { @@ -591,14 +537,10 @@ caseopt: casevalues COLON LBRACE statements RBRACE { ) } -casevalues: selectlhand +casevalues: selectlhand { result = aryfy(val[0]) } | casevalues COMMA selectlhand { - if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end } selector: selectlhand QMARK svalues { @@ -647,7 +589,7 @@ import: IMPORT strings { import(file) end - result = AST::ASTArray.new(:children => []) + result = nil } # Disable definition inheritance for now. 8/27/06, luke @@ -772,22 +714,9 @@ variable: VARIABLE { result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line] } -array: LBRACK rvalues RBRACK { - if val[1].instance_of?(AST::ASTArray) - result = val[1] - else - result = ast AST::ASTArray, :children => [val[1]] - end -} - | LBRACK rvalues COMMA RBRACK { - if val[1].instance_of?(AST::ASTArray) - result = val[1] - else - result = ast AST::ASTArray, :children => [val[1]] - end -} | LBRACK RBRACK { - result = ast AST::ASTArray -} +array: LBRACK rvalues RBRACK { result = val[1] } + | LBRACK rvalues COMMA RBRACK { result = val[1] } + | LBRACK RBRACK { result = ast AST::ASTArray } comma: FARROW | COMMA diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb index 5b24d8434..60b272e76 100644 --- a/lib/puppet/parser/parser.rb +++ b/lib/puppet/parser/parser.rb @@ -1,10 +1,11 @@ # # DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.4.6 -# from Racc grammer file "". +# This file is automatically generated by racc 1.4.5 +# from racc grammer file "grammar.ra". # -require 'racc/parser.rb' +require 'racc/parser' + require 'puppet' require 'puppet/util/loadedfile' @@ -17,11 +18,14 @@ module Puppet class AlreadyImportedError < ImportError; end end + module Puppet + module Parser + class Parser < Racc::Parser -module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 859) +module_eval <<'..end grammar.ra modeval..id6362f948d9', 'grammar.ra', 788 # It got too annoying having code in a file that needs to be compiled. require 'puppet/parser/parser_support' @@ -32,8 +36,250 @@ require 'puppet/parser/parser_support' # End: # $Id$ -...end grammar.ra/module_eval... -##### State transition tables begin ### + +..end grammar.ra modeval..id6362f948d9 + +##### racc 1.4.5 generates ### + +racc_reduce_table = [ + 0, 0, :racc_error, + 1, 70, :_reduce_none, + 1, 70, :_reduce_none, + 1, 71, :_reduce_3, + 2, 71, :_reduce_4, + 1, 74, :_reduce_5, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 1, 73, :_reduce_none, + 3, 88, :_reduce_20, + 3, 88, :_reduce_21, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 89, :_reduce_none, + 1, 90, :_reduce_none, + 1, 90, :_reduce_none, + 1, 90, :_reduce_none, + 1, 90, :_reduce_none, + 4, 82, :_reduce_29, + 5, 82, :_reduce_30, + 3, 82, :_reduce_31, + 2, 82, :_reduce_32, + 1, 92, :_reduce_33, + 1, 92, :_reduce_34, + 3, 92, :_reduce_35, + 3, 92, :_reduce_36, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_none, + 1, 93, :_reduce_45, + 5, 75, :_reduce_46, + 5, 75, :_reduce_47, + 5, 75, :_reduce_48, + 5, 86, :_reduce_49, + 2, 76, :_reduce_50, + 1, 109, :_reduce_51, + 2, 109, :_reduce_52, + 6, 77, :_reduce_53, + 2, 77, :_reduce_54, + 3, 110, :_reduce_55, + 3, 110, :_reduce_56, + 1, 111, :_reduce_none, + 1, 111, :_reduce_none, + 3, 111, :_reduce_59, + 1, 112, :_reduce_none, + 3, 112, :_reduce_61, + 1, 113, :_reduce_62, + 1, 113, :_reduce_63, + 3, 114, :_reduce_64, + 3, 114, :_reduce_65, + 1, 115, :_reduce_none, + 1, 115, :_reduce_none, + 4, 117, :_reduce_68, + 1, 103, :_reduce_69, + 3, 103, :_reduce_70, + 0, 104, :_reduce_none, + 1, 104, :_reduce_none, + 1, 119, :_reduce_73, + 1, 94, :_reduce_74, + 1, 96, :_reduce_75, + 1, 118, :_reduce_none, + 1, 118, :_reduce_none, + 1, 118, :_reduce_none, + 1, 118, :_reduce_none, + 1, 118, :_reduce_none, + 1, 118, :_reduce_none, + 1, 118, :_reduce_none, + 3, 78, :_reduce_83, + 3, 78, :_reduce_84, + 3, 87, :_reduce_85, + 0, 105, :_reduce_86, + 1, 105, :_reduce_87, + 3, 105, :_reduce_88, + 3, 123, :_reduce_89, + 3, 125, :_reduce_90, + 1, 126, :_reduce_none, + 1, 126, :_reduce_none, + 0, 108, :_reduce_93, + 1, 108, :_reduce_94, + 3, 108, :_reduce_95, + 1, 127, :_reduce_96, + 3, 127, :_reduce_97, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 116, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 1, 124, :_reduce_none, + 4, 98, :_reduce_116, + 3, 98, :_reduce_117, + 1, 100, :_reduce_118, + 2, 100, :_reduce_119, + 2, 130, :_reduce_120, + 1, 131, :_reduce_121, + 2, 131, :_reduce_122, + 1, 97, :_reduce_123, + 4, 91, :_reduce_124, + 4, 91, :_reduce_125, + 2, 80, :_reduce_126, + 5, 132, :_reduce_127, + 4, 132, :_reduce_128, + 0, 133, :_reduce_none, + 2, 133, :_reduce_130, + 4, 133, :_reduce_131, + 3, 133, :_reduce_132, + 1, 121, :_reduce_none, + 3, 121, :_reduce_134, + 3, 121, :_reduce_135, + 3, 121, :_reduce_136, + 3, 121, :_reduce_137, + 3, 121, :_reduce_138, + 3, 121, :_reduce_139, + 3, 121, :_reduce_140, + 3, 121, :_reduce_141, + 3, 121, :_reduce_142, + 2, 121, :_reduce_143, + 3, 121, :_reduce_144, + 3, 121, :_reduce_145, + 3, 121, :_reduce_146, + 3, 121, :_reduce_147, + 3, 121, :_reduce_148, + 3, 121, :_reduce_149, + 2, 121, :_reduce_150, + 3, 121, :_reduce_151, + 3, 121, :_reduce_152, + 3, 121, :_reduce_153, + 5, 79, :_reduce_154, + 1, 135, :_reduce_155, + 2, 135, :_reduce_156, + 5, 136, :_reduce_157, + 4, 136, :_reduce_158, + 1, 137, :_reduce_159, + 3, 137, :_reduce_160, + 3, 99, :_reduce_161, + 1, 139, :_reduce_none, + 4, 139, :_reduce_163, + 1, 141, :_reduce_none, + 3, 141, :_reduce_165, + 3, 140, :_reduce_166, + 1, 138, :_reduce_none, + 1, 138, :_reduce_none, + 1, 138, :_reduce_none, + 1, 138, :_reduce_none, + 1, 138, :_reduce_none, + 1, 138, :_reduce_none, + 1, 138, :_reduce_none, + 1, 138, :_reduce_174, + 1, 138, :_reduce_none, + 1, 142, :_reduce_176, + 1, 143, :_reduce_none, + 3, 143, :_reduce_178, + 2, 81, :_reduce_179, + 6, 83, :_reduce_180, + 5, 83, :_reduce_181, + 7, 84, :_reduce_182, + 6, 84, :_reduce_183, + 6, 85, :_reduce_184, + 5, 85, :_reduce_185, + 1, 107, :_reduce_186, + 1, 102, :_reduce_187, + 1, 102, :_reduce_188, + 1, 102, :_reduce_189, + 1, 146, :_reduce_190, + 3, 146, :_reduce_191, + 1, 148, :_reduce_192, + 1, 149, :_reduce_193, + 1, 149, :_reduce_194, + 1, 149, :_reduce_195, + 1, 149, :_reduce_none, + 0, 72, :_reduce_197, + 0, 150, :_reduce_198, + 1, 144, :_reduce_none, + 3, 144, :_reduce_200, + 3, 144, :_reduce_201, + 1, 151, :_reduce_none, + 3, 151, :_reduce_203, + 3, 152, :_reduce_204, + 1, 152, :_reduce_205, + 3, 152, :_reduce_206, + 1, 152, :_reduce_207, + 1, 147, :_reduce_none, + 2, 147, :_reduce_209, + 1, 145, :_reduce_none, + 2, 145, :_reduce_211, + 1, 153, :_reduce_none, + 1, 153, :_reduce_none, + 1, 95, :_reduce_214, + 3, 120, :_reduce_215, + 4, 120, :_reduce_216, + 2, 120, :_reduce_217, + 1, 128, :_reduce_none, + 1, 128, :_reduce_none, + 0, 106, :_reduce_none, + 1, 106, :_reduce_221, + 1, 134, :_reduce_222, + 3, 129, :_reduce_223, + 4, 129, :_reduce_224, + 2, 129, :_reduce_225, + 1, 154, :_reduce_none, + 3, 154, :_reduce_227, + 3, 155, :_reduce_228, + 1, 156, :_reduce_229, + 1, 156, :_reduce_230, + 4, 122, :_reduce_231, + 1, 101, :_reduce_none, + 4, 101, :_reduce_233 ] + +racc_reduce_n = 234 + +racc_shift_n = 385 racc_action_table = [ 242, 243, 55, 231, 356, 112, 157, 113, 78, 298, @@ -631,754 +877,485 @@ racc_goto_default = [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 58, nil, nil, nil, nil, nil, nil, 197 ] -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 71, :_reduce_3, - 2, 71, :_reduce_4, - 1, 74, :_reduce_5, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 1, 73, :_reduce_none, - 3, 88, :_reduce_20, - 3, 88, :_reduce_21, - 1, 89, :_reduce_none, - 1, 89, :_reduce_none, - 1, 89, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 1, 90, :_reduce_none, - 4, 82, :_reduce_29, - 5, 82, :_reduce_30, - 3, 82, :_reduce_31, - 2, 82, :_reduce_32, - 1, 92, :_reduce_none, - 1, 92, :_reduce_none, - 3, 92, :_reduce_35, - 3, 92, :_reduce_36, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_45, - 5, 75, :_reduce_46, - 5, 75, :_reduce_47, - 5, 75, :_reduce_48, - 5, 86, :_reduce_49, - 2, 76, :_reduce_50, - 1, 109, :_reduce_51, - 2, 109, :_reduce_52, - 6, 77, :_reduce_53, - 2, 77, :_reduce_54, - 3, 110, :_reduce_55, - 3, 110, :_reduce_56, - 1, 111, :_reduce_none, - 1, 111, :_reduce_none, - 3, 111, :_reduce_59, - 1, 112, :_reduce_none, - 3, 112, :_reduce_61, - 1, 113, :_reduce_62, - 1, 113, :_reduce_63, - 3, 114, :_reduce_64, - 3, 114, :_reduce_65, - 1, 115, :_reduce_none, - 1, 115, :_reduce_none, - 4, 117, :_reduce_68, - 1, 103, :_reduce_none, - 3, 103, :_reduce_70, - 0, 104, :_reduce_none, - 1, 104, :_reduce_none, - 1, 119, :_reduce_73, - 1, 94, :_reduce_74, - 1, 96, :_reduce_75, - 1, 118, :_reduce_none, - 1, 118, :_reduce_none, - 1, 118, :_reduce_none, - 1, 118, :_reduce_none, - 1, 118, :_reduce_none, - 1, 118, :_reduce_none, - 1, 118, :_reduce_none, - 3, 78, :_reduce_83, - 3, 78, :_reduce_84, - 3, 87, :_reduce_85, - 0, 105, :_reduce_86, - 1, 105, :_reduce_87, - 3, 105, :_reduce_88, - 3, 123, :_reduce_89, - 3, 125, :_reduce_90, - 1, 126, :_reduce_none, - 1, 126, :_reduce_none, - 0, 108, :_reduce_93, - 1, 108, :_reduce_94, - 3, 108, :_reduce_95, - 1, 127, :_reduce_none, - 3, 127, :_reduce_97, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 1, 124, :_reduce_none, - 4, 98, :_reduce_116, - 3, 98, :_reduce_117, - 1, 100, :_reduce_118, - 2, 100, :_reduce_119, - 2, 130, :_reduce_120, - 1, 131, :_reduce_121, - 2, 131, :_reduce_122, - 1, 97, :_reduce_123, - 4, 91, :_reduce_124, - 4, 91, :_reduce_125, - 2, 80, :_reduce_126, - 5, 132, :_reduce_127, - 4, 132, :_reduce_128, - 0, 133, :_reduce_none, - 2, 133, :_reduce_130, - 4, 133, :_reduce_131, - 3, 133, :_reduce_132, - 1, 121, :_reduce_none, - 3, 121, :_reduce_134, - 3, 121, :_reduce_135, - 3, 121, :_reduce_136, - 3, 121, :_reduce_137, - 3, 121, :_reduce_138, - 3, 121, :_reduce_139, - 3, 121, :_reduce_140, - 3, 121, :_reduce_141, - 3, 121, :_reduce_142, - 2, 121, :_reduce_143, - 3, 121, :_reduce_144, - 3, 121, :_reduce_145, - 3, 121, :_reduce_146, - 3, 121, :_reduce_147, - 3, 121, :_reduce_148, - 3, 121, :_reduce_149, - 2, 121, :_reduce_150, - 3, 121, :_reduce_151, - 3, 121, :_reduce_152, - 3, 121, :_reduce_153, - 5, 79, :_reduce_154, - 1, 135, :_reduce_none, - 2, 135, :_reduce_156, - 5, 136, :_reduce_157, - 4, 136, :_reduce_158, - 1, 137, :_reduce_none, - 3, 137, :_reduce_160, - 3, 99, :_reduce_161, - 1, 139, :_reduce_none, - 4, 139, :_reduce_163, - 1, 141, :_reduce_none, - 3, 141, :_reduce_165, - 3, 140, :_reduce_166, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_174, - 1, 138, :_reduce_none, - 1, 142, :_reduce_176, - 1, 143, :_reduce_none, - 3, 143, :_reduce_178, - 2, 81, :_reduce_179, - 6, 83, :_reduce_180, - 5, 83, :_reduce_181, - 7, 84, :_reduce_182, - 6, 84, :_reduce_183, - 6, 85, :_reduce_184, - 5, 85, :_reduce_185, - 1, 107, :_reduce_186, - 1, 102, :_reduce_187, - 1, 102, :_reduce_188, - 1, 102, :_reduce_189, - 1, 146, :_reduce_190, - 3, 146, :_reduce_191, - 1, 148, :_reduce_192, - 1, 149, :_reduce_193, - 1, 149, :_reduce_194, - 1, 149, :_reduce_195, - 1, 149, :_reduce_none, - 0, 72, :_reduce_197, - 0, 150, :_reduce_198, - 1, 144, :_reduce_none, - 3, 144, :_reduce_200, - 3, 144, :_reduce_201, - 1, 151, :_reduce_none, - 3, 151, :_reduce_203, - 3, 152, :_reduce_204, - 1, 152, :_reduce_205, - 3, 152, :_reduce_206, - 1, 152, :_reduce_207, - 1, 147, :_reduce_none, - 2, 147, :_reduce_209, - 1, 145, :_reduce_none, - 2, 145, :_reduce_211, - 1, 153, :_reduce_none, - 1, 153, :_reduce_none, - 1, 95, :_reduce_214, - 3, 120, :_reduce_215, - 4, 120, :_reduce_216, - 2, 120, :_reduce_217, - 1, 128, :_reduce_none, - 1, 128, :_reduce_none, - 0, 106, :_reduce_none, - 1, 106, :_reduce_221, - 1, 134, :_reduce_222, - 3, 129, :_reduce_223, - 4, 129, :_reduce_224, - 2, 129, :_reduce_225, - 1, 154, :_reduce_none, - 3, 154, :_reduce_227, - 3, 155, :_reduce_228, - 1, 156, :_reduce_229, - 1, 156, :_reduce_230, - 4, 122, :_reduce_231, - 1, 101, :_reduce_none, - 4, 101, :_reduce_233 ] - -racc_reduce_n = 234 - -racc_shift_n = 385 - racc_token_table = { - false => 0, - :error => 1, - :STRING => 2, - :DQPRE => 3, - :DQMID => 4, - :DQPOST => 5, - :LBRACK => 6, - :RBRACK => 7, - :LBRACE => 8, - :RBRACE => 9, - :SYMBOL => 10, - :FARROW => 11, - :COMMA => 12, - :TRUE => 13, - :FALSE => 14, - :EQUALS => 15, - :APPENDS => 16, - :LESSEQUAL => 17, - :NOTEQUAL => 18, - :DOT => 19, - :COLON => 20, - :LLCOLLECT => 21, - :RRCOLLECT => 22, - :QMARK => 23, - :LPAREN => 24, - :RPAREN => 25, - :ISEQUAL => 26, - :GREATEREQUAL => 27, - :GREATERTHAN => 28, - :LESSTHAN => 29, - :IF => 30, - :ELSE => 31, - :IMPORT => 32, - :DEFINE => 33, - :ELSIF => 34, - :VARIABLE => 35, - :CLASS => 36, - :INHERITS => 37, - :NODE => 38, - :BOOLEAN => 39, - :NAME => 40, - :SEMIC => 41, - :CASE => 42, - :DEFAULT => 43, - :AT => 44, - :LCOLLECT => 45, - :RCOLLECT => 46, - :CLASSNAME => 47, - :CLASSREF => 48, - :NOT => 49, - :OR => 50, - :AND => 51, - :UNDEF => 52, - :PARROW => 53, - :PLUS => 54, - :MINUS => 55, - :TIMES => 56, - :DIV => 57, - :LSHIFT => 58, - :RSHIFT => 59, - :UMINUS => 60, - :MATCH => 61, - :NOMATCH => 62, - :REGEX => 63, - :IN_EDGE => 64, - :OUT_EDGE => 65, - :IN_EDGE_SUB => 66, - :OUT_EDGE_SUB => 67, - :IN => 68 } - -racc_nt_base = 69 + false => 0, + Object.new => 1, + :STRING => 2, + :DQPRE => 3, + :DQMID => 4, + :DQPOST => 5, + :LBRACK => 6, + :RBRACK => 7, + :LBRACE => 8, + :RBRACE => 9, + :SYMBOL => 10, + :FARROW => 11, + :COMMA => 12, + :TRUE => 13, + :FALSE => 14, + :EQUALS => 15, + :APPENDS => 16, + :LESSEQUAL => 17, + :NOTEQUAL => 18, + :DOT => 19, + :COLON => 20, + :LLCOLLECT => 21, + :RRCOLLECT => 22, + :QMARK => 23, + :LPAREN => 24, + :RPAREN => 25, + :ISEQUAL => 26, + :GREATEREQUAL => 27, + :GREATERTHAN => 28, + :LESSTHAN => 29, + :IF => 30, + :ELSE => 31, + :IMPORT => 32, + :DEFINE => 33, + :ELSIF => 34, + :VARIABLE => 35, + :CLASS => 36, + :INHERITS => 37, + :NODE => 38, + :BOOLEAN => 39, + :NAME => 40, + :SEMIC => 41, + :CASE => 42, + :DEFAULT => 43, + :AT => 44, + :LCOLLECT => 45, + :RCOLLECT => 46, + :CLASSNAME => 47, + :CLASSREF => 48, + :NOT => 49, + :OR => 50, + :AND => 51, + :UNDEF => 52, + :PARROW => 53, + :PLUS => 54, + :MINUS => 55, + :TIMES => 56, + :DIV => 57, + :LSHIFT => 58, + :RSHIFT => 59, + :UMINUS => 60, + :MATCH => 61, + :NOMATCH => 62, + :REGEX => 63, + :IN_EDGE => 64, + :OUT_EDGE => 65, + :IN_EDGE_SUB => 66, + :OUT_EDGE_SUB => 67, + :IN => 68 } racc_use_result_var = true +racc_nt_base = 69 + Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] + racc_action_table, + racc_action_check, + racc_action_default, + racc_action_pointer, + racc_goto_table, + racc_goto_check, + racc_goto_default, + racc_goto_pointer, + racc_nt_base, + racc_reduce_table, + racc_token_table, + racc_shift_n, + racc_reduce_n, + racc_use_result_var ] Racc_token_to_s_table = [ - "$end", - "error", - "STRING", - "DQPRE", - "DQMID", - "DQPOST", - "LBRACK", - "RBRACK", - "LBRACE", - "RBRACE", - "SYMBOL", - "FARROW", - "COMMA", - "TRUE", - "FALSE", - "EQUALS", - "APPENDS", - "LESSEQUAL", - "NOTEQUAL", - "DOT", - "COLON", - "LLCOLLECT", - "RRCOLLECT", - "QMARK", - "LPAREN", - "RPAREN", - "ISEQUAL", - "GREATEREQUAL", - "GREATERTHAN", - "LESSTHAN", - "IF", - "ELSE", - "IMPORT", - "DEFINE", - "ELSIF", - "VARIABLE", - "CLASS", - "INHERITS", - "NODE", - "BOOLEAN", - "NAME", - "SEMIC", - "CASE", - "DEFAULT", - "AT", - "LCOLLECT", - "RCOLLECT", - "CLASSNAME", - "CLASSREF", - "NOT", - "OR", - "AND", - "UNDEF", - "PARROW", - "PLUS", - "MINUS", - "TIMES", - "DIV", - "LSHIFT", - "RSHIFT", - "UMINUS", - "MATCH", - "NOMATCH", - "REGEX", - "IN_EDGE", - "OUT_EDGE", - "IN_EDGE_SUB", - "OUT_EDGE_SUB", - "IN", - "$start", - "program", - "statements_and_declarations", - "nil", - "statement_or_declaration", - "statements", - "resource", - "virtualresource", - "collection", - "assignment", - "casestatement", - "ifstatement_begin", - "import", - "fstatement", - "definition", - "hostclass", - "nodedef", - "resourceoverride", - "append", - "relationship", - "relationship_side", - "edge", - "resourceref", - "funcvalues", - "namestring", - "name", - "variable", - "type", - "boolean", - "funcrvalue", - "selector", - "quotedtext", - "hasharrayaccesses", - "classname", - "resourceinstances", - "endsemi", - "params", - "endcomma", - "classref", - "anyparams", - "at", - "collectrhand", - "collstatements", - "collstatement", - "colljoin", - "collexpr", - "colllval", - "simplervalue", - "resourceinst", - "resourcename", - "undef", - "array", - "expression", - "hasharrayaccess", - "param", - "rvalue", - "addparam", - "anyparam", - "rvalues", - "comma", - "hash", - "dqrval", - "dqtail", - "ifstatement", - "else", - "regex", - "caseopts", - "caseopt", - "casevalues", - "selectlhand", - "svalues", - "selectval", - "sintvalues", - "string", - "strings", - "argumentlist", - "classparent", - "hostnames", - "nodeparent", - "nodename", - "hostname", - "nothing", - "arguments", - "argument", - "classnameordefault", - "hashpairs", - "hashpair", - "key" ] +'$end', +'error', +'STRING', +'DQPRE', +'DQMID', +'DQPOST', +'LBRACK', +'RBRACK', +'LBRACE', +'RBRACE', +'SYMBOL', +'FARROW', +'COMMA', +'TRUE', +'FALSE', +'EQUALS', +'APPENDS', +'LESSEQUAL', +'NOTEQUAL', +'DOT', +'COLON', +'LLCOLLECT', +'RRCOLLECT', +'QMARK', +'LPAREN', +'RPAREN', +'ISEQUAL', +'GREATEREQUAL', +'GREATERTHAN', +'LESSTHAN', +'IF', +'ELSE', +'IMPORT', +'DEFINE', +'ELSIF', +'VARIABLE', +'CLASS', +'INHERITS', +'NODE', +'BOOLEAN', +'NAME', +'SEMIC', +'CASE', +'DEFAULT', +'AT', +'LCOLLECT', +'RCOLLECT', +'CLASSNAME', +'CLASSREF', +'NOT', +'OR', +'AND', +'UNDEF', +'PARROW', +'PLUS', +'MINUS', +'TIMES', +'DIV', +'LSHIFT', +'RSHIFT', +'UMINUS', +'MATCH', +'NOMATCH', +'REGEX', +'IN_EDGE', +'OUT_EDGE', +'IN_EDGE_SUB', +'OUT_EDGE_SUB', +'IN', +'$start', +'program', +'statements_and_declarations', +'nil', +'statement_or_declaration', +'statements', +'resource', +'virtualresource', +'collection', +'assignment', +'casestatement', +'ifstatement_begin', +'import', +'fstatement', +'definition', +'hostclass', +'nodedef', +'resourceoverride', +'append', +'relationship', +'relationship_side', +'edge', +'resourceref', +'funcvalues', +'namestring', +'name', +'variable', +'type', +'boolean', +'funcrvalue', +'selector', +'quotedtext', +'hasharrayaccesses', +'classname', +'resourceinstances', +'endsemi', +'params', +'endcomma', +'classref', +'anyparams', +'at', +'collectrhand', +'collstatements', +'collstatement', +'colljoin', +'collexpr', +'colllval', +'simplervalue', +'resourceinst', +'resourcename', +'undef', +'array', +'expression', +'hasharrayaccess', +'param', +'rvalue', +'addparam', +'anyparam', +'rvalues', +'comma', +'hash', +'dqrval', +'dqtail', +'ifstatement', +'else', +'regex', +'caseopts', +'caseopt', +'casevalues', +'selectlhand', +'svalues', +'selectval', +'sintvalues', +'string', +'strings', +'argumentlist', +'classparent', +'hostnames', +'nodeparent', +'nodename', +'hostname', +'nothing', +'arguments', +'argument', +'classnameordefault', +'hashpairs', +'hashpair', +'key'] Racc_debug_parser = false -##### State transition tables end ##### +##### racc system variables end ##### -# reduce 0 omitted + # reduce 0 omitted -# reduce 1 omitted + # reduce 1 omitted -# reduce 2 omitted + # reduce 2 omitted -module_eval(<<'.,.,', 'grammar.ra', 34) - def _reduce_3(val, _values, result) - result = ast AST::ASTArray, :children => [val[0]] - - result +module_eval <<'.,.,', 'grammar.ra', 36 + def _reduce_3( val, _values, result ) + result = ast AST::ASTArray, :children => (val[0] ? [val[0]] : []) + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 37) - def _reduce_4(val, _values, result) - val[0].push(val[1]) +module_eval <<'.,.,', 'grammar.ra', 42 + def _reduce_4( val, _values, result ) + if val[1] + val[0].push(val[1]) + end result = val[0] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 44) - def _reduce_5(val, _values, result) - val[0].each do |stmt| +module_eval <<'.,.,', 'grammar.ra', 54 + def _reduce_5( val, _values, result ) + val[0].each do |stmt| if stmt.is_a?(AST::TopLevelConstruct) error "Classes, definitions, and nodes may only appear at toplevel or inside other classes", \ :line => stmt.context[:line], :file => stmt.context[:file] end end result = val[0] - - result + result end .,., -# reduce 6 omitted + # reduce 6 omitted -# reduce 7 omitted + # reduce 7 omitted -# reduce 8 omitted + # reduce 8 omitted -# reduce 9 omitted + # reduce 9 omitted -# reduce 10 omitted + # reduce 10 omitted -# reduce 11 omitted + # reduce 11 omitted -# reduce 12 omitted + # reduce 12 omitted -# reduce 13 omitted + # reduce 13 omitted -# reduce 14 omitted + # reduce 14 omitted -# reduce 15 omitted + # reduce 15 omitted -# reduce 16 omitted + # reduce 16 omitted -# reduce 17 omitted + # reduce 17 omitted -# reduce 18 omitted + # reduce 18 omitted -# reduce 19 omitted + # reduce 19 omitted -module_eval(<<'.,.,', 'grammar.ra', 70) - def _reduce_20(val, _values, result) - result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) - - result +module_eval <<'.,.,', 'grammar.ra', 74 + def _reduce_20( val, _values, result ) + result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 73) - def _reduce_21(val, _values, result) - result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) - - result +module_eval <<'.,.,', 'grammar.ra', 77 + def _reduce_21( val, _values, result ) + result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) + result end .,., -# reduce 22 omitted + # reduce 22 omitted -# reduce 23 omitted + # reduce 23 omitted -# reduce 24 omitted + # reduce 24 omitted -# reduce 25 omitted + # reduce 25 omitted -# reduce 26 omitted + # reduce 26 omitted -# reduce 27 omitted + # reduce 27 omitted -# reduce 28 omitted + # reduce 28 omitted -module_eval(<<'.,.,', 'grammar.ra', 81) - def _reduce_29(val, _values, result) - args = aryfy(val[2]) +module_eval <<'.,.,', 'grammar.ra', 89 + def _reduce_29( val, _values, result ) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[2], :ftype => :statement - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 89) - def _reduce_30(val, _values, result) - args = aryfy(val[2]) +module_eval <<'.,.,', 'grammar.ra', 96 + def _reduce_30( val, _values, result ) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[2], :ftype => :statement - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 96) - def _reduce_31(val, _values, result) - result = ast AST::Function, +module_eval <<'.,.,', 'grammar.ra', 102 + def _reduce_31( val, _values, result ) + result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), :ftype => :statement - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 103) - def _reduce_32(val, _values, result) - args = aryfy(val[1]) +module_eval <<'.,.,', 'grammar.ra', 109 + def _reduce_32( val, _values, result ) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[1], :ftype => :statement - - result + result end .,., -# reduce 33 omitted - -# reduce 34 omitted - -module_eval(<<'.,.,', 'grammar.ra', 114) - def _reduce_35(val, _values, result) - result = aryfy(val[0], val[2]) - result.line = @lexer.line - result.file = @lexer.file - - result +module_eval <<'.,.,', 'grammar.ra', 110 + def _reduce_33( val, _values, result ) + result = aryfy(val[0]) + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 119) - def _reduce_36(val, _values, result) - unless val[0].is_a?(AST::ASTArray) - val[0] = aryfy(val[0]) +module_eval <<'.,.,', 'grammar.ra', 111 + def _reduce_34( val, _values, result ) + result = aryfy(val[0]) + result end +.,., - val[0].push(val[2]) - - result = val[0] +module_eval <<'.,.,', 'grammar.ra', 116 + def _reduce_35( val, _values, result ) + val[0].push(val[2]) + result = val[0] + result + end +.,., - result +module_eval <<'.,.,', 'grammar.ra', 120 + def _reduce_36( val, _values, result ) + val[0].push(val[2]) + result = val[0] + result end .,., -# reduce 37 omitted + # reduce 37 omitted -# reduce 38 omitted + # reduce 38 omitted -# reduce 39 omitted + # reduce 39 omitted -# reduce 40 omitted + # reduce 40 omitted -# reduce 41 omitted + # reduce 41 omitted -# reduce 42 omitted + # reduce 42 omitted -# reduce 43 omitted + # reduce 43 omitted -# reduce 44 omitted + # reduce 44 omitted -module_eval(<<'.,.,', 'grammar.ra', 139) - def _reduce_45(val, _values, result) - result = ast AST::Name, :value => val[0][:value] - - result +module_eval <<'.,.,', 'grammar.ra', 134 + def _reduce_45( val, _values, result ) + result = ast AST::Name, :value => val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 143) - def _reduce_46(val, _values, result) - @lexer.commentpop - array = val[2] - array = [array] if array.instance_of?(AST::ResourceInstance) - result = ast AST::ASTArray - - # this iterates across each specified resourceinstance - array.each { |instance| - raise Puppet::Dev, "Got something that isn't an instance" unless instance.instance_of?(AST::ResourceInstance) - # now, i need to somehow differentiate between those things with - # arrays in their names, and normal things - - result.push ast( - AST::Resource, - :type => val[0], - :title => instance[0], - - :parameters => instance[1]) - } - - result +module_eval <<'.,.,', 'grammar.ra', 139 + def _reduce_46( val, _values, result ) + @lexer.commentpop + result = ast(AST::Resource, :type => val[0], :instances => val[2]) + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 162) - def _reduce_47(val, _values, result) - # This is a deprecated syntax. +module_eval <<'.,.,', 'grammar.ra', 142 + def _reduce_47( val, _values, result ) + # This is a deprecated syntax. error "All resource specifications require names" - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 165) - def _reduce_48(val, _values, result) - # a defaults setting for a type +module_eval <<'.,.,', 'grammar.ra', 146 + def _reduce_48( val, _values, result ) + # a defaults setting for a type @lexer.commentpop result = ast(AST::ResourceDefaults, :type => val[0], :parameters => val[2]) - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 172) - def _reduce_49(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 152 + def _reduce_49( val, _values, result ) + @lexer.commentpop result = ast AST::ResourceOverride, :object => val[0], :parameters => val[2] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 179) - def _reduce_50(val, _values, result) - type = val[0] +module_eval <<'.,.,', 'grammar.ra', 171 + def _reduce_50( val, _values, result ) + type = val[0] if (type == :exported and ! Puppet[:storeconfigs]) and ! Puppet[:parseonly] Puppet.warning addcontext("You cannot collect without storeconfigs being set") @@ -1388,38 +1365,31 @@ module_eval(<<'.,.,', 'grammar.ra', 179) method = type.to_s + "=" - # Just mark our resources as exported and pass them through. - if val[1].instance_of?(AST::ASTArray) - val[1].each do |obj| - obj.send(method, true) - end - else - val[1].send(method, true) - end + # Just mark our resource as exported and pass it through. + val[1].send(method, true) result = val[1] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 201) - def _reduce_51(val, _values, result) - result = :virtual - result +module_eval <<'.,.,', 'grammar.ra', 172 + def _reduce_51( val, _values, result ) + result = :virtual + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 202) - def _reduce_52(val, _values, result) - result = :exported - result +module_eval <<'.,.,', 'grammar.ra', 173 + def _reduce_52( val, _values, result ) + result = :exported + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 207) - def _reduce_53(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 196 + def _reduce_53( val, _values, result ) + @lexer.commentpop Puppet.warning addcontext("Collection names must now be capitalized") if val[0] =~ /^[a-z]/ type = val[0].downcase args = {:type => type} @@ -1436,14 +1406,13 @@ module_eval(<<'.,.,', 'grammar.ra', 207) end args[:override] = val[3] result = ast AST::Collection, args - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 226) - def _reduce_54(val, _values, result) - if val[0] =~ /^[a-z]/ +module_eval <<'.,.,', 'grammar.ra', 215 + def _reduce_54( val, _values, result ) + if val[0] =~ /^[a-z]/ Puppet.warning addcontext("Collection names must now be capitalized") end type = val[0].downcase @@ -1460,412 +1429,377 @@ module_eval(<<'.,.,', 'grammar.ra', 226) Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored") end result = ast AST::Collection, args - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 247) - def _reduce_55(val, _values, result) - if val[1] +module_eval <<'.,.,', 'grammar.ra', 225 + def _reduce_55( val, _values, result ) + if val[1] result = val[1] result.form = :virtual else result = :virtual end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 255) - def _reduce_56(val, _values, result) - if val[1] +module_eval <<'.,.,', 'grammar.ra', 233 + def _reduce_56( val, _values, result ) + if val[1] result = val[1] result.form = :exported else result = :exported end - - result + result end .,., -# reduce 57 omitted - -# reduce 58 omitted + # reduce 57 omitted -module_eval(<<'.,.,', 'grammar.ra', 268) - def _reduce_59(val, _values, result) - result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] + # reduce 58 omitted - result +module_eval <<'.,.,', 'grammar.ra', 241 + def _reduce_59( val, _values, result ) + result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] + result end .,., -# reduce 60 omitted + # reduce 60 omitted -module_eval(<<'.,.,', 'grammar.ra', 273) - def _reduce_61(val, _values, result) - result = val[1] +module_eval <<'.,.,', 'grammar.ra', 247 + def _reduce_61( val, _values, result ) + result = val[1] result.parens = true - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 277) - def _reduce_62(val, _values, result) - result=val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 248 + def _reduce_62( val, _values, result ) + result=val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 278) - def _reduce_63(val, _values, result) - result=val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 249 + def _reduce_63( val, _values, result ) + result=val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 281) - def _reduce_64(val, _values, result) - result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] +module_eval <<'.,.,', 'grammar.ra', 256 + def _reduce_64( val, _values, result ) + result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] #result = ast AST::CollExpr #result.push *val - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 286) - def _reduce_65(val, _values, result) - result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] +module_eval <<'.,.,', 'grammar.ra', 261 + def _reduce_65( val, _values, result ) + result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] #result = ast AST::CollExpr #result.push *val - - result + result end .,., -# reduce 66 omitted - -# reduce 67 omitted + # reduce 66 omitted -module_eval(<<'.,.,', 'grammar.ra', 295) - def _reduce_68(val, _values, result) - result = ast AST::ResourceInstance, :children => [val[0],val[2]] + # reduce 67 omitted - result +module_eval <<'.,.,', 'grammar.ra', 268 + def _reduce_68( val, _values, result ) + result = ast AST::ResourceInstance, :title => val[0], :parameters => val[2] + result end .,., -# reduce 69 omitted +module_eval <<'.,.,', 'grammar.ra', 269 + def _reduce_69( val, _values, result ) + result = aryfy(val[0]) + result + end +.,., -module_eval(<<'.,.,', 'grammar.ra', 300) - def _reduce_70(val, _values, result) - if val[0].instance_of?(AST::ResourceInstance) - result = ast AST::ASTArray, :children => [val[0],val[2]] - else +module_eval <<'.,.,', 'grammar.ra', 274 + def _reduce_70( val, _values, result ) val[0].push val[2] result = val[0] - end - - result + result end .,., -# reduce 71 omitted - -# reduce 72 omitted + # reduce 71 omitted -module_eval(<<'.,.,', 'grammar.ra', 312) - def _reduce_73(val, _values, result) - result = ast AST::Undef, :value => :undef + # reduce 72 omitted - result +module_eval <<'.,.,', 'grammar.ra', 281 + def _reduce_73( val, _values, result ) + result = ast AST::Undef, :value => :undef + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 316) - def _reduce_74(val, _values, result) - result = ast AST::Name, :value => val[0][:value], :line => val[0][:line] - - result +module_eval <<'.,.,', 'grammar.ra', 285 + def _reduce_74( val, _values, result ) + result = ast AST::Name, :value => val[0][:value], :line => val[0][:line] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 320) - def _reduce_75(val, _values, result) - result = ast AST::Type, :value => val[0][:value], :line => val[0][:line] - - result +module_eval <<'.,.,', 'grammar.ra', 289 + def _reduce_75( val, _values, result ) + result = ast AST::Type, :value => val[0][:value], :line => val[0][:line] + result end .,., -# reduce 76 omitted + # reduce 76 omitted -# reduce 77 omitted + # reduce 77 omitted -# reduce 78 omitted + # reduce 78 omitted -# reduce 79 omitted + # reduce 79 omitted -# reduce 80 omitted + # reduce 80 omitted -# reduce 81 omitted + # reduce 81 omitted -# reduce 82 omitted + # reduce 82 omitted -module_eval(<<'.,.,', 'grammar.ra', 332) - def _reduce_83(val, _values, result) - raise Puppet::ParseError, "Cannot assign to variables in other namespaces" if val[0][:value] =~ /::/ +module_eval <<'.,.,', 'grammar.ra', 304 + def _reduce_83( val, _values, result ) + raise Puppet::ParseError, "Cannot assign to variables in other namespaces" if val[0][:value] =~ /::/ # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :line => val[0][:line] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 338) - def _reduce_84(val, _values, result) - result = ast AST::VarDef, :name => val[0], :value => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 307 + def _reduce_84( val, _values, result ) + result = ast AST::VarDef, :name => val[0], :value => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 342) - def _reduce_85(val, _values, result) - variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] +module_eval <<'.,.,', 'grammar.ra', 312 + def _reduce_85( val, _values, result ) + variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :append => true, :line => val[0][:line] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 348) - def _reduce_86(val, _values, result) - result = ast AST::ASTArray - - result +module_eval <<'.,.,', 'grammar.ra', 317 + def _reduce_86( val, _values, result ) + result = ast AST::ASTArray + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 350) - def _reduce_87(val, _values, result) - result = val[0] - result +module_eval <<'.,.,', 'grammar.ra', 317 + def _reduce_87( val, _values, result ) + result = aryfy(val[0]) + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 352) - def _reduce_88(val, _values, result) - if val[0].instance_of?(AST::ASTArray) +module_eval <<'.,.,', 'grammar.ra', 322 + def _reduce_88( val, _values, result ) val[0].push(val[2]) result = val[0] - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 361) - def _reduce_89(val, _values, result) - result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 326 + def _reduce_89( val, _values, result ) + result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 365) - def _reduce_90(val, _values, result) - result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2], +module_eval <<'.,.,', 'grammar.ra', 331 + def _reduce_90( val, _values, result ) + result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2], :add => true - - result + result end .,., -# reduce 91 omitted + # reduce 91 omitted -# reduce 92 omitted + # reduce 92 omitted -module_eval(<<'.,.,', 'grammar.ra', 374) - def _reduce_93(val, _values, result) - result = ast AST::ASTArray - - result +module_eval <<'.,.,', 'grammar.ra', 339 + def _reduce_93( val, _values, result ) + result = ast AST::ASTArray + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 376) - def _reduce_94(val, _values, result) - result = val[0] - result +module_eval <<'.,.,', 'grammar.ra', 339 + def _reduce_94( val, _values, result ) + result = aryfy(val[0]) + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 378) - def _reduce_95(val, _values, result) - if val[0].instance_of?(AST::ASTArray) +module_eval <<'.,.,', 'grammar.ra', 344 + def _reduce_95( val, _values, result ) val[0].push(val[2]) result = val[0] - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end - - result + result end .,., -# reduce 96 omitted - -module_eval(<<'.,.,', 'grammar.ra', 388) - def _reduce_97(val, _values, result) - if val[0].instance_of?(AST::ASTArray) - result = val[0].push(val[2]) - else - result = ast AST::ASTArray, :children => [val[0],val[2]] +module_eval <<'.,.,', 'grammar.ra', 345 + def _reduce_96( val, _values, result ) + result = aryfy(val[0]) + result end +.,., - result +module_eval <<'.,.,', 'grammar.ra', 346 + def _reduce_97( val, _values, result ) + result = val[0].push(val[2]) + result end .,., -# reduce 98 omitted + # reduce 98 omitted -# reduce 99 omitted + # reduce 99 omitted -# reduce 100 omitted + # reduce 100 omitted -# reduce 101 omitted + # reduce 101 omitted -# reduce 102 omitted + # reduce 102 omitted -# reduce 103 omitted + # reduce 103 omitted -# reduce 104 omitted + # reduce 104 omitted -# reduce 105 omitted + # reduce 105 omitted -# reduce 106 omitted + # reduce 106 omitted -# reduce 107 omitted + # reduce 107 omitted -# reduce 108 omitted + # reduce 108 omitted -# reduce 109 omitted + # reduce 109 omitted -# reduce 110 omitted + # reduce 110 omitted -# reduce 111 omitted + # reduce 111 omitted -# reduce 112 omitted + # reduce 112 omitted -# reduce 113 omitted + # reduce 113 omitted -# reduce 114 omitted + # reduce 114 omitted -# reduce 115 omitted + # reduce 115 omitted -module_eval(<<'.,.,', 'grammar.ra', 417) - def _reduce_116(val, _values, result) - args = aryfy(val[2]) +module_eval <<'.,.,', 'grammar.ra', 375 + def _reduce_116( val, _values, result ) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], - :arguments => args, + :arguments => val[2], :ftype => :rvalue - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 423) - def _reduce_117(val, _values, result) - result = ast AST::Function, +module_eval <<'.,.,', 'grammar.ra', 380 + def _reduce_117( val, _values, result ) + result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), :ftype => :rvalue - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 429) - def _reduce_118(val, _values, result) - result = ast AST::String, :value => val[0][:value], :line => val[0][:line] - result +module_eval <<'.,.,', 'grammar.ra', 381 + def _reduce_118( val, _values, result ) + result = ast AST::String, :value => val[0][:value], :line => val[0][:line] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 430) - def _reduce_119(val, _values, result) - result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line] - result +module_eval <<'.,.,', 'grammar.ra', 382 + def _reduce_119( val, _values, result ) + result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 432) - def _reduce_120(val, _values, result) - result = [val[0]] + val[1] - result +module_eval <<'.,.,', 'grammar.ra', 384 + def _reduce_120( val, _values, result ) + result = [val[0]] + val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 434) - def _reduce_121(val, _values, result) - result = [ast(AST::String,val[0])] - result +module_eval <<'.,.,', 'grammar.ra', 386 + def _reduce_121( val, _values, result ) + result = [ast(AST::String,val[0])] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 435) - def _reduce_122(val, _values, result) - result = [ast(AST::String,val[0])] + val[1] - result +module_eval <<'.,.,', 'grammar.ra', 387 + def _reduce_122( val, _values, result ) + result = [ast(AST::String,val[0])] + val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 438) - def _reduce_123(val, _values, result) - result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line] - - result +module_eval <<'.,.,', 'grammar.ra', 392 + def _reduce_123( val, _values, result ) + result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 442) - def _reduce_124(val, _values, result) - Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") +module_eval <<'.,.,', 'grammar.ra', 397 + def _reduce_124( val, _values, result ) + Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceReference, :type => val[0][:value], :line => val[0][:line], :title => val[2] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 445) - def _reduce_125(val, _values, result) - result = ast AST::ResourceReference, :type => val[0], :title => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 399 + def _reduce_125( val, _values, result ) + result = ast AST::ResourceReference, :type => val[0], :title => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 449) - def _reduce_126(val, _values, result) - result = val[1] - - result +module_eval <<'.,.,', 'grammar.ra', 403 + def _reduce_126( val, _values, result ) + result = val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 453) - def _reduce_127(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 415 + def _reduce_127( val, _values, result ) + @lexer.commentpop args = { :test => val[0], :statements => val[2] @@ -1874,14 +1808,13 @@ module_eval(<<'.,.,', 'grammar.ra', 453) args[:else] = val[4] if val[4] result = ast AST::IfStatement, args - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 464) - def _reduce_128(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 426 + def _reduce_128( val, _values, result ) + @lexer.commentpop args = { :test => val[0], :statements => ast(AST::Nop) @@ -1890,239 +1823,211 @@ module_eval(<<'.,.,', 'grammar.ra', 464) args[:else] = val[3] if val[3] result = ast AST::IfStatement, args - - result + result end .,., -# reduce 129 omitted - -module_eval(<<'.,.,', 'grammar.ra', 477) - def _reduce_130(val, _values, result) - result = ast AST::Else, :statements => val[1] + # reduce 129 omitted - result +module_eval <<'.,.,', 'grammar.ra', 431 + def _reduce_130( val, _values, result ) + result = ast AST::Else, :statements => val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 480) - def _reduce_131(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 435 + def _reduce_131( val, _values, result ) + @lexer.commentpop result = ast AST::Else, :statements => val[2] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 484) - def _reduce_132(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 439 + def _reduce_132( val, _values, result ) + @lexer.commentpop result = ast AST::Else, :statements => ast(AST::Nop) - - result + result end .,., -# reduce 133 omitted - -module_eval(<<'.,.,', 'grammar.ra', 502) - def _reduce_134(val, _values, result) - result = ast AST::InOperator, :lval => val[0], :rval => val[2] + # reduce 133 omitted - result +module_eval <<'.,.,', 'grammar.ra', 456 + def _reduce_134( val, _values, result ) + result = ast AST::InOperator, :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 505) - def _reduce_135(val, _values, result) - result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 459 + def _reduce_135( val, _values, result ) + result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 508) - def _reduce_136(val, _values, result) - result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 462 + def _reduce_136( val, _values, result ) + result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 511) - def _reduce_137(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 465 + def _reduce_137( val, _values, result ) + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 514) - def _reduce_138(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 468 + def _reduce_138( val, _values, result ) + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 517) - def _reduce_139(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 471 + def _reduce_139( val, _values, result ) + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 520) - def _reduce_140(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 474 + def _reduce_140( val, _values, result ) + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 523) - def _reduce_141(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 477 + def _reduce_141( val, _values, result ) + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 526) - def _reduce_142(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 480 + def _reduce_142( val, _values, result ) + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 529) - def _reduce_143(val, _values, result) - result = ast AST::Minus, :value => val[1] - - result +module_eval <<'.,.,', 'grammar.ra', 483 + def _reduce_143( val, _values, result ) + result = ast AST::Minus, :value => val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 532) - def _reduce_144(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 486 + def _reduce_144( val, _values, result ) + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 535) - def _reduce_145(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 489 + def _reduce_145( val, _values, result ) + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 538) - def _reduce_146(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 492 + def _reduce_146( val, _values, result ) + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 541) - def _reduce_147(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 495 + def _reduce_147( val, _values, result ) + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 544) - def _reduce_148(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 498 + def _reduce_148( val, _values, result ) + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 547) - def _reduce_149(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 501 + def _reduce_149( val, _values, result ) + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 550) - def _reduce_150(val, _values, result) - result = ast AST::Not, :value => val[1] - - result +module_eval <<'.,.,', 'grammar.ra', 504 + def _reduce_150( val, _values, result ) + result = ast AST::Not, :value => val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 553) - def _reduce_151(val, _values, result) - result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 507 + def _reduce_151( val, _values, result ) + result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 556) - def _reduce_152(val, _values, result) - result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 510 + def _reduce_152( val, _values, result ) + result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 559) - def _reduce_153(val, _values, result) - result = val[1] - - result +module_eval <<'.,.,', 'grammar.ra', 513 + def _reduce_153( val, _values, result ) + result = val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 563) - def _reduce_154(val, _values, result) - @lexer.commentpop - options = val[3] - options = ast AST::ASTArray, :children => [val[3]] unless options.instance_of?(AST::ASTArray) - result = ast AST::CaseStatement, :test => val[1], :options => options - - result +module_eval <<'.,.,', 'grammar.ra', 518 + def _reduce_154( val, _values, result ) + @lexer.commentpop + result = ast AST::CaseStatement, :test => val[1], :options => val[3] + result end .,., -# reduce 155 omitted +module_eval <<'.,.,', 'grammar.ra', 519 + def _reduce_155( val, _values, result ) + result = aryfy(val[0]) + result + end +.,., -module_eval(<<'.,.,', 'grammar.ra', 571) - def _reduce_156(val, _values, result) - if val[0].instance_of?(AST::ASTArray) +module_eval <<'.,.,', 'grammar.ra', 524 + def _reduce_156( val, _values, result ) val[0].push val[1] result = val[0] - else - result = ast AST::ASTArray, :children => [val[0], val[1]] - end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 580) - def _reduce_157(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 529 + def _reduce_157( val, _values, result ) + @lexer.commentpop result = ast AST::CaseOpt, :value => val[0], :statements => val[3] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 583) - def _reduce_158(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 538 + def _reduce_158( val, _values, result ) + @lexer.commentpop result = ast( AST::CaseOpt, @@ -2130,524 +2035,479 @@ module_eval(<<'.,.,', 'grammar.ra', 583) :statements => ast(AST::ASTArray) ) - - result + result end .,., -# reduce 159 omitted +module_eval <<'.,.,', 'grammar.ra', 539 + def _reduce_159( val, _values, result ) + result = aryfy(val[0]) + result + end +.,., -module_eval(<<'.,.,', 'grammar.ra', 595) - def _reduce_160(val, _values, result) - if val[0].instance_of?(AST::ASTArray) +module_eval <<'.,.,', 'grammar.ra', 544 + def _reduce_160( val, _values, result ) val[0].push(val[2]) result = val[0] - else - result = ast AST::ASTArray, :children => [val[0],val[2]] - end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 604) - def _reduce_161(val, _values, result) - result = ast AST::Selector, :param => val[0], :values => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 548 + def _reduce_161( val, _values, result ) + result = ast AST::Selector, :param => val[0], :values => val[2] + result end .,., -# reduce 162 omitted + # reduce 162 omitted -module_eval(<<'.,.,', 'grammar.ra', 609) - def _reduce_163(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 554 + def _reduce_163( val, _values, result ) + @lexer.commentpop result = val[1] - - result + result end .,., -# reduce 164 omitted + # reduce 164 omitted -module_eval(<<'.,.,', 'grammar.ra', 615) - def _reduce_165(val, _values, result) - if val[0].instance_of?(AST::ASTArray) +module_eval <<'.,.,', 'grammar.ra', 564 + def _reduce_165( val, _values, result ) + if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] else result = ast AST::ASTArray, :children => [val[0],val[2]] end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 624) - def _reduce_166(val, _values, result) - result = ast AST::ResourceParam, :param => val[0], :value => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 568 + def _reduce_166( val, _values, result ) + result = ast AST::ResourceParam, :param => val[0], :value => val[2] + result end .,., -# reduce 167 omitted + # reduce 167 omitted -# reduce 168 omitted + # reduce 168 omitted -# reduce 169 omitted + # reduce 169 omitted -# reduce 170 omitted + # reduce 170 omitted -# reduce 171 omitted + # reduce 171 omitted -# reduce 172 omitted + # reduce 172 omitted -# reduce 173 omitted + # reduce 173 omitted -module_eval(<<'.,.,', 'grammar.ra', 635) - def _reduce_174(val, _values, result) - result = ast AST::Default, :value => val[0][:value], :line => val[0][:line] - - result +module_eval <<'.,.,', 'grammar.ra', 579 + def _reduce_174( val, _values, result ) + result = ast AST::Default, :value => val[0][:value], :line => val[0][:line] + result end .,., -# reduce 175 omitted + # reduce 175 omitted -module_eval(<<'.,.,', 'grammar.ra', 640) - def _reduce_176(val, _values, result) - result = [val[0][:value]] - result +module_eval <<'.,.,', 'grammar.ra', 582 + def _reduce_176( val, _values, result ) + result = [val[0][:value]] + result end .,., -# reduce 177 omitted + # reduce 177 omitted -module_eval(<<'.,.,', 'grammar.ra', 642) - def _reduce_178(val, _values, result) - result = val[0] += val[2] - result +module_eval <<'.,.,', 'grammar.ra', 584 + def _reduce_178( val, _values, result ) + result = val[0] += val[2] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 645) - def _reduce_179(val, _values, result) - val[1].each do |file| +module_eval <<'.,.,', 'grammar.ra', 593 + def _reduce_179( val, _values, result ) + val[1].each do |file| import(file) end - result = AST::ASTArray.new(:children => []) - - result + result = nil + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 655) - def _reduce_180(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 605 + def _reduce_180( val, _values, result ) + @lexer.commentpop result = Puppet::Parser::AST::Definition.new(classname(val[1]), ast_context(true).merge(:arguments => val[2], :code => val[4], :line => val[0][:line])) @lexer.indefine = false #} | DEFINE NAME argumentlist parent LBRACE RBRACE { - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 663) - def _reduce_181(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 610 + def _reduce_181( val, _values, result ) + @lexer.commentpop result = Puppet::Parser::AST::Definition.new(classname(val[1]), ast_context(true).merge(:arguments => val[2], :line => val[0][:line])) @lexer.indefine = false - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 671) - def _reduce_182(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 620 + def _reduce_182( val, _values, result ) + @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop result = Puppet::Parser::AST::Hostclass.new(classname(val[1]), ast_context(true).merge(:arguments => val[2], :parent => val[3], :code => val[5], :line => val[0][:line])) - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 678) - def _reduce_183(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 627 + def _reduce_183( val, _values, result ) + @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop result = Puppet::Parser::AST::Hostclass.new(classname(val[1]), ast_context(true).merge(:arguments => val[2], :parent => val[3], :line => val[0][:line])) - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 687) - def _reduce_184(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 634 + def _reduce_184( val, _values, result ) + @lexer.commentpop result = Puppet::Parser::AST::Node.new(val[1], ast_context(true).merge(:parent => val[2], :code => val[4], :line => val[0][:line])) - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 692) - def _reduce_185(val, _values, result) - @lexer.commentpop +module_eval <<'.,.,', 'grammar.ra', 637 + def _reduce_185( val, _values, result ) + @lexer.commentpop result = Puppet::Parser::AST::Node.new(val[1], ast_context(true).merge(:parent => val[2], :line => val[0][:line])) - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 696) - def _reduce_186(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 638 + def _reduce_186( val, _values, result ) + result = val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 698) - def _reduce_187(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 640 + def _reduce_187( val, _values, result ) + result = val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 699) - def _reduce_188(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 641 + def _reduce_188( val, _values, result ) + result = val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 700) - def _reduce_189(val, _values, result) - result = "class" - result +module_eval <<'.,.,', 'grammar.ra', 642 + def _reduce_189( val, _values, result ) + result = "class" + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 705) - def _reduce_190(val, _values, result) - result = [result] - - result +module_eval <<'.,.,', 'grammar.ra', 649 + def _reduce_190( val, _values, result ) + result = [result] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 708) - def _reduce_191(val, _values, result) - result = val[0] +module_eval <<'.,.,', 'grammar.ra', 653 + def _reduce_191( val, _values, result ) + result = val[0] result << val[2] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 713) - def _reduce_192(val, _values, result) - result = ast AST::HostName, :value => val[0] - - result +module_eval <<'.,.,', 'grammar.ra', 657 + def _reduce_192( val, _values, result ) + result = ast AST::HostName, :value => val[0] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 716) - def _reduce_193(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 658 + def _reduce_193( val, _values, result ) + result = val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 717) - def _reduce_194(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 659 + def _reduce_194( val, _values, result ) + result = val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 718) - def _reduce_195(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 660 + def _reduce_195( val, _values, result ) + result = val[0][:value] + result end .,., -# reduce 196 omitted + # reduce 196 omitted -module_eval(<<'.,.,', 'grammar.ra', 722) - def _reduce_197(val, _values, result) - result = nil - - result +module_eval <<'.,.,', 'grammar.ra', 666 + def _reduce_197( val, _values, result ) + result = nil + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 726) - def _reduce_198(val, _values, result) - result = ast AST::ASTArray, :children => [] - - result +module_eval <<'.,.,', 'grammar.ra', 670 + def _reduce_198( val, _values, result ) + result = ast AST::ASTArray, :children => [] + result end .,., -# reduce 199 omitted + # reduce 199 omitted -module_eval(<<'.,.,', 'grammar.ra', 731) - def _reduce_200(val, _values, result) - result = nil - - result +module_eval <<'.,.,', 'grammar.ra', 675 + def _reduce_200( val, _values, result ) + result = nil + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 734) - def _reduce_201(val, _values, result) - result = val[1] +module_eval <<'.,.,', 'grammar.ra', 679 + def _reduce_201( val, _values, result ) + result = val[1] result = [result] unless result[0].is_a?(Array) - - result + result end .,., -# reduce 202 omitted + # reduce 202 omitted -module_eval(<<'.,.,', 'grammar.ra', 740) - def _reduce_203(val, _values, result) - result = val[0] +module_eval <<'.,.,', 'grammar.ra', 686 + def _reduce_203( val, _values, result ) + result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 746) - def _reduce_204(val, _values, result) - Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") +module_eval <<'.,.,', 'grammar.ra', 691 + def _reduce_204( val, _values, result ) + Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value], val[2]] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 750) - def _reduce_205(val, _values, result) - Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") +module_eval <<'.,.,', 'grammar.ra', 695 + def _reduce_205( val, _values, result ) + Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value]] - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 753) - def _reduce_206(val, _values, result) - result = [val[0][:value], val[2]] - - result +module_eval <<'.,.,', 'grammar.ra', 697 + def _reduce_206( val, _values, result ) + result = [val[0][:value], val[2]] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 755) - def _reduce_207(val, _values, result) - result = [val[0][:value]] - - result +module_eval <<'.,.,', 'grammar.ra', 699 + def _reduce_207( val, _values, result ) + result = [val[0][:value]] + result end .,., -# reduce 208 omitted - -module_eval(<<'.,.,', 'grammar.ra', 760) - def _reduce_209(val, _values, result) - result = val[1] + # reduce 208 omitted - result +module_eval <<'.,.,', 'grammar.ra', 704 + def _reduce_209( val, _values, result ) + result = val[1] + result end .,., -# reduce 210 omitted - -module_eval(<<'.,.,', 'grammar.ra', 765) - def _reduce_211(val, _values, result) - result = val[1] + # reduce 210 omitted - result +module_eval <<'.,.,', 'grammar.ra', 709 + def _reduce_211( val, _values, result ) + result = val[1] + result end .,., -# reduce 212 omitted - -# reduce 213 omitted + # reduce 212 omitted -module_eval(<<'.,.,', 'grammar.ra', 771) - def _reduce_214(val, _values, result) - result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line] + # reduce 213 omitted - result +module_eval <<'.,.,', 'grammar.ra', 715 + def _reduce_214( val, _values, result ) + result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 775) - def _reduce_215(val, _values, result) - if val[1].instance_of?(AST::ASTArray) - result = val[1] - else - result = ast AST::ASTArray, :children => [val[1]] - end - - result +module_eval <<'.,.,', 'grammar.ra', 716 + def _reduce_215( val, _values, result ) + result = val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 782) - def _reduce_216(val, _values, result) - if val[1].instance_of?(AST::ASTArray) - result = val[1] - else - result = ast AST::ASTArray, :children => [val[1]] - end - - result +module_eval <<'.,.,', 'grammar.ra', 717 + def _reduce_216( val, _values, result ) + result = val[1] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 788) - def _reduce_217(val, _values, result) - result = ast AST::ASTArray - - result +module_eval <<'.,.,', 'grammar.ra', 718 + def _reduce_217( val, _values, result ) + result = ast AST::ASTArray + result end .,., -# reduce 218 omitted + # reduce 218 omitted -# reduce 219 omitted + # reduce 219 omitted -# reduce 220 omitted + # reduce 220 omitted -module_eval(<<'.,.,', 'grammar.ra', 795) - def _reduce_221(val, _values, result) - result = nil - result +module_eval <<'.,.,', 'grammar.ra', 724 + def _reduce_221( val, _values, result ) + result = nil + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 798) - def _reduce_222(val, _values, result) - result = ast AST::Regex, :value => val[0][:value] - - result +module_eval <<'.,.,', 'grammar.ra', 729 + def _reduce_222( val, _values, result ) + result = ast AST::Regex, :value => val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 802) - def _reduce_223(val, _values, result) - if val[1].instance_of?(AST::ASTHash) +module_eval <<'.,.,', 'grammar.ra', 737 + def _reduce_223( val, _values, result ) + if val[1].instance_of?(AST::ASTHash) result = val[1] else result = ast AST::ASTHash, { :value => val[1] } end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 809) - def _reduce_224(val, _values, result) - if val[1].instance_of?(AST::ASTHash) +module_eval <<'.,.,', 'grammar.ra', 744 + def _reduce_224( val, _values, result ) + if val[1].instance_of?(AST::ASTHash) result = val[1] else result = ast AST::ASTHash, { :value => val[1] } end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 815) - def _reduce_225(val, _values, result) - result = ast AST::ASTHash - - result +module_eval <<'.,.,', 'grammar.ra', 746 + def _reduce_225( val, _values, result ) + result = ast AST::ASTHash + result end .,., -# reduce 226 omitted + # reduce 226 omitted -module_eval(<<'.,.,', 'grammar.ra', 820) - def _reduce_227(val, _values, result) - if val[0].instance_of?(AST::ASTHash) +module_eval <<'.,.,', 'grammar.ra', 756 + def _reduce_227( val, _values, result ) + if val[0].instance_of?(AST::ASTHash) result = val[0].merge(val[2]) else result = ast AST::ASTHash, :value => val[0] result.merge(val[2]) end - - result + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 829) - def _reduce_228(val, _values, result) - result = ast AST::ASTHash, { :value => { val[0] => val[2] } } - - result +module_eval <<'.,.,', 'grammar.ra', 760 + def _reduce_228( val, _values, result ) + result = ast AST::ASTHash, { :value => { val[0] => val[2] } } + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 832) - def _reduce_229(val, _values, result) - result = val[0][:value] - result +module_eval <<'.,.,', 'grammar.ra', 761 + def _reduce_229( val, _values, result ) + result = val[0][:value] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 833) - def _reduce_230(val, _values, result) - result = val[0] - result +module_eval <<'.,.,', 'grammar.ra', 762 + def _reduce_230( val, _values, result ) + result = val[0] + result end .,., -module_eval(<<'.,.,', 'grammar.ra', 836) - def _reduce_231(val, _values, result) - result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2] - - result +module_eval <<'.,.,', 'grammar.ra', 767 + def _reduce_231( val, _values, result ) + result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2] + result end .,., -# reduce 232 omitted - -module_eval(<<'.,.,', 'grammar.ra', 841) - def _reduce_233(val, _values, result) - result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2] + # reduce 232 omitted - result +module_eval <<'.,.,', 'grammar.ra', 772 + def _reduce_233( val, _values, result ) + result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2] + result end .,., -def _reduce_none(val, _values, result) - val[0] -end + def _reduce_none( val, _values, result ) + result + end end # class Parser - end # module Parser - end # module Puppet + + end # module Parser + +end # module Puppet diff --git a/lib/puppet/parser/parser_support.rb b/lib/puppet/parser/parser_support.rb index 2b2571d87..b1688cd22 100644 --- a/lib/puppet/parser/parser_support.rb +++ b/lib/puppet/parser/parser_support.rb @@ -29,18 +29,9 @@ class Puppet::Parser::Parser message end - # Create an AST array out of all of the args - def aryfy(*args) - if args[0].instance_of?(AST::ASTArray) - result = args.shift - args.each { |arg| - result.push arg - } - else - result = ast AST::ASTArray, :children => args - end - - result + # Create an AST array containing a single element + def aryfy(arg) + ast AST::ASTArray, :children => [arg] end # Create an AST object, and automatically add the file and line information if diff --git a/lib/puppet/util/zaml.rb b/lib/puppet/util/zaml.rb index 8ecc2c8bd..b60e639ff 100644 --- a/lib/puppet/util/zaml.rb +++ b/lib/puppet/util/zaml.rb @@ -29,7 +29,8 @@ class ZAML @result = [] @indent = nil @structured_key_prefix = nil - Label.counter_reset + @previously_emitted_object = {} + @next_free_label_number = 0 emit('--- ') end def nested(tail=' ') @@ -55,31 +56,29 @@ class ZAML # which we will encounter a reference to the object as we serialize # it can be handled). # - def self.counter_reset - @@previously_emitted_object = {} - @@next_free_label_number = 0 - end + attr_accessor :this_label_number def initialize(obj,indent) @indent = indent @this_label_number = nil - @@previously_emitted_object[obj.object_id] = self end def to_s @this_label_number ? ('&id%03d%s' % [@this_label_number, @indent]) : '' end def reference - @this_label_number ||= (@@next_free_label_number += 1) @reference ||= '*id%03d' % @this_label_number end - def self.for(obj) - @@previously_emitted_object[obj.object_id] - end + end + def label_for(obj) + @previously_emitted_object[obj.object_id] end def new_label_for(obj) - Label.new(obj,(Hash === obj || Array === obj) ? "#{@indent || "\n"} " : ' ') + label = Label.new(obj,(Hash === obj || Array === obj) ? "#{@indent || "\n"} " : ' ') + @previously_emitted_object[obj.object_id] = label + label end def first_time_only(obj) - if label = Label.for(obj) + if label = label_for(obj) + label.this_label_number ||= (@next_free_label_number += 1) emit(label.reference) else if @structured_key_prefix and not obj.is_a? String diff --git a/spec/unit/parser/ast/astarray_spec.rb b/spec/unit/parser/ast/astarray_spec.rb index f79d6c533..8794848b6 100755 --- a/spec/unit/parser/ast/astarray_spec.rb +++ b/spec/unit/parser/ast/astarray_spec.rb @@ -23,43 +23,26 @@ describe Puppet::Parser::AST::ASTArray do operator.evaluate(@scope) end - it "should evaluate childrens of type ASTArray" do - item1 = stub "item1", :is_a? => true - item2 = stub "item2" - item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true) - item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true) - item2.stubs(:each).yields(item1) - - item1.expects(:safeevaluate).with(@scope).returns(123) - - operator = Puppet::Parser::AST::ASTArray.new :children => [item2] - operator.evaluate(@scope).should == [123] - end - - it "should flatten children coming from children ASTArray" do - item1 = stub "item1", :is_a? => true - item2 = stub "item2" - item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true) - item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true) - item2.stubs(:each).yields([item1]) - - item1.expects(:safeevaluate).with(@scope).returns(123) - - operator = Puppet::Parser::AST::ASTArray.new :children => [item2] - operator.evaluate(@scope).should == [123] + it "should not flatten children coming from children ASTArray" do + item = Puppet::Parser::AST::String.new :value => 'foo' + inner_array = Puppet::Parser::AST::ASTArray.new :children => [item, item] + operator = Puppet::Parser::AST::ASTArray.new :children => [inner_array, inner_array] + operator.evaluate(@scope).should == [['foo', 'foo'], ['foo', 'foo']] end it "should not flatten the results of children evaluation" do - item1 = stub "item1", :is_a? => true - item2 = stub "item2" - item2.stubs(:is_a?).with(Puppet::Parser::AST).returns(true) - item2.stubs(:instance_of?).with(Puppet::Parser::AST::ASTArray).returns(true) - item2.stubs(:each).yields([item1]) - - item1.expects(:safeevaluate).with(@scope).returns([123]) + item = Puppet::Parser::AST::String.new :value => 'foo' + item.stubs(:evaluate).returns(['foo']) + operator = Puppet::Parser::AST::ASTArray.new :children => [item, item] + operator.evaluate(@scope).should == [['foo'], ['foo']] + end - operator = Puppet::Parser::AST::ASTArray.new :children => [item2] - operator.evaluate(@scope).should == [[123]] + it "should discard nil results from children evaluation" do + item1 = Puppet::Parser::AST::String.new :value => 'foo' + item2 = Puppet::Parser::AST::String.new :value => 'foo' + item2.stubs(:evaluate).returns(nil) + operator = Puppet::Parser::AST::ASTArray.new :children => [item1, item2] + operator.evaluate(@scope).should == ['foo'] end it "should return a valid string with to_s" do diff --git a/spec/unit/parser/ast/resource_spec.rb b/spec/unit/parser/ast/resource_spec.rb index 6dbfc1f04..a8e783256 100755 --- a/spec/unit/parser/ast/resource_spec.rb +++ b/spec/unit/parser/ast/resource_spec.rb @@ -10,14 +10,15 @@ describe Puppet::Parser::AST::Resource do @compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("mynode")) @scope = Puppet::Parser::Scope.new(:compiler => @compiler) @scope.stubs(:resource).returns(stub_everything) - @resource = ast::Resource.new(:title => @title, :type => "file", :parameters => ast::ASTArray.new(:children => []) ) + @instance = ast::ResourceInstance.new(:title => @title, :parameters => ast::ASTArray.new(:children => [])) + @resource = ast::Resource.new(:type => "file", :instances => ast::ASTArray.new(:children => [@instance])) @resource.stubs(:qualified_type).returns("Resource") end it "should evaluate all its parameters" do param = stub 'param' param.expects(:safeevaluate).with(@scope).returns Puppet::Parser::Resource::Param.new(:name => "myparam", :value => "myvalue", :source => stub("source")) - @resource.stubs(:parameters).returns [param] + @instance.stubs(:parameters).returns [param] @resource.evaluate(@scope) end @@ -34,7 +35,7 @@ describe Puppet::Parser::AST::Resource do array = Puppet::Parser::AST::ASTArray.new(:children => titles) - @resource.title = array + @instance.title = array result = @resource.evaluate(@scope).collect { |r| r.title } result.should be_include("one") result.should be_include("two") @@ -48,12 +49,19 @@ describe Puppet::Parser::AST::Resource do array = Puppet::Parser::AST::ASTArray.new(:children => titles) - @resource.title = array + @instance.title = array result = @resource.evaluate(@scope).collect { |r| r.title } result.should be_include("one") result.should be_include("two") end + it "should implicitly iterate over instances" do + new_title = Puppet::Parser::AST::String.new(:value => "other_title") + new_instance = ast::ResourceInstance.new(:title => new_title, :parameters => ast::ASTArray.new(:children => [])) + @resource.instances.push(new_instance) + @resource.evaluate(@scope).collect { |r| r.title }.should == ["mytitle", "other_title"] + end + it "should handover resources to the compiler" do titles = [] %w{one two}.each do |title| @@ -62,7 +70,7 @@ describe Puppet::Parser::AST::Resource do array = Puppet::Parser::AST::ASTArray.new(:children => titles) - @resource.title = array + @instance.title = array result = @resource.evaluate(@scope) result.each do |res| @@ -98,7 +106,10 @@ describe Puppet::Parser::AST::Resource do def resource(type, params = nil) params ||= Puppet::Parser::AST::ASTArray.new(:children => []) - Puppet::Parser::AST::Resource.new(:type => type, :title => Puppet::Parser::AST::String.new(:value => "myresource"), :parameters => params) + instance = Puppet::Parser::AST::ResourceInstance.new( + :title => Puppet::Parser::AST::String.new(:value => "myresource"), :parameters => params) + Puppet::Parser::AST::Resource.new(:type => type, + :instances => Puppet::Parser::AST::ASTArray.new(:children => [instance])) end it "should be able to generate resources with fully qualified type information" do diff --git a/spec/unit/parser/parser_spec.rb b/spec/unit/parser/parser_spec.rb index 0a61e73de..bf4ef0cf1 100755 --- a/spec/unit/parser/parser_spec.rb +++ b/spec/unit/parser/parser_spec.rb @@ -143,7 +143,6 @@ describe Puppet::Parser do end it "should create an ast::ResourceReference" do - ast::Resource.stubs(:new) ast::ResourceReference.expects(:new).with { |arg| arg[:line]==1 and arg[:type]=="File" and arg[:title].is_a?(ast::ASTArray) } @@ -386,11 +385,11 @@ describe Puppet::Parser do end it "should correctly mark exported resources as exported" do - @parser.parse("@@file { '/file': }").code[0][0].exported.should be_true + @parser.parse("@@file { '/file': }").code[0].exported.should be_true end it "should correctly mark virtual resources as virtual" do - @parser.parse("@file { '/file': }").code[0][0].virtual.should be_true + @parser.parse("@file { '/file': }").code[0].virtual.should be_true end end diff --git a/spec/unit/util/zaml_spec.rb b/spec/unit/util/zaml_spec.rb index 4de57e6d3..14cf94f36 100644 --- a/spec/unit/util/zaml_spec.rb +++ b/spec/unit/util/zaml_spec.rb @@ -34,5 +34,30 @@ describe "Pure ruby yaml implementation" do lambda { YAML.load(o.to_yaml) }.should_not raise_error end } + + it "should emit proper labels and backreferences for common objects" do + # Note: this test makes assumptions about the names ZAML chooses + # for labels. + x = [1, 2] + y = [3, 4] + z = [x, y, x, y] + z.to_yaml.should == "--- \n - &id001\n - 1\n - 2\n - &id002\n - 3\n - 4\n - *id001\n - *id002" + z2 = YAML.load(z.to_yaml) + z2.should == z + z2[0].should equal(z2[2]) + z2[1].should equal(z2[3]) + end + + it "should emit proper labels and backreferences for recursive objects" do + x = [1, 2] + x << x + x.to_yaml.should == "--- &id001\n \n - 1\n - 2\n - *id001" + x2 = YAML.load(x.to_yaml) + x2.should be_a(Array) + x2.length.should == 3 + x2[0].should == 1 + x2[1].should == 2 + x2[2].should equal(x2) + end end diff --git a/test/language/parser.rb b/test/language/parser.rb index 6599757f0..6f3d751c2 100755 --- a/test/language/parser.rb +++ b/test/language/parser.rb @@ -477,9 +477,11 @@ file { "/tmp/yayness": end assert_instance_of(AST::ASTArray, ret.hostclass("").code) - resdef = ret.hostclass("").code[0][0] + resdef = ret.hostclass("").code[0] assert_instance_of(AST::Resource, resdef) - assert_equal("/tmp/testing", resdef.title.value) + assert_instance_of(AST::ASTArray, resdef.instances) + assert_equal(1, resdef.instances.children.length) + assert_equal("/tmp/testing", resdef.instances[0].title.value) # We always get an astarray back, so... check.call(resdef, "simple resource") diff --git a/test/lib/puppettest/parsertesting.rb b/test/lib/puppettest/parsertesting.rb index bd04c1ec5..411bad37a 100644 --- a/test/lib/puppettest/parsertesting.rb +++ b/test/lib/puppettest/parsertesting.rb @@ -94,16 +94,15 @@ module PuppetTest::ParserTesting def resourcedef(type, title, params) title = stringobj(title) unless title.is_a?(AST) + instance = AST::ResourceInstance.new(:title => title, :parameters => resourceparams(params)) assert_nothing_raised("Could not create #{type} #{title}") { return AST::Resource.new( :file => __FILE__, :line => __LINE__, - :title => title, :type => type, - - :parameters => resourceinst(params) + :instances => AST::ASTArray.new(:children => [instance]) ) } end @@ -122,9 +121,7 @@ module PuppetTest::ParserTesting :file => __FILE__, :line => __LINE__, :object => resourceref(type, title), - - :type => type, - :parameters => resourceinst(params) + :parameters => resourceparams(params) ) } end @@ -197,13 +194,13 @@ module PuppetTest::ParserTesting } end - def resourceinst(hash) + def resourceparams(hash) assert_nothing_raised("Could not create resource instance") { params = hash.collect { |param, value| resourceparam(param, value) } - return AST::ResourceInstance.new( + return AST::ASTArray.new( :file => tempfile, diff --git a/test/ral/providers/cron/crontab.rb b/test/ral/providers/cron/crontab.rb index 0c87a5bba..be2af1e16 100755 --- a/test/ral/providers/cron/crontab.rb +++ b/test/ral/providers/cron/crontab.rb @@ -97,7 +97,10 @@ class TestCronParsedProvider < Test::Unit::TestCase # Then do them all at once. records = [] text = "" - sample_records.each do |name, options| + # Sort sample_records so that the :empty entry does not come last + # (if it does, the test will fail because the empty last line will + # be ignored) + sample_records.sort { |a, b| a.first.to_s <=> b.first.to_s }.each do |name, options| records << options[:record] text += options[:text] + "\n" end |