diff --git a/lib/puppet/parser/ast/collection.rb b/lib/puppet/parser/ast/collection.rb index a51b9b4d2..55e99fc08 100644 --- a/lib/puppet/parser/ast/collection.rb +++ b/lib/puppet/parser/ast/collection.rb @@ -1,28 +1,59 @@ require 'puppet' require 'puppet/parser/ast/branch' require 'puppet/parser/collector' # An object that collects stored objects from the central cache and returns # them to the current host, yo. class Puppet::Parser::AST class Collection < AST::Branch attr_accessor :type, :query, :form + attr_reader :override associates_doc # We return an object that does a late-binding evaluation. def evaluate(scope) if self.query str, code = self.query.safeevaluate scope else str = code = nil end newcoll = Puppet::Parser::Collector.new(scope, @type, str, code, self.form) scope.compiler.add_collection(newcoll) + # overrides if any + # Evaluate all of the specified params. + if @override + params = @override.collect do |param| + param.safeevaluate(scope) + end + + newcoll.add_override( + :params => params, + :file => @file, + :line => @line, + :source => scope.source, + :scope => scope + ) + end + newcoll end + + # Handle our parameter ourselves + def override=(override) + if override.is_a?(AST::ASTArray) + @override = override + else + @override = AST::ASTArray.new( + :line => override.line, + :file => override.file, + :children => [override] + ) + end + end + end end diff --git a/lib/puppet/parser/collector.rb b/lib/puppet/parser/collector.rb index 9423db26b..ece420536 100644 --- a/lib/puppet/parser/collector.rb +++ b/lib/puppet/parser/collector.rb @@ -1,173 +1,218 @@ # An object that collects stored objects from the central cache and returns # them to the current host, yo. class Puppet::Parser::Collector - attr_accessor :type, :scope, :vquery, :equery, :form, :resources + attr_accessor :type, :scope, :vquery, :equery, :form, :resources, :overrides, :collected # Call the collection method, mark all of the returned objects as non-virtual, - # and then delete this object from the list of collections to evaluate. + # optionally applying parameter overrides. The collector can also delete himself + # from the compiler if there is no more resources to collect (valid only for resource fixed-set collector + # which get their resources from +collect_resources+ and not from the catalog) def evaluate # Shortcut if we're not using storeconfigs and they're trying to collect # exported resources. if form == :exported and Puppet[:storeconfigs] != true Puppet.warning "Not collecting exported resources without storeconfigs" return false end + if self.resources - if objects = collect_resources and ! objects.empty? - return objects - else + unless objects = collect_resources and ! objects.empty? return false end else method = "collect_#{@form.to_s}" objects = send(method).each do |obj| obj.virtual = false end if objects.empty? return false - else - return objects end end + + # we have an override for the collected resources + if @overrides and !objects.empty? + + # force the resource to be always child of any other resource + overrides[:source].meta_def(:child_of?) do + true + end + + # tell the compiler we have some override for him unless we already + # overrided those resources + objects.each do |res| + unless @collected.include?(res.ref) + res = Puppet::Parser::Resource.new( + :type => res.type, + :title => res.title, + :params => overrides[:params], + :file => overrides[:file], + :line => overrides[:line], + :source => overrides[:source], + :scope => overrides[:scope] + ) + + scope.compiler.add_override(res) + end + end + end + + # filter out object that already have been collected by ourself + objects.reject! { |o| @collected.include?(o.ref) } + + return false if objects.empty? + + # keep an eye on the resources we have collected + objects.inject(@collected) { |c,o| c[o.ref]=o; c } + + # return our newly collected resources + objects end def initialize(scope, type, equery, vquery, form) @scope = scope + # initialisation + @collected = {} + # Canonize the type @type = Puppet::Resource::Reference.new(type, "whatever").type @equery = equery @vquery = vquery raise(ArgumentError, "Invalid query form %s" % form) unless [:exported, :virtual].include?(form) @form = form end + # add a resource override to the soon to be exported/realized resources + def add_override(hash) + unless hash[:params] + raise ArgumentError, "Exported resource try to override without parameters" + end + + # schedule an override for an upcoming collection + @overrides = hash + end + private # Create our active record query. def build_active_record_query Puppet::Rails.init unless ActiveRecord::Base.connected? raise Puppet::DevError, "Cannot collect resources for a nil host" unless @scope.host host = Puppet::Rails::Host.find_by_name(@scope.host) query = {:include => {:param_values => :param_name}} search = "(exported=? AND restype=?)" values = [true, @type] search += " AND (%s)" % @equery if @equery # We're going to collect objects from rails, but we don't want any # objects from this host. search = ("host_id != ? AND %s" % search) and values.unshift(host.id) if host query[:conditions] = [search, *values] return query end # Collect exported objects. def collect_exported # First get everything from the export table. Just reuse our # collect_virtual method but tell it to use 'exported? for the test. resources = collect_virtual(true).reject { |r| ! r.virtual? } count = resources.length query = build_active_record_query # Now look them up in the rails db. When we support attribute comparison # and such, we'll need to vary the conditions, but this works with no # attributes, anyway. time = Puppet::Util.thinmark do Puppet::Rails::Resource.find(:all, @type, true, query).each do |obj| if resource = exported_resource(obj) count += 1 resources << resource end end end scope.debug("Collected %s %s resource%s in %.2f seconds" % [count, @type, count == 1 ? "" : "s", time]) return resources end def collect_resources unless @resources.is_a?(Array) @resources = [@resources] end method = "collect_#{form.to_s}_resources" send(method) end def collect_exported_resources raise Puppet::ParseError, "realize() is not yet implemented for exported resources" end # Collect resources directly; this is the result of using 'realize', # which specifies resources, rather than using a normal collection. def collect_virtual_resources return [] unless defined?(@resources) and ! @resources.empty? result = @resources.dup.collect do |ref| if res = @scope.findresource(ref.to_s) @resources.delete(ref) res end end.reject { |r| r.nil? }.each do |res| res.virtual = false end # If there are no more resources to find, delete this from the list # of collections. if @resources.empty? @scope.compiler.delete_collection(self) end return result end # Collect just virtual objects, from our local compiler. def collect_virtual(exported = false) - if exported - method = :exported? - else - method = :virtual? - end scope.compiler.resources.find_all do |resource| - resource.type == @type and resource.send(method) and match?(resource) + resource.type == @type and (exported ? resource.exported? : true) and match?(resource) end end # Seek a specific exported resource. def exported_resource(obj) if existing = @scope.findresource(obj.restype, obj.title) # Next see if we've already collected this resource return nil if existing.rails_id == obj.id # This is the one we've already collected raise Puppet::ParseError, "Exported resource %s cannot override local resource" % [obj.ref] end resource = obj.to_resource(self.scope) resource.exported = false - + scope.compiler.add_resource(scope, resource) return resource end # Does the resource match our tests? We don't yet support tests, # so it's always true at the moment. def match?(resource) if self.vquery return self.vquery.call(resource) else return true end end end diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index 67303ab46..9da2999df 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -1,769 +1,789 @@ # vim: syntax=ruby # the parser class Puppet::Parser::Parser token LBRACK DQTEXT SQTEXT RBRACK LBRACE RBRACE SYMBOL FARROW COMMA TRUE token FALSE EQUALS APPENDS LESSEQUAL NOTEQUAL DOT COLON LLCOLLECT RRCOLLECT token QMARK LPAREN RPAREN ISEQUAL GREATEREQUAL GREATERTHAN LESSTHAN token IF ELSE IMPORT DEFINE ELSIF VARIABLE CLASS INHERITS NODE BOOLEAN token NAME SEMIC CASE DEFAULT AT LCOLLECT RCOLLECT CLASSNAME CLASSREF token NOT OR AND UNDEF PARROW PLUS MINUS TIMES DIV LSHIFT RSHIFT UMINUS prechigh right NOT nonassoc UMINUS left TIMES DIV left MINUS PLUS left LSHIFT RSHIFT left NOTEQUAL ISEQUAL left GREATEREQUAL GREATERTHAN LESSTHAN LESSEQUAL left AND left OR preclow rule program: statements { if val[0] # Make sure we always return an array. if val[0].is_a?(AST::ASTArray) if val[0].children.empty? result = nil else result = val[0] end else result = aryfy(val[0]) end else result = nil end } | nil statements: statement | statements statement { if val[0] and val[1] 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 elsif obj = (val[0] || val[1]) result = obj else result = nil end } # The main list of valid statements statement: resource | virtualresource | collection | assignment | casestatement | ifstatement | import | fstatement | definition | hostclass | nodedef | resourceoverride | append fstatement: NAME LPAREN funcvalues RPAREN { args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement } | NAME LPAREN funcvalues COMMA RPAREN { args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement } | NAME LPAREN RPAREN { result = ast AST::Function, :name => val[0], :arguments => AST::ASTArray.new({}), :ftype => :statement } | NAME funcvalues { args = aryfy(val[1]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement } funcvalues: namestring | resourceref | funcvalues COMMA namestring { result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file } | funcvalues COMMA resourceref { unless val[0].is_a?(AST::ASTArray) val[0] = aryfy(val[0]) end val[0].push(val[2]) result = val[0] } # This is *almost* an rvalue, but I couldn't get a full # rvalue to work without scads of shift/reduce conflicts. namestring: name | variable | type | boolean | funcrvalue | selector | quotedtext | CLASSNAME { result = ast AST::Name, :value => val[0] } resource: classname LBRACE resourceinstances endsemi RBRACE { @lexer.commentpop array = val[2] if array.instance_of?(AST::ResourceInstance) array = [array] end result = ast AST::ASTArray # this iterates across each specified resourceinstance array.each { |instance| unless instance.instance_of?(AST::ResourceInstance) raise Puppet::Dev, "Got something that isn't an instance" end # 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], :params => instance[1]) } } | classname LBRACE params endcomma RBRACE { # This is a deprecated syntax. error "All resource specifications require names" } | classref LBRACE params endcomma RBRACE { # a defaults setting for a type result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2]) } # Override a value set elsewhere in the configuration. resourceoverride: resourceref LBRACE anyparams endcomma RBRACE { @lexer.commentpop result = ast AST::ResourceOverride, :object => val[0], :params => val[2] } # Exported and virtual resources; these don't get sent to the client # unless they get collected elsewhere in the db. virtualresource: at resource { type = val[0] if (type == :exported and ! Puppet[:storeconfigs]) and ! Puppet[:parseonly] Puppet.warning addcontext("You cannot collect without storeconfigs being set") end if val[1].is_a? AST::ResourceDefaults error "Defaults are not virtualizable" end 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 result = val[1] } at: AT { result = :virtual } | AT AT { result = :exported } # A collection statement. Currently supports no arguments at all, but eventually # will, I assume. -collection: classref collectrhand { +collection: classref collectrhand LBRACE anyparams endcomma RBRACE { + if val[0] =~ /^[a-z]/ + Puppet.warning addcontext("Collection names must now be capitalized") + end + type = val[0].downcase + args = {:type => type} + + if val[1].is_a?(AST::CollExpr) + args[:query] = val[1] + args[:query].type = type + args[:form] = args[:query].form + else + args[:form] = val[1] + end + if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly] + Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored") + end + args[:override] = val[3] + result = ast AST::Collection, args +} + | classref collectrhand { if val[0] =~ /^[a-z]/ Puppet.warning addcontext("Collection names must now be capitalized") end type = val[0].downcase args = {:type => type } if val[1].is_a?(AST::CollExpr) args[:query] = val[1] args[:query].type = type args[:form] = args[:query].form else args[:form] = val[1] end if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly] Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored") end result = ast AST::Collection, args } collectrhand: LCOLLECT collstatements RCOLLECT { if val[1] result = val[1] result.form = :virtual else result = :virtual end } | LLCOLLECT collstatements RRCOLLECT { if val[1] result = val[1] result.form = :exported else result = :exported end } # A mini-language for handling collection comparisons. This is organized # to avoid the need for precedence indications. collstatements: nil | collstatement | collstatements colljoin collstatement { result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] } collstatement: collexpr | LPAREN collstatements RPAREN { result = val[1] result.parens = true } colljoin: AND | OR collexpr: colllval ISEQUAL simplervalue { result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr #result.push *val } | colllval NOTEQUAL simplervalue { result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr #result.push *val } colllval: variable | name resourceinst: resourcename COLON params endcomma { result = ast AST::ResourceInstance, :children => [val[0],val[2]] } resourceinstances: resourceinst | 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 | SEMIC undef: UNDEF { result = ast AST::Undef, :value => :undef } name: NAME { result = ast AST::Name, :value => val[0] } type: CLASSREF { result = ast AST::Type, :value => val[0] } resourcename: quotedtext | name | type | selector | variable | array assignment: VARIABLE EQUALS expression { if val[0] =~ /::/ raise Puppet::ParseError, "Cannot assign to variables in other namespaces" end # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0] result = ast AST::VarDef, :name => variable, :value => val[2] } append: VARIABLE APPENDS expression { variable = ast AST::Name, :value => val[0] result = ast AST::VarDef, :name => variable, :value => val[2], :append => true } params: # nothing { result = ast AST::ASTArray } | param { result = 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 { result = ast AST::ResourceParam, :param => val[0], :value => val[2] } addparam: NAME PARROW rvalue { result = ast AST::ResourceParam, :param => val[0], :value => val[2], :add => true } anyparam: param | addparam anyparams: # nothing { result = ast AST::ASTArray } | anyparam { result = 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 } simplervalue: quotedtext | name | type | boolean | selector | variable rvalue: quotedtext | name | type | boolean | selector | variable | array | resourceref | funcrvalue | undef # We currently require arguments in these functions. funcrvalue: NAME LPAREN funcvalues RPAREN { args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :rvalue } | NAME LPAREN RPAREN { result = ast AST::Function, :name => val[0], :arguments => AST::ASTArray.new({}), :ftype => :rvalue } quotedtext: DQTEXT { result = ast AST::String, :value => val[0] } | SQTEXT { result = ast AST::FlatString, :value => val[0] } boolean: BOOLEAN { result = ast AST::Boolean, :value => val[0] } resourceref: NAME LBRACK rvalues RBRACK { Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceReference, :type => val[0], :title => val[2] } | classref LBRACK rvalues RBRACK { result = ast AST::ResourceReference, :type => val[0], :title => val[2] } ifstatement: IF expression LBRACE statements RBRACE else { @lexer.commentpop args = { :test => val[1], :statements => val[3] } if val[5] args[:else] = val[5] end result = ast AST::IfStatement, args } | IF expression LBRACE RBRACE else { @lexer.commentpop args = { :test => val[1], :statements => ast(AST::Nop) } if val[4] args[:else] = val[4] end result = ast AST::IfStatement, args } else: # nothing | ELSE LBRACE statements RBRACE { @lexer.commentpop result = ast AST::Else, :statements => val[2] } | ELSE LBRACE RBRACE { @lexer.commentpop result = ast AST::Else, :statements => ast(AST::Nop) } # Unlike yacc/bison, it seems racc # gives tons of shift/reduce warnings # with the following syntax: # # expression: ... # | expression arithop expressio { ... } # # arithop: PLUS | MINUS | DIVIDE | TIMES ... # # So I had to develop the expression by adding one rule # per operator :-( expression: rvalue | expression PLUS expression { result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression MINUS expression { result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression DIV expression { result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression TIMES expression { result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression LSHIFT expression { result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression RSHIFT expression { result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | MINUS expression =UMINUS { result = ast AST::Minus, :value => val[1] } | expression NOTEQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression ISEQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression GREATERTHAN expression { result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression GREATEREQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression LESSTHAN expression { result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression LESSEQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | NOT expression { result = ast AST::Not, :value => val[1] } | expression AND expression { result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | expression OR expression { result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2] } | LPAREN expression RPAREN { result = val[1] } casestatement: CASE rvalue LBRACE caseopts RBRACE { @lexer.commentpop options = val[3] unless options.instance_of?(AST::ASTArray) options = ast AST::ASTArray, :children => [val[3]] end result = ast AST::CaseStatement, :test => val[1], :options => options } caseopts: caseopt | 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 { @lexer.commentpop result = ast AST::CaseOpt, :value => val[0], :statements => val[3] } | casevalues COLON LBRACE RBRACE { @lexer.commentpop result = ast(AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) ) } casevalues: selectlhand | 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 { result = ast AST::Selector, :param => val[0], :values => val[2] } svalues: selectval | LBRACE sintvalues endcomma RBRACE { @lexer.commentpop result = val[1] } sintvalues: selectval | sintvalues comma selectval { 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 } selectval: selectlhand FARROW rvalue { result = ast AST::ResourceParam, :param => val[0], :value => val[2] } selectlhand: name | type | quotedtext | variable | funcrvalue | boolean | undef | DEFAULT { result = ast AST::Default, :value => val[0] } # These are only used for importing, and we don't interpolate there. qtexts: quotedtext { result = [val[0].value] } | qtexts COMMA quotedtext { results = val[0] << val[2].value } import: IMPORT qtexts { val[1].each do |file| import(file) end result = AST::ASTArray.new(:children => []) } # Disable definition inheritance for now. 8/27/06, luke #definition: DEFINE NAME argumentlist parent LBRACE statements RBRACE { definition: DEFINE classname argumentlist LBRACE statements RBRACE { @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :code => val[4] @lexer.indefine = false result = nil #} | DEFINE NAME argumentlist parent LBRACE RBRACE { } | DEFINE classname argumentlist LBRACE RBRACE { @lexer.commentpop newdefine classname(val[1]), :arguments => val[2] @lexer.indefine = false result = nil } #hostclass: CLASS NAME argumentlist parent LBRACE statements RBRACE { hostclass: CLASS classname classparent LBRACE statements RBRACE { @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :code => val[4], :parent => val[2] result = nil } | CLASS classname classparent LBRACE RBRACE { @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :parent => val[2] result = nil } nodedef: NODE hostnames nodeparent LBRACE statements RBRACE { @lexer.commentpop newnode val[1], :parent => val[2], :code => val[4] result = nil } | NODE hostnames nodeparent LBRACE RBRACE { @lexer.commentpop newnode val[1], :parent => val[2] result = nil } classref: CLASSREF classname: NAME | CLASSNAME # Multiple hostnames, as used for node names. These are all literal # strings, not AST objects. hostnames: hostname | hostnames COMMA hostname { result = val[0] result = [result] unless result.is_a?(Array) result << val[2] } hostname: NAME | SQTEXT | DQTEXT | DEFAULT nil: { result = nil } nothing: { result = ast AST::ASTArray, :children => [] } argumentlist: nil | LPAREN nothing RPAREN { result = nil } | LPAREN arguments RPAREN { result = val[1] result = [result] unless result[0].is_a?(Array) } arguments: argument | arguments COMMA argument { result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] } argument: NAME EQUALS rvalue { Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0], val[2]] } | NAME { Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0]] } | VARIABLE EQUALS rvalue { result = [val[0], val[2]] } | VARIABLE { result = [val[0]] } nodeparent: nil | INHERITS hostname { result = val[1] } classparent: nil | INHERITS classnameordefault { result = val[1] } classnameordefault: classname | DEFAULT variable: VARIABLE { result = ast AST::Variable, :value => val[0] } 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 } comma: FARROW | COMMA endcomma: # nothing | COMMA { result = nil } end ---- header ---- require 'puppet' require 'puppet/util/loadedfile' require 'puppet/parser/lexer' require 'puppet/parser/ast' #require 'puppet/parser/interpreter' module Puppet class ParseError < Puppet::Error; end class ImportError < Racc::ParseError; end class AlreadyImportedError < ImportError; end end Puppet[:typecheck] = true Puppet[:paramcheck] = true ---- inner ---- # It got too annoying having code in a file that needs to be compiled. require 'puppet/parser/parser_support' # Make emacs happy # Local Variables: # mode: ruby # End: # $Id$ diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb index 60a849cb6..c0b5435b6 100644 --- a/lib/puppet/parser/parser.rb +++ b/lib/puppet/parser/parser.rb @@ -1,2096 +1,2139 @@ # # DO NOT MODIFY!!!! # This file is automatically generated by racc 1.4.5 # from racc grammer file "grammar.ra". # require 'racc/parser' require 'puppet' require 'puppet/util/loadedfile' require 'puppet/parser/lexer' require 'puppet/parser/ast' #require 'puppet/parser/interpreter' module Puppet class ParseError < Puppet::Error; end class ImportError < Racc::ParseError; end class AlreadyImportedError < ImportError; end end Puppet[:typecheck] = true Puppet[:paramcheck] = true module Puppet module Parser class Parser < Racc::Parser -module_eval <<'..end grammar.ra modeval..id987bcfd032', 'grammar.ra', 759 +module_eval <<'..end grammar.ra modeval..idf6e9d74445', 'grammar.ra', 779 # It got too annoying having code in a file that needs to be compiled. require 'puppet/parser/parser_support' # Make emacs happy # Local Variables: # mode: ruby # End: # $Id$ -..end grammar.ra modeval..id987bcfd032 +..end grammar.ra modeval..idf6e9d74445 ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 60, :_reduce_1, 1, 60, :_reduce_none, 1, 61, :_reduce_none, 2, 61, :_reduce_4, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 1, 63, :_reduce_none, 4, 71, :_reduce_18, 5, 71, :_reduce_19, 3, 71, :_reduce_20, 2, 71, :_reduce_21, 1, 77, :_reduce_none, 1, 77, :_reduce_none, 3, 77, :_reduce_24, 3, 77, :_reduce_25, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 1, 78, :_reduce_33, 5, 64, :_reduce_34, 5, 64, :_reduce_35, 5, 64, :_reduce_36, 5, 75, :_reduce_37, 2, 65, :_reduce_38, 1, 94, :_reduce_39, 2, 94, :_reduce_40, - 2, 66, :_reduce_41, - 3, 95, :_reduce_42, + 6, 66, :_reduce_41, + 2, 66, :_reduce_42, 3, 95, :_reduce_43, + 3, 95, :_reduce_44, 1, 96, :_reduce_none, 1, 96, :_reduce_none, - 3, 96, :_reduce_46, + 3, 96, :_reduce_47, 1, 97, :_reduce_none, - 3, 97, :_reduce_48, + 3, 97, :_reduce_49, 1, 98, :_reduce_none, 1, 98, :_reduce_none, - 3, 99, :_reduce_51, 3, 99, :_reduce_52, + 3, 99, :_reduce_53, 1, 100, :_reduce_none, 1, 100, :_reduce_none, - 4, 102, :_reduce_55, + 4, 102, :_reduce_56, 1, 88, :_reduce_none, - 3, 88, :_reduce_57, + 3, 88, :_reduce_58, 0, 89, :_reduce_none, 1, 89, :_reduce_none, - 1, 104, :_reduce_60, - 1, 80, :_reduce_61, - 1, 82, :_reduce_62, + 1, 104, :_reduce_61, + 1, 80, :_reduce_62, + 1, 82, :_reduce_63, 1, 103, :_reduce_none, 1, 103, :_reduce_none, 1, 103, :_reduce_none, 1, 103, :_reduce_none, 1, 103, :_reduce_none, 1, 103, :_reduce_none, - 3, 67, :_reduce_69, - 3, 76, :_reduce_70, - 0, 90, :_reduce_71, - 1, 90, :_reduce_72, - 3, 90, :_reduce_73, - 3, 107, :_reduce_74, - 3, 109, :_reduce_75, + 3, 67, :_reduce_70, + 3, 76, :_reduce_71, + 0, 90, :_reduce_72, + 1, 90, :_reduce_73, + 3, 90, :_reduce_74, + 3, 107, :_reduce_75, + 3, 109, :_reduce_76, 1, 110, :_reduce_none, 1, 110, :_reduce_none, - 0, 93, :_reduce_78, - 1, 93, :_reduce_79, - 3, 93, :_reduce_80, + 0, 93, :_reduce_79, + 1, 93, :_reduce_80, + 3, 93, :_reduce_81, 1, 111, :_reduce_none, - 3, 111, :_reduce_82, + 3, 111, :_reduce_83, 1, 101, :_reduce_none, 1, 101, :_reduce_none, 1, 101, :_reduce_none, 1, 101, :_reduce_none, 1, 101, :_reduce_none, 1, 101, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 108, :_reduce_none, - 4, 84, :_reduce_99, - 3, 84, :_reduce_100, - 1, 86, :_reduce_101, + 4, 84, :_reduce_100, + 3, 84, :_reduce_101, 1, 86, :_reduce_102, - 1, 83, :_reduce_103, - 4, 79, :_reduce_104, + 1, 86, :_reduce_103, + 1, 83, :_reduce_104, 4, 79, :_reduce_105, - 6, 69, :_reduce_106, - 5, 69, :_reduce_107, + 4, 79, :_reduce_106, + 6, 69, :_reduce_107, + 5, 69, :_reduce_108, 0, 113, :_reduce_none, - 4, 113, :_reduce_109, - 3, 113, :_reduce_110, + 4, 113, :_reduce_110, + 3, 113, :_reduce_111, 1, 106, :_reduce_none, - 3, 106, :_reduce_112, 3, 106, :_reduce_113, 3, 106, :_reduce_114, 3, 106, :_reduce_115, 3, 106, :_reduce_116, 3, 106, :_reduce_117, - 2, 106, :_reduce_118, - 3, 106, :_reduce_119, + 3, 106, :_reduce_118, + 2, 106, :_reduce_119, 3, 106, :_reduce_120, 3, 106, :_reduce_121, 3, 106, :_reduce_122, 3, 106, :_reduce_123, 3, 106, :_reduce_124, - 2, 106, :_reduce_125, - 3, 106, :_reduce_126, + 3, 106, :_reduce_125, + 2, 106, :_reduce_126, 3, 106, :_reduce_127, 3, 106, :_reduce_128, - 5, 68, :_reduce_129, + 3, 106, :_reduce_129, + 5, 68, :_reduce_130, 1, 114, :_reduce_none, - 2, 114, :_reduce_131, - 5, 115, :_reduce_132, - 4, 115, :_reduce_133, + 2, 114, :_reduce_132, + 5, 115, :_reduce_133, + 4, 115, :_reduce_134, 1, 116, :_reduce_none, - 3, 116, :_reduce_135, - 3, 85, :_reduce_136, + 3, 116, :_reduce_136, + 3, 85, :_reduce_137, 1, 118, :_reduce_none, - 4, 118, :_reduce_138, + 4, 118, :_reduce_139, 1, 120, :_reduce_none, - 3, 120, :_reduce_140, - 3, 119, :_reduce_141, + 3, 120, :_reduce_141, + 3, 119, :_reduce_142, 1, 117, :_reduce_none, 1, 117, :_reduce_none, 1, 117, :_reduce_none, 1, 117, :_reduce_none, 1, 117, :_reduce_none, 1, 117, :_reduce_none, 1, 117, :_reduce_none, - 1, 117, :_reduce_149, - 1, 121, :_reduce_150, - 3, 121, :_reduce_151, - 2, 70, :_reduce_152, - 6, 72, :_reduce_153, - 5, 72, :_reduce_154, - 6, 73, :_reduce_155, - 5, 73, :_reduce_156, - 6, 74, :_reduce_157, - 5, 74, :_reduce_158, + 1, 117, :_reduce_150, + 1, 121, :_reduce_151, + 3, 121, :_reduce_152, + 2, 70, :_reduce_153, + 6, 72, :_reduce_154, + 5, 72, :_reduce_155, + 6, 73, :_reduce_156, + 5, 73, :_reduce_157, + 6, 74, :_reduce_158, + 5, 74, :_reduce_159, 1, 92, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 124, :_reduce_none, - 3, 124, :_reduce_163, + 3, 124, :_reduce_164, 1, 126, :_reduce_none, 1, 126, :_reduce_none, 1, 126, :_reduce_none, 1, 126, :_reduce_none, - 0, 62, :_reduce_168, - 0, 127, :_reduce_169, + 0, 62, :_reduce_169, + 0, 127, :_reduce_170, 1, 122, :_reduce_none, - 3, 122, :_reduce_171, 3, 122, :_reduce_172, + 3, 122, :_reduce_173, 1, 128, :_reduce_none, - 3, 128, :_reduce_174, - 3, 129, :_reduce_175, - 1, 129, :_reduce_176, - 3, 129, :_reduce_177, - 1, 129, :_reduce_178, + 3, 128, :_reduce_175, + 3, 129, :_reduce_176, + 1, 129, :_reduce_177, + 3, 129, :_reduce_178, + 1, 129, :_reduce_179, 1, 125, :_reduce_none, - 2, 125, :_reduce_180, + 2, 125, :_reduce_181, 1, 123, :_reduce_none, - 2, 123, :_reduce_182, + 2, 123, :_reduce_183, 1, 130, :_reduce_none, 1, 130, :_reduce_none, - 1, 81, :_reduce_185, - 3, 105, :_reduce_186, - 4, 105, :_reduce_187, - 2, 105, :_reduce_188, + 1, 81, :_reduce_186, + 3, 105, :_reduce_187, + 4, 105, :_reduce_188, + 2, 105, :_reduce_189, 1, 112, :_reduce_none, 1, 112, :_reduce_none, 0, 91, :_reduce_none, - 1, 91, :_reduce_192 ] + 1, 91, :_reduce_193 ] -racc_reduce_n = 193 +racc_reduce_n = 194 -racc_shift_n = 317 +racc_shift_n = 321 racc_action_table = [ - 75, 57, 61, 260, 179, 38, 40, 35, 44, 196, - 54, 287, 45, 239, 3, 6, 187, 298, 240, -145, - 74, 75, 57, 61, 286, 47, 38, 40, 194, 195, - 132, 49, 38, 40, 112, 60, 64, 194, 195, 70, - 41, 74, 149, 43, 55, 77, 178, 118, 66, 48, - 141, 87, 49, 75, 57, 61, 60, 64, 49, 109, - 70, 41, 253, 123, 43, 55, 77, 41, 105, 66, - 43, -146, 87, 74, 75, 57, 61, 202, 151, 152, - 153, 139, 140, 142, 49, 282, 128, 133, 60, 64, - 201, 239, 70, 281, 74, 149, 240, 55, 77, 271, - 118, 66, 179, 141, 87, 49, 75, 57, 61, 60, - 64, 49, 193, 70, 35, 132, 123, 174, 55, 77, - 192, 3, 66, 35, 258, 87, 74, 75, 57, 61, - 3, 151, 152, 153, 139, 140, 142, 49, 116, 35, - 155, 60, 64, 153, 139, 70, 3, 74, 149, -147, - 55, 77, -143, 118, 66, 156, 141, 87, 49, 75, - 57, 61, 60, 64, 49, 157, 70, 153, 139, 123, - 134, 55, 77, 57, 61, 66, 33, 34, 87, 74, - 75, 57, 61, 132, 151, 152, 153, 139, 140, 142, - 49, -145, 203, 274, 60, 64, 187, 188, 70, 275, - 74, 149, -142, 55, 77, -144, 118, 66, 45, 141, - 87, 49, 75, 57, 61, 60, 64, 49, 44, 70, - 57, 61, 123, -142, 55, 77, -159, 128, 66, 177, - 181, 87, 74, 75, 57, 61, -143, 151, 152, 153, - 139, 140, 142, 49, 116, 198, 278, 60, 64, 194, - 195, 70, 248, 74, 186, -145, 55, 77, 187, 188, - 66, 216, 183, 87, 49, 187, 217, -142, 60, 64, - 150, 283, 70, 151, 152, 153, 139, 55, 77, 145, - 149, 66, 284, 285, 87, 190, 105, 290, 141, 143, - 146, 148, 101, 190, 75, 57, 61, 151, 152, 153, - 139, 140, 142, 151, 152, 153, 139, 140, 142, 116, - 98, 97, 144, 147, 74, -142, 151, 152, 153, 139, - 140, 142, -144, -143, -147, 49, 75, 57, 61, 60, - 64, -144, 246, 70, 151, 152, 153, 139, 55, 77, - 244, 278, 66, 301, 302, 87, 74, 75, 57, 61, - -144, 179, -145, -148, 73, 190, -143, 49, 310, -192, - 37, 60, 64, -147, -146, 70, 292, 74, nil, nil, - 55, 77, nil, nil, 66, nil, nil, 87, 49, 75, + 75, 57, 61, 263, 180, 38, 40, 285, 44, 198, + 54, 129, 45, 200, 241, 284, 295, 196, 197, 242, + 74, 75, 57, 61, 274, 47, 38, 40, 196, 197, + 133, 49, 38, 40, 112, 60, 64, 196, 197, 70, + 41, 74, 150, 43, 55, 77, 179, 119, 66, 48, + 142, 87, 49, 75, 57, 61, 60, 64, 49, 109, + 70, 41, -145, 124, 43, 55, 77, 41, -147, 66, + 43, 255, 87, 74, 75, 57, 61, 290, 152, 153, + 154, 140, 141, 143, 49, 195, 180, 105, 60, 64, + 289, 241, 70, 194, 74, 150, 242, 55, 77, 133, + 119, 66, 204, 142, 87, 49, 75, 57, 61, 60, + 64, 49, 134, 70, 35, 203, 124, 175, 55, 77, + -148, 3, 66, 35, 260, 87, 74, 75, 57, 61, + 3, 152, 153, 154, 140, 141, 143, 49, 116, 35, + 182, 60, 64, 188, 302, 70, 3, 74, 150, -145, + 55, 77, -144, 119, 66, -144, 142, 87, 49, 75, + 57, 61, 60, 64, 49, 250, 70, 154, 140, 124, + -146, 55, 77, 57, 61, 66, 57, 61, 87, 74, + 75, 57, 61, -146, 152, 153, 154, 140, 141, 143, + 49, 133, 205, 44, 60, 64, 188, 189, 70, 277, + 74, 150, 278, 55, 77, -143, 119, 66, 191, 142, + 87, 49, 75, 57, 61, 60, 64, 49, 248, 70, + 33, 34, 124, -143, 55, 77, 154, 140, 66, -160, + 129, 87, 74, 75, 57, 61, 246, 152, 153, 154, + 140, 141, 143, 49, -143, 218, 118, 60, 64, 188, + 219, 70, -146, 74, 35, 116, 55, 77, 281, -149, + 66, 3, 6, 87, 49, -144, -148, -147, 60, 64, + 151, 187, 70, 286, 287, 188, 189, 55, 77, 146, + 150, 66, 288, -145, 87, 105, 293, 101, 142, 144, + 147, 149, 135, 116, 75, 57, 61, 152, 153, 154, + 140, 141, 143, 152, 153, 154, 140, 141, 143, 98, + 97, 299, 145, 148, 74, -143, 152, 153, 154, 140, + 141, 143, -146, -144, -148, 49, 75, 57, 61, 60, + 64, -145, 45, 70, 152, 153, 154, 140, 55, 77, + 156, 281, 66, 305, 306, 87, 74, 75, 57, 61, + 152, 153, 154, 140, 157, 158, 178, 49, 182, 73, + 191, 60, 64, 184, 314, 70, -193, 74, 37, 191, + 55, 77, 180, 105, 66, nil, nil, 87, 49, 75, 57, 61, 60, 64, nil, nil, 70, nil, nil, nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, 74, 75, 57, 61, nil, nil, nil, nil, nil, nil, nil, 49, nil, nil, nil, 60, 64, nil, nil, 70, nil, 74, nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, 49, 75, 57, 61, 60, 64, nil, nil, 70, nil, nil, nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, 74, 75, 57, 61, nil, nil, nil, nil, nil, nil, nil, 49, nil, nil, nil, 60, 64, nil, nil, 70, nil, 74, nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, 49, 75, 57, 61, 60, 64, nil, nil, 70, nil, nil, nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, 74, 75, 57, 61, nil, nil, nil, nil, nil, nil, nil, 49, 75, 57, 61, 60, 64, nil, nil, 70, nil, 74, nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, 49, 75, 57, 61, 60, 64, nil, nil, 70, nil, nil, 49, nil, 55, 77, 60, 64, 66, nil, 70, 87, 74, nil, - nil, 55, nil, nil, nil, 66, nil, nil, nil, 49, - 54, 57, 61, 60, 64, nil, nil, 70, nil, nil, - nil, nil, 55, 77, nil, nil, 66, nil, nil, 87, - 51, 75, 57, 61, nil, nil, nil, 75, 57, 61, + nil, 55, 75, 57, 61, 66, nil, nil, nil, 49, + nil, nil, nil, 60, 64, nil, nil, 70, 75, 57, + 61, 138, 55, 77, nil, nil, 66, nil, nil, 87, + nil, nil, nil, 49, 75, 57, 61, 60, 211, nil, + nil, 70, nil, nil, nil, nil, 162, nil, nil, 49, + 66, nil, nil, 60, 64, nil, nil, 70, 75, 57, + 61, nil, 55, nil, nil, 49, 66, nil, nil, 60, + 169, nil, nil, 70, nil, nil, nil, nil, 162, 54, + 57, 61, 66, nil, nil, 75, 57, 61, nil, 49, + nil, nil, nil, 60, 64, nil, nil, 70, nil, 51, + nil, nil, 55, 75, 57, 61, 66, nil, nil, nil, + 49, nil, nil, nil, 60, 64, 49, nil, 70, nil, + 60, 64, 52, 55, 70, nil, nil, 66, nil, 55, + 75, 57, 61, 66, 49, nil, nil, nil, 60, 64, + nil, nil, 70, nil, 75, 57, 61, 55, nil, nil, + nil, 66, nil, nil, 75, 57, 61, nil, nil, nil, nil, 49, nil, nil, nil, 60, 64, nil, nil, 70, - nil, nil, nil, 52, 55, 75, 57, 61, 66, nil, - nil, nil, 49, nil, nil, nil, 60, 168, 49, nil, - 70, nil, 60, 209, nil, 161, 70, nil, nil, 66, - nil, 161, nil, nil, nil, 66, 49, nil, nil, nil, - 60, 64, nil, nil, 70, 75, 57, 61, 137, 55, - nil, nil, nil, 66, nil, 75, 57, 61, nil, nil, - nil, 75, 57, 61, nil, nil, nil, nil, nil, nil, - nil, 75, 57, 61, nil, nil, 49, 75, 57, 61, - 60, 64, nil, nil, 70, nil, 49, nil, nil, 55, - 60, 64, 49, 66, 70, nil, 60, 64, nil, 55, - 70, nil, 49, 66, nil, 55, 60, 64, 49, 66, - 70, nil, 60, 64, nil, 55, 70, nil, nil, 66, - nil, 55, 75, 57, 61, 66, nil, nil, 75, 57, - 61, nil, nil, nil, nil, nil, nil, nil, 75, 57, - 61, nil, nil, nil, nil, 57, 61, nil, nil, nil, - nil, nil, nil, 49, nil, 57, 61, 60, 64, 49, - nil, 70, nil, 60, 64, nil, 55, 70, nil, 49, - 66, nil, 55, 60, 64, 49, 66, 70, nil, 60, - 209, nil, 55, 70, nil, 49, 66, nil, 161, 60, - 209, nil, 66, 70, 57, 61, 57, 61, 161, nil, - nil, nil, 66, nil, nil, nil, nil, nil, nil, nil, - 57, 61, 57, 61, 270, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 49, nil, 49, nil, 60, 64, - 60, 209, 70, nil, 70, nil, 52, 55, nil, 161, - 49, 66, 49, 66, 60, 209, 60, 64, 70, nil, - 70, 57, 61, 161, 52, 55, nil, 66, nil, 66, - nil, 57, 61, nil, nil, 280, nil, 57, 61, nil, - nil, 130, nil, nil, nil, nil, nil, 57, 61, nil, - nil, 49, nil, nil, nil, 60, 64, 57, 61, 70, - 210, 49, nil, 52, 55, 60, 209, 49, 66, 70, - nil, 60, 209, nil, 161, 70, nil, 49, 66, nil, - 161, 60, 209, nil, 66, 70, nil, 49, 57, 61, - 161, 60, 209, nil, 66, 70, nil, nil, nil, nil, - 161, nil, nil, nil, 66, 145, 149, nil, 205, nil, - nil, nil, nil, nil, 141, 143, 146, 148, 49, nil, - nil, nil, 60, 64, nil, nil, 70, nil, nil, nil, - 52, 55, nil, nil, nil, 66, nil, nil, 144, 147, - 145, 149, 151, 152, 153, 139, 140, 142, 215, 141, - 143, 146, 148, 145, 149, nil, nil, nil, nil, nil, - nil, nil, 141, 143, 146, 148, nil, nil, nil, nil, - nil, nil, nil, 144, 147, 145, 149, 151, 152, 153, - 139, 140, 142, nil, 141, 143, 146, 148, 145, 149, - 151, 152, 153, 139, 140, 142, nil, 141, 143, 146, - 148, nil, nil, nil, nil, nil, nil, nil, nil, 147, - 289, nil, 151, 152, 153, 139, 140, 142, nil, nil, - nil, 144, 147, nil, nil, 151, 152, 153, 139, 140, - 142, 16, 294, 23, 26, nil, 1, 4, nil, 9, + 75, 57, 61, nil, 55, 49, nil, nil, 66, 60, + 64, 57, 61, 70, nil, 49, nil, nil, 55, 60, + 64, nil, 66, 70, 75, 57, 61, nil, 55, nil, + nil, 49, 66, nil, nil, 60, 64, nil, nil, 70, + nil, 49, nil, nil, 55, 60, 211, nil, 66, 70, + 57, 61, nil, nil, 162, 49, 57, 61, 66, 60, + 64, nil, nil, 70, nil, nil, 57, 61, 55, nil, + nil, nil, 66, nil, nil, nil, 273, 57, 61, nil, + 49, nil, nil, nil, 60, 211, 49, nil, 70, nil, + 60, 64, nil, 162, 70, nil, 49, 66, 52, 55, + 60, 211, nil, 66, 70, 57, 61, 49, nil, 162, + nil, 60, 211, 66, nil, 70, 57, 61, nil, nil, + 162, nil, nil, nil, 66, 131, 57, 61, nil, nil, + 283, nil, 57, 61, nil, 49, nil, nil, nil, 60, + 64, nil, nil, 70, nil, nil, 49, 52, 55, nil, + 60, 64, 66, nil, 70, nil, 49, nil, 52, 55, + 60, 211, 49, 66, 70, nil, 60, 211, nil, 162, + 70, 57, 61, 66, nil, 162, nil, 57, 61, 66, + 212, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 57, 61, nil, nil, nil, nil, nil, + nil, 49, nil, nil, nil, 60, 211, 49, nil, 70, + nil, 60, 211, 207, 162, 70, nil, nil, 66, nil, + 162, nil, nil, 49, 66, nil, nil, 60, 64, nil, + nil, 70, 146, 150, nil, 52, 55, nil, nil, nil, + 66, 142, 144, 147, 149, 146, 150, nil, nil, nil, + nil, 146, 150, 217, 142, 144, 147, 149, nil, nil, + 142, 144, 147, 149, nil, 145, 148, nil, nil, 152, + 153, 154, 140, 141, 143, nil, nil, nil, 145, 148, + nil, nil, 152, 153, 154, 140, 141, 143, 152, 153, + 154, 140, 141, 143, 146, 150, nil, nil, nil, nil, + nil, nil, nil, 142, 144, 147, 149, 146, 150, nil, + nil, nil, nil, nil, nil, nil, 142, 144, 147, 149, + nil, nil, nil, nil, nil, nil, nil, nil, 148, 297, + nil, 152, 153, 154, 140, 141, 143, nil, nil, nil, + 145, 148, nil, nil, 152, 153, 154, 140, 141, 143, + 16, 292, 23, 26, nil, 1, 4, nil, 9, nil, + 13, nil, 20, nil, 27, nil, nil, 3, 6, nil, + 298, nil, 16, nil, 23, 26, nil, 1, 4, nil, + 9, nil, 13, nil, 20, nil, 27, nil, nil, 3, + 6, 16, 311, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, nil, 3, 6, - nil, 295, nil, 16, nil, 23, 26, nil, 1, 4, + nil, 279, nil, 16, nil, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, nil, - 3, 6, 16, 276, 23, 26, nil, 1, 4, nil, + 3, 6, 16, 258, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, nil, 3, - 6, nil, 307, nil, 16, nil, 23, 26, nil, 1, + 6, nil, 316, nil, 16, nil, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, - nil, 3, 6, 16, 230, 23, 26, nil, 1, 4, + nil, 3, 6, 16, 318, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, nil, - 3, 6, nil, 312, nil, 16, nil, 23, 26, nil, + 3, 6, nil, 232, nil, 16, nil, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, - nil, nil, 3, 6, 16, 314, 23, 26, nil, 1, + nil, nil, 3, 6, 16, 319, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, - nil, 3, 6, nil, 256, nil, 16, nil, 23, 26, + nil, 3, 6, nil, 252, nil, 16, nil, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, - 27, nil, nil, 3, 6, 16, 315, 23, 26, nil, + 27, nil, nil, 3, 6, 16, 320, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, - nil, nil, 3, 6, nil, 250, nil, 16, nil, 23, - 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, - nil, 27, nil, nil, 3, 6, 16, 316, 23, 26, - nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, - 27, nil, nil, 3, 6, nil, nil, nil, 16, nil, - 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, - 20, nil, 27, nil, nil, 3, 6, 16, nil, 23, + nil, nil, 3, 6, nil, nil, nil, 16, nil, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, nil, nil, 3, 6, 16, nil, 23, 26, nil, 1, 4, nil, 9, nil, 13, nil, 20, nil, - 27, nil, nil, 3, 6 ] + 27, nil, nil, 3, 6, 16, nil, 23, 26, nil, + 1, 4, nil, 9, nil, 13, nil, 20, nil, 27, + nil, nil, 3, 6 ] racc_action_check = [ - 34, 34, 34, 191, 105, 112, 112, 17, 11, 125, - 64, 242, 11, 287, 17, 17, 273, 273, 287, 263, - 34, 153, 153, 153, 242, 11, 9, 9, 191, 191, - 64, 34, 109, 109, 39, 34, 34, 125, 125, 34, - 112, 153, 222, 112, 34, 34, 105, 48, 34, 11, - 222, 34, 153, 139, 139, 139, 153, 153, 48, 39, - 153, 9, 180, 48, 9, 153, 153, 109, 181, 153, - 109, 69, 153, 139, 140, 140, 140, 129, 222, 222, - 222, 222, 222, 222, 139, 236, 204, 68, 139, 139, - 129, 157, 139, 236, 140, 227, 157, 139, 139, 204, - 197, 139, 168, 227, 139, 140, 151, 151, 151, 140, - 140, 197, 120, 140, 101, 168, 197, 101, 140, 140, - 120, 101, 140, 26, 189, 140, 151, 141, 141, 141, - 26, 227, 227, 227, 227, 227, 227, 151, 190, 4, - 93, 151, 151, 232, 232, 151, 4, 141, 225, 67, - 151, 151, 65, 118, 151, 94, 225, 151, 141, 77, - 77, 77, 141, 141, 118, 96, 141, 231, 231, 118, - 73, 141, 141, 23, 23, 141, 1, 1, 141, 77, - 142, 142, 142, 209, 225, 225, 225, 225, 225, 225, - 77, 62, 131, 211, 77, 77, 131, 131, 77, 217, - 142, 224, 78, 77, 77, 173, 47, 77, 90, 224, - 77, 142, 16, 16, 16, 142, 142, 47, 59, 142, - 156, 156, 47, 58, 142, 142, 55, 50, 142, 102, - 106, 142, 16, 74, 74, 74, 167, 224, 224, 224, - 224, 224, 224, 16, 45, 127, 230, 16, 16, 127, - 127, 16, 166, 74, 113, 165, 16, 16, 113, 113, - 16, 136, 110, 16, 74, 136, 136, 163, 74, 74, - 84, 239, 74, 221, 221, 221, 221, 74, 74, 84, - 84, 74, 240, 241, 74, 162, 37, 245, 84, 84, - 84, 84, 36, 115, 87, 87, 87, 220, 220, 220, - 220, 220, 220, 228, 228, 228, 228, 228, 228, 248, - 30, 27, 84, 84, 87, 262, 84, 84, 84, 84, - 84, 84, 72, 264, 265, 87, 149, 149, 149, 87, - 87, 267, 160, 87, 219, 219, 219, 219, 87, 87, - 158, 276, 87, 278, 281, 87, 149, 148, 148, 148, - 89, 116, 79, 80, 15, 293, 81, 149, 297, 298, - 7, 149, 149, 83, 85, 149, 247, 148, nil, nil, - 149, 149, nil, nil, 149, nil, nil, 149, 148, 143, - 143, 143, 148, 148, nil, nil, 148, nil, nil, nil, - nil, 148, 148, nil, nil, 148, nil, nil, 148, 143, - 144, 144, 144, nil, nil, nil, nil, nil, nil, nil, - 143, nil, nil, nil, 143, 143, nil, nil, 143, nil, - 144, nil, nil, 143, 143, nil, nil, 143, nil, nil, - 143, 144, 33, 33, 33, 144, 144, nil, nil, 144, - nil, nil, nil, nil, 144, 144, nil, nil, 144, nil, - nil, 144, 33, 152, 152, 152, nil, nil, nil, nil, + 34, 34, 34, 193, 105, 9, 9, 238, 11, 126, + 64, 206, 11, 128, 290, 238, 249, 128, 128, 290, + 34, 154, 154, 154, 206, 11, 109, 109, 193, 193, + 64, 34, 112, 112, 39, 34, 34, 126, 126, 34, + 9, 154, 224, 9, 34, 34, 105, 48, 34, 11, + 224, 34, 154, 140, 140, 140, 154, 154, 48, 39, + 154, 109, 72, 48, 109, 154, 154, 112, 69, 154, + 112, 181, 154, 140, 141, 141, 141, 244, 224, 224, + 224, 224, 224, 224, 140, 121, 169, 182, 140, 140, + 244, 158, 140, 121, 141, 229, 158, 140, 140, 169, + 119, 140, 130, 229, 140, 141, 77, 77, 77, 141, + 141, 119, 68, 141, 101, 130, 119, 101, 141, 141, + 67, 101, 141, 4, 190, 141, 77, 142, 142, 142, + 4, 229, 229, 229, 229, 229, 229, 77, 191, 26, + 192, 77, 77, 276, 276, 77, 26, 142, 227, 174, + 77, 77, 65, 47, 77, 168, 227, 77, 142, 74, + 74, 74, 142, 142, 47, 167, 142, 233, 233, 47, + 62, 142, 142, 157, 157, 142, 23, 23, 142, 74, + 143, 143, 143, 166, 227, 227, 227, 227, 227, 227, + 74, 211, 132, 59, 74, 74, 132, 132, 74, 213, + 143, 226, 219, 74, 74, 164, 199, 74, 163, 226, + 74, 143, 16, 16, 16, 143, 143, 199, 161, 143, + 1, 1, 199, 58, 143, 143, 234, 234, 143, 55, + 50, 143, 16, 152, 152, 152, 159, 226, 226, 226, + 226, 226, 226, 16, 78, 137, 46, 16, 16, 137, + 137, 16, 79, 152, 17, 45, 16, 16, 232, 80, + 16, 17, 17, 16, 152, 81, 83, 85, 152, 152, + 84, 113, 152, 241, 242, 113, 113, 152, 152, 84, + 84, 152, 243, 89, 152, 37, 247, 36, 84, 84, + 84, 84, 73, 250, 150, 150, 150, 230, 230, 230, + 230, 230, 230, 222, 222, 222, 222, 222, 222, 30, + 27, 262, 84, 84, 150, 265, 84, 84, 84, 84, + 84, 84, 266, 267, 268, 150, 87, 87, 87, 150, + 150, 270, 90, 150, 223, 223, 223, 223, 150, 150, + 93, 279, 150, 281, 284, 150, 87, 149, 149, 149, + 221, 221, 221, 221, 94, 96, 102, 87, 106, 15, + 296, 87, 87, 110, 301, 87, 302, 149, 7, 115, + 87, 87, 116, 118, 87, nil, nil, 87, 149, 144, + 144, 144, 149, 149, nil, nil, 149, nil, nil, nil, + nil, 149, 149, nil, nil, 149, nil, nil, 149, 144, + 148, 148, 148, nil, nil, nil, nil, nil, nil, nil, + 144, nil, nil, nil, 144, 144, nil, nil, 144, nil, + 148, nil, nil, 144, 144, nil, nil, 144, nil, nil, + 144, 148, 33, 33, 33, 148, 148, nil, nil, 148, + nil, nil, nil, nil, 148, 148, nil, nil, 148, nil, + nil, 148, 33, 153, 153, 153, nil, nil, nil, nil, nil, nil, nil, 33, nil, nil, nil, 33, 33, nil, - nil, 33, nil, 152, nil, nil, 33, 33, nil, nil, - 33, nil, nil, 33, 152, 147, 147, 147, 152, 152, - nil, nil, 152, nil, nil, nil, nil, 152, 152, nil, - nil, 152, nil, nil, 152, 147, 146, 146, 146, nil, + nil, 33, nil, 153, nil, nil, 33, 33, nil, nil, + 33, nil, nil, 33, 153, 147, 147, 147, 153, 153, + nil, nil, 153, nil, nil, nil, nil, 153, 153, nil, + nil, 153, nil, nil, 153, 147, 145, 145, 145, nil, nil, nil, nil, nil, nil, nil, 147, 44, 44, 44, - 147, 147, nil, nil, 147, nil, 146, nil, nil, 147, - 147, nil, nil, 147, nil, nil, 147, 146, 145, 145, - 145, 146, 146, nil, nil, 146, nil, nil, 44, nil, - 146, 146, 44, 44, 146, nil, 44, 146, 145, nil, - nil, 44, nil, nil, nil, 44, nil, nil, nil, 145, - 13, 13, 13, 145, 145, nil, nil, 145, nil, nil, - nil, nil, 145, 145, nil, nil, 145, nil, nil, 145, - 13, 98, 98, 98, nil, nil, nil, 246, 246, 246, - nil, 13, nil, nil, nil, 13, 13, nil, nil, 13, - nil, nil, nil, 13, 13, 274, 274, 274, 13, nil, - nil, nil, 98, nil, nil, nil, 98, 98, 246, nil, - 98, nil, 246, 246, nil, 98, 246, nil, nil, 98, - nil, 246, nil, nil, nil, 246, 274, nil, nil, nil, - 274, 274, nil, nil, 274, 75, 75, 75, 75, 274, - nil, nil, nil, 274, nil, 54, 54, 54, nil, nil, - nil, 284, 284, 284, nil, nil, nil, nil, nil, nil, - nil, 178, 178, 178, nil, nil, 75, 20, 20, 20, - 75, 75, nil, nil, 75, nil, 54, nil, nil, 75, - 54, 54, 284, 75, 54, nil, 284, 284, nil, 54, - 284, nil, 178, 54, nil, 284, 178, 178, 20, 284, - 178, nil, 20, 20, nil, 178, 20, nil, nil, 178, - nil, 20, 179, 179, 179, 20, nil, nil, 283, 283, - 283, nil, nil, nil, nil, nil, nil, nil, 185, 185, - 185, nil, nil, nil, nil, 193, 193, nil, nil, nil, - nil, nil, nil, 179, nil, 192, 192, 179, 179, 283, - nil, 179, nil, 283, 283, nil, 179, 283, nil, 185, - 179, nil, 283, 185, 185, 193, 283, 185, nil, 193, - 193, nil, 185, 193, nil, 192, 185, nil, 193, 192, - 192, nil, 193, 192, 202, 202, 210, 210, 192, nil, - nil, nil, 192, nil, nil, nil, nil, nil, nil, nil, - 282, 282, 128, 128, 202, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 202, nil, 210, nil, 202, 202, - 210, 210, 202, nil, 210, nil, 202, 202, nil, 210, - 282, 202, 128, 210, 282, 282, 128, 128, 282, nil, - 128, 51, 51, 282, 128, 128, nil, 282, nil, 128, - nil, 234, 234, nil, nil, 234, nil, 296, 296, nil, - nil, 51, nil, nil, nil, nil, nil, 155, 155, nil, - nil, 51, nil, nil, nil, 51, 51, 133, 133, 51, - 133, 234, nil, 51, 51, 234, 234, 296, 51, 234, - nil, 296, 296, nil, 234, 296, nil, 155, 234, nil, - 296, 155, 155, nil, 296, 155, nil, 133, 132, 132, - 155, 133, 133, nil, 155, 133, nil, nil, nil, nil, - 133, nil, nil, nil, 133, 100, 100, nil, 132, nil, - nil, nil, nil, nil, 100, 100, 100, 100, 132, nil, - nil, nil, 132, 132, nil, nil, 132, nil, nil, nil, - 132, 132, nil, nil, nil, 132, nil, nil, 100, 100, - 135, 135, 100, 100, 100, 100, 100, 100, 135, 135, - 135, 135, 135, 226, 226, nil, nil, nil, nil, nil, - nil, nil, 226, 226, 226, 226, nil, nil, nil, nil, - nil, nil, nil, 135, 135, 223, 223, 135, 135, 135, - 135, 135, 135, nil, 223, 223, 223, 223, 99, 99, - 226, 226, 226, 226, 226, 226, nil, 99, 99, 99, - 99, nil, nil, nil, nil, nil, nil, nil, nil, 223, - 244, nil, 223, 223, 223, 223, 223, 223, nil, nil, - nil, 99, 99, nil, nil, 99, 99, 99, 99, 99, - 99, 244, 249, 244, 244, nil, 244, 244, nil, 244, - nil, 244, nil, 244, nil, 244, nil, nil, 244, 244, - nil, 255, nil, 249, nil, 249, 249, nil, 249, 249, - nil, 249, nil, 249, nil, 249, nil, 249, nil, nil, - 249, 249, 255, 229, 255, 255, nil, 255, 255, nil, - 255, nil, 255, nil, 255, nil, 255, nil, nil, 255, - 255, nil, 288, nil, 229, nil, 229, 229, nil, 229, - 229, nil, 229, nil, 229, nil, 229, nil, 229, nil, - nil, 229, 229, 288, 150, 288, 288, nil, 288, 288, - nil, 288, nil, 288, nil, 288, nil, 288, nil, nil, - 288, 288, nil, 301, nil, 150, nil, 150, 150, nil, - 150, 150, nil, 150, nil, 150, nil, 150, nil, 150, - nil, nil, 150, 150, 301, 302, 301, 301, nil, 301, - 301, nil, 301, nil, 301, nil, 301, nil, 301, nil, - nil, 301, 301, nil, 183, nil, 302, nil, 302, 302, - nil, 302, 302, nil, 302, nil, 302, nil, 302, nil, - 302, nil, nil, 302, 302, 183, 311, 183, 183, nil, - 183, 183, nil, 183, nil, 183, nil, 183, nil, 183, - nil, nil, 183, 183, nil, 177, nil, 311, nil, 311, - 311, nil, 311, 311, nil, 311, nil, 311, nil, 311, - nil, 311, nil, nil, 311, 311, 177, 313, 177, 177, - nil, 177, 177, nil, 177, nil, 177, nil, 177, nil, - 177, nil, nil, 177, 177, nil, nil, nil, 313, nil, - 313, 313, nil, 313, 313, nil, 313, nil, 313, nil, - 313, nil, 313, nil, nil, 313, 313, 19, nil, 19, - 19, nil, 19, 19, nil, 19, nil, 19, nil, 19, - nil, 19, nil, nil, 19, 19, 0, nil, 0, 0, - nil, 0, 0, nil, 0, nil, 0, nil, 0, nil, - 0, nil, nil, 0, 0 ] + 147, 147, nil, nil, 147, nil, 145, nil, nil, 147, + 147, nil, nil, 147, nil, nil, 147, 145, 146, 146, + 146, 145, 145, nil, nil, 145, nil, nil, 44, nil, + 145, 145, 44, 44, 145, nil, 44, 145, 146, nil, + nil, 44, 248, 248, 248, 44, nil, nil, nil, 146, + nil, nil, nil, 146, 146, nil, nil, 146, 75, 75, + 75, 75, 146, 146, nil, nil, 146, nil, nil, 146, + nil, nil, nil, 248, 98, 98, 98, 248, 248, nil, + nil, 248, nil, nil, nil, nil, 248, nil, nil, 75, + 248, nil, nil, 75, 75, nil, nil, 75, 277, 277, + 277, nil, 75, nil, nil, 98, 75, nil, nil, 98, + 98, nil, nil, 98, nil, nil, nil, nil, 98, 13, + 13, 13, 98, nil, nil, 287, 287, 287, nil, 277, + nil, nil, nil, 277, 277, nil, nil, 277, nil, 13, + nil, nil, 277, 54, 54, 54, 277, nil, nil, nil, + 13, nil, nil, nil, 13, 13, 287, nil, 13, nil, + 287, 287, 13, 13, 287, nil, nil, 13, nil, 287, + 179, 179, 179, 287, 54, nil, nil, nil, 54, 54, + nil, nil, 54, nil, 20, 20, 20, 54, nil, nil, + nil, 54, nil, nil, 180, 180, 180, nil, nil, nil, + nil, 179, nil, nil, nil, 179, 179, nil, nil, 179, + 286, 286, 286, nil, 179, 20, nil, nil, 179, 20, + 20, 195, 195, 20, nil, 180, nil, nil, 20, 180, + 180, nil, 20, 180, 186, 186, 186, nil, 180, nil, + nil, 286, 180, nil, nil, 286, 286, nil, nil, 286, + nil, 195, nil, nil, 286, 195, 195, nil, 286, 195, + 194, 194, nil, nil, 195, 186, 204, 204, 195, 186, + 186, nil, nil, 186, nil, nil, 212, 212, 186, nil, + nil, nil, 186, nil, nil, nil, 204, 285, 285, nil, + 194, nil, nil, nil, 194, 194, 204, nil, 194, nil, + 204, 204, nil, 194, 204, nil, 212, 194, 204, 204, + 212, 212, nil, 204, 212, 51, 51, 285, nil, 212, + nil, 285, 285, 212, nil, 285, 129, 129, nil, nil, + 285, nil, nil, nil, 285, 51, 236, 236, nil, nil, + 236, nil, 300, 300, nil, 51, nil, nil, nil, 51, + 51, nil, nil, 51, nil, nil, 129, 51, 51, nil, + 129, 129, 51, nil, 129, nil, 236, nil, 129, 129, + 236, 236, 300, 129, 236, nil, 300, 300, nil, 236, + 300, 156, 156, 236, nil, 300, nil, 134, 134, 300, + 134, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 133, 133, nil, nil, nil, nil, nil, + nil, 156, nil, nil, nil, 156, 156, 134, nil, 156, + nil, 134, 134, 133, 156, 134, nil, nil, 156, nil, + 134, nil, nil, 133, 134, nil, nil, 133, 133, nil, + nil, 133, 99, 99, nil, 133, 133, nil, nil, nil, + 133, 99, 99, 99, 99, 136, 136, nil, nil, nil, + nil, 228, 228, 136, 136, 136, 136, 136, nil, nil, + 228, 228, 228, 228, nil, 99, 99, nil, nil, 99, + 99, 99, 99, 99, 99, nil, nil, nil, 136, 136, + nil, nil, 136, 136, 136, 136, 136, 136, 228, 228, + 228, 228, 228, 228, 225, 225, nil, nil, nil, nil, + nil, nil, nil, 225, 225, 225, 225, 100, 100, nil, + nil, nil, nil, nil, nil, nil, 100, 100, 100, 100, + nil, nil, nil, nil, nil, nil, nil, nil, 225, 251, + nil, 225, 225, 225, 225, 225, 225, nil, nil, nil, + 100, 100, nil, nil, 100, 100, 100, 100, 100, 100, + 251, 246, 251, 251, nil, 251, 251, nil, 251, nil, + 251, nil, 251, nil, 251, nil, nil, 251, 251, nil, + 257, nil, 246, nil, 246, 246, nil, 246, 246, nil, + 246, nil, 246, nil, 246, nil, 246, nil, nil, 246, + 246, 257, 291, 257, 257, nil, 257, 257, nil, 257, + nil, 257, nil, 257, nil, 257, nil, nil, 257, 257, + nil, 231, nil, 291, nil, 291, 291, nil, 291, 291, + nil, 291, nil, 291, nil, 291, nil, 291, nil, nil, + 291, 291, 231, 184, 231, 231, nil, 231, 231, nil, + 231, nil, 231, nil, 231, nil, 231, nil, nil, 231, + 231, nil, 305, nil, 184, nil, 184, 184, nil, 184, + 184, nil, 184, nil, 184, nil, 184, nil, 184, nil, + nil, 184, 184, 305, 306, 305, 305, nil, 305, 305, + nil, 305, nil, 305, nil, 305, nil, 305, nil, nil, + 305, 305, nil, 151, nil, 306, nil, 306, 306, nil, + 306, 306, nil, 306, nil, 306, nil, 306, nil, 306, + nil, nil, 306, 306, 151, 315, 151, 151, nil, 151, + 151, nil, 151, nil, 151, nil, 151, nil, 151, nil, + nil, 151, 151, nil, 178, nil, 315, nil, 315, 315, + nil, 315, 315, nil, 315, nil, 315, nil, 315, nil, + 315, nil, nil, 315, 315, 178, 317, 178, 178, nil, + 178, 178, nil, 178, nil, 178, nil, 178, nil, 178, + nil, nil, 178, 178, nil, nil, nil, 317, nil, 317, + 317, nil, 317, 317, nil, 317, nil, 317, nil, 317, + nil, 317, nil, nil, 317, 317, 19, nil, 19, 19, + nil, 19, 19, nil, 19, nil, 19, nil, 19, nil, + 19, nil, nil, 19, 19, 0, nil, 0, 0, nil, + 0, 0, nil, 0, nil, 0, nil, 0, nil, 0, + nil, nil, 0, 0 ] racc_action_pointer = [ - 1308, 163, nil, nil, 101, nil, nil, 354, nil, 23, - nil, 6, nil, 568, nil, 354, 210, -31, nil, 1289, - 685, nil, nil, 170, nil, nil, 85, 269, nil, nil, - 304, nil, nil, 430, -2, nil, 257, 248, nil, 24, - nil, nil, nil, nil, 515, 206, nil, 184, 25, nil, - 217, 858, nil, nil, 663, 224, nil, nil, 202, 216, - nil, nil, 170, nil, 8, 131, nil, 128, 66, 50, - nil, nil, 301, 170, 231, 653, nil, 157, 181, 331, - 332, 335, nil, 342, 264, 343, nil, 292, nil, 329, - 202, nil, nil, 134, 145, nil, 143, nil, 589, 1013, - 930, 76, 223, nil, nil, -5, 220, nil, nil, 29, - 256, nil, 2, 249, nil, 283, 342, nil, 131, nil, - 96, nil, nil, nil, nil, -11, nil, 201, 819, 67, - nil, 187, 925, 894, nil, 965, 256, nil, nil, 51, - 72, 125, 178, 377, 398, 536, 504, 483, 345, 324, - 1147, 104, 451, 19, nil, 884, 217, 58, 334, nil, - 293, nil, 275, 246, nil, 234, 234, 215, 93, nil, - nil, nil, nil, 184, nil, nil, nil, 1248, 679, 730, - 55, 30, nil, 1207, nil, 746, nil, nil, nil, 117, - 100, -20, 762, 752, nil, nil, nil, 78, nil, nil, - nil, nil, 801, nil, 76, nil, nil, nil, nil, 161, - 803, 184, nil, nil, nil, nil, nil, 194, nil, 282, - 245, 221, 26, 1000, 185, 132, 978, 79, 251, 1106, - 217, 113, 89, nil, 868, nil, 75, nil, nil, 258, - 269, 260, 1, nil, 1043, 280, 595, 359, 271, 1065, - nil, nil, nil, nil, nil, 1084, nil, nil, nil, nil, - nil, nil, 294, -2, 302, 303, nil, 310, nil, nil, - nil, nil, nil, 7, 613, nil, 312, nil, 337, nil, - nil, 338, 817, 736, 669, nil, nil, -20, 1125, nil, - nil, nil, nil, 345, nil, nil, 874, 351, 352, nil, - nil, 1166, 1188, nil, nil, nil, nil, nil, nil, nil, - nil, 1229, nil, 1270, nil, nil, nil ] + 1317, 207, nil, nil, 85, nil, nil, 362, nil, 2, + nil, 6, nil, 637, nil, 359, 210, 216, nil, 1298, + 702, nil, nil, 173, nil, nil, 101, 268, nil, nil, + 303, nil, nil, 430, -2, nil, 252, 247, nil, 24, + nil, nil, nil, nil, 515, 217, 240, 131, 25, nil, + 220, 832, nil, nil, 661, 227, nil, nil, 202, 191, + nil, nil, 149, nil, 8, 131, nil, 99, 91, 47, + nil, nil, 41, 292, 157, 576, nil, 104, 223, 231, + 238, 244, nil, 245, 264, 246, nil, 324, nil, 262, + 326, nil, nil, 334, 344, nil, 333, nil, 592, 947, + 1022, 76, 350, nil, nil, -5, 348, nil, nil, 23, + 357, nil, 29, 266, nil, 359, 363, nil, 335, 78, + nil, 69, nil, nil, nil, nil, -11, nil, -31, 843, + 92, nil, 187, 920, 904, nil, 960, 240, nil, nil, + 51, 72, 125, 178, 377, 504, 536, 483, 398, 345, + 292, 1216, 231, 451, 19, nil, 898, 170, 58, 230, + nil, 179, nil, 198, 184, nil, 162, 147, 134, 77, + nil, nil, nil, nil, 128, nil, nil, nil, 1257, 688, + 712, 64, 49, nil, 1156, nil, 752, nil, nil, nil, + 117, 100, 130, -20, 777, 738, nil, nil, nil, 184, + nil, nil, nil, nil, 783, nil, 1, nil, nil, nil, + nil, 169, 793, 190, nil, nil, nil, nil, nil, 197, + nil, 298, 251, 282, 26, 1009, 185, 132, 966, 79, + 245, 1134, 229, 113, 172, nil, 853, nil, -3, nil, + nil, 260, 261, 259, 67, nil, 1074, 279, 560, 9, + 255, 1052, nil, nil, nil, nil, nil, 1093, nil, nil, + nil, nil, 304, nil, nil, 294, 301, 302, 303, nil, + 310, nil, nil, nil, nil, nil, 134, 616, nil, 312, + nil, 337, nil, nil, 338, 804, 728, 643, nil, nil, + -19, 1115, nil, nil, nil, nil, 350, nil, nil, nil, + 859, 357, 359, nil, nil, 1175, 1197, nil, nil, nil, + nil, nil, nil, nil, nil, 1238, nil, 1279, nil, nil, + nil ] racc_action_default = [ - -168, -193, -7, -161, -193, -8, -159, -193, -9, -193, - -10, -193, -11, -160, -12, -193, -193, -193, -13, -1, - -193, -14, -2, -193, -15, -3, -193, -39, -16, -5, - -193, -17, -6, -193, -193, -160, -168, -78, -166, -168, - -165, -164, -162, -167, -193, -71, -41, -168, -168, -185, - -21, -193, -33, -22, -193, -62, -23, -101, -26, -193, - -103, -102, -27, -148, -61, -28, -60, -29, -193, -30, - -149, -31, -32, -193, -193, -193, -96, -193, -90, -94, - -98, -91, -95, -92, -193, -97, -93, -193, -111, -89, - -193, -38, -4, -193, -152, -150, -168, -40, -71, -69, - -70, -193, -193, -181, -79, -193, -191, -76, -77, -193, - -193, -179, -193, -193, -81, -191, -193, -72, -168, -47, - -193, -54, -53, -61, -44, -193, -45, -193, -193, -193, - -20, -193, -193, -193, 317, -193, -193, -188, -125, -193, - -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, -193, -118, -193, -193, -169, -193, -170, - -58, -62, -191, -64, -56, -67, -193, -65, -61, -147, - -68, -146, -66, -63, -184, -182, -183, -193, -193, -193, - -193, -192, -180, -193, -163, -193, -105, -189, -190, -193, - -192, -193, -193, -193, -50, -49, -43, -193, -42, -24, - -25, -18, -193, -104, -193, -100, -142, -145, -143, -61, - -193, -193, -136, -144, -137, -128, -186, -190, -114, -116, - -120, -117, -122, -127, -124, -121, -126, -123, -119, -193, - -108, -112, -113, -115, -193, -130, -193, -134, -151, -178, - -176, -193, -193, -173, -193, -193, -59, -193, -71, -193, - -156, -75, -74, -37, -80, -193, -158, -82, -36, -73, - -48, -51, -84, -88, -85, -86, -87, -83, -52, -46, - -19, -99, -139, -191, -193, -187, -108, -107, -193, -131, - -129, -193, -193, -193, -193, -171, -172, -193, -193, -154, - -34, -57, -35, -191, -155, -157, -193, -193, -190, -141, - -106, -193, -193, -135, -177, -175, -174, -153, -55, -140, - -138, -193, -110, -193, -133, -109, -132 ] + -169, -194, -7, -162, -194, -8, -160, -194, -9, -194, + -10, -194, -11, -161, -12, -194, -194, -194, -13, -1, + -194, -14, -2, -194, -15, -3, -194, -39, -16, -5, + -194, -17, -6, -194, -194, -161, -169, -79, -167, -169, + -166, -165, -163, -168, -194, -72, -42, -169, -169, -186, + -21, -194, -33, -22, -194, -63, -23, -102, -26, -194, + -104, -103, -27, -149, -62, -28, -61, -29, -194, -30, + -150, -31, -32, -194, -194, -194, -97, -194, -91, -95, + -99, -92, -96, -93, -194, -98, -94, -194, -112, -90, + -194, -38, -4, -194, -153, -151, -169, -40, -72, -70, + -71, -194, -194, -182, -80, -194, -192, -77, -78, -194, + -194, -180, -194, -194, -82, -192, -194, -73, -79, -169, + -48, -194, -55, -54, -62, -45, -194, -46, -194, -194, + -194, -20, -194, -194, -194, 321, -194, -194, -189, -126, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -119, -194, -194, -170, -194, + -171, -59, -63, -192, -65, -57, -68, -194, -66, -62, + -148, -69, -147, -67, -64, -185, -183, -184, -194, -194, + -194, -194, -193, -181, -194, -164, -194, -106, -190, -191, + -194, -193, -192, -194, -194, -194, -51, -50, -44, -194, + -43, -24, -25, -18, -194, -105, -194, -101, -143, -146, + -144, -62, -194, -194, -137, -145, -138, -129, -187, -191, + -115, -117, -121, -118, -123, -128, -125, -122, -127, -124, + -120, -194, -109, -113, -114, -116, -194, -131, -194, -135, + -152, -179, -177, -194, -194, -174, -194, -194, -60, -194, + -72, -194, -157, -76, -75, -37, -81, -194, -159, -83, + -36, -74, -194, -49, -52, -85, -89, -86, -87, -88, + -84, -53, -47, -19, -100, -140, -192, -194, -188, -109, + -108, -194, -132, -130, -194, -194, -194, -194, -172, -173, + -194, -194, -155, -34, -58, -35, -192, -156, -158, -41, + -194, -194, -191, -142, -107, -194, -194, -136, -178, -176, + -175, -154, -56, -141, -139, -194, -111, -194, -134, -110, + -133 ] racc_goto_table = [ - 7, 92, 65, 11, 214, 115, 180, 19, 170, 243, - 107, 164, 211, 56, 50, 189, 104, 36, 235, 7, - 90, 71, 11, 15, 42, 199, 277, 63, 261, 268, - 22, 296, 125, 127, 237, 269, 113, 234, 46, 96, - 65, 106, 212, 245, 273, 94, 131, 158, 102, 39, - 110, 56, 129, 160, 241, 242, 91, 175, 162, 71, - nil, nil, 247, nil, nil, 63, 103, 136, 93, 111, - nil, nil, 300, nil, nil, nil, nil, nil, nil, nil, - nil, 272, nil, nil, nil, nil, nil, 167, nil, 211, - nil, nil, 114, nil, nil, nil, nil, 279, nil, 199, - 62, nil, 114, 191, nil, nil, 172, nil, nil, nil, - nil, nil, 63, 237, 176, nil, nil, 65, nil, nil, - nil, 65, 208, 114, 182, nil, 159, 184, 200, nil, - nil, nil, 56, 204, 122, 122, 71, nil, 62, 306, - 71, nil, 63, nil, 208, nil, 63, 63, nil, nil, - 7, nil, nil, 11, 107, nil, 170, 229, 69, 291, - 254, 303, nil, 259, nil, nil, nil, 309, nil, 63, - nil, nil, nil, 297, nil, 211, nil, 7, nil, nil, - 11, 264, 264, 7, 249, 165, 11, nil, nil, nil, - 255, 65, nil, 308, nil, nil, 69, nil, nil, 208, - 266, 266, 200, nil, nil, 122, 63, 63, 293, nil, - 71, 92, nil, nil, nil, 62, 63, nil, nil, 62, - 207, nil, nil, 208, 63, nil, 251, 252, nil, 7, - nil, 92, 11, 257, 58, 167, nil, 92, nil, nil, - nil, nil, 207, 171, 7, 67, nil, 11, 63, 7, - nil, 288, 11, nil, 172, 7, nil, nil, 11, nil, - 63, nil, nil, nil, nil, 72, nil, nil, 121, 121, - 92, 208, 58, 69, nil, 95, nil, 69, 171, 263, - 263, nil, nil, 67, 122, 208, nil, nil, 7, 62, - nil, 11, nil, 92, nil, 92, 63, 207, nil, nil, - 171, 7, 7, 72, 11, 11, nil, nil, 311, 313, - 63, 7, nil, 7, 11, nil, 11, nil, nil, 163, - nil, 207, 299, nil, nil, nil, nil, nil, nil, nil, - 169, 304, 305, 165, nil, nil, nil, 171, 171, 121, - nil, nil, nil, nil, nil, nil, nil, 69, nil, 58, - 173, nil, nil, 58, 206, 171, nil, nil, nil, nil, - 67, nil, nil, nil, 67, 169, nil, nil, nil, 207, - nil, nil, nil, nil, nil, nil, 206, nil, nil, 171, - 72, nil, nil, 207, 72, 213, nil, 169, nil, nil, - nil, 171, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 213, 238, nil, - nil, nil, nil, 262, 262, nil, nil, nil, 121, nil, - nil, nil, nil, 58, 265, 265, nil, 171, nil, 84, - nil, 206, nil, nil, 67, nil, nil, nil, nil, nil, - nil, 171, 169, nil, 267, 267, 99, 100, nil, nil, - nil, nil, nil, nil, 72, 206, nil, nil, nil, nil, - nil, nil, 213, nil, nil, nil, 169, 163, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 169, nil, - nil, nil, nil, nil, nil, nil, 213, 135, nil, nil, - 138, nil, nil, nil, nil, nil, nil, nil, 173, nil, - 154, nil, nil, 206, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 169, nil, nil, 206, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 169, nil, - nil, nil, nil, nil, 213, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 213, nil, - nil, nil, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, nil, 231, 232, 233 ] + 11, 92, 216, 7, 93, 115, 181, 19, 50, 213, + 245, 117, 165, 58, 42, 190, 56, 90, 36, 11, + 106, 171, 7, 237, 63, 201, 280, 71, 114, 113, + 22, 239, 126, 128, 264, 271, 15, 300, 114, 132, + 96, 256, 236, 272, 46, 214, 130, 122, 122, 247, + 276, 58, 94, 159, 56, 102, 39, 110, 163, 114, + 137, 161, 63, 249, 117, 71, 103, 243, 244, 111, + 91, 176, nil, 304, nil, nil, nil, nil, nil, nil, + 275, nil, nil, nil, nil, nil, nil, 213, nil, nil, + nil, nil, 262, nil, nil, nil, nil, nil, 164, nil, + 201, 192, nil, 282, 193, nil, nil, nil, nil, 63, + nil, 239, 173, nil, 183, 177, nil, 185, nil, 122, + nil, nil, nil, nil, nil, nil, 160, nil, 206, 58, + nil, nil, 202, 58, 208, nil, 56, nil, nil, nil, + 63, nil, 310, 71, 63, 63, nil, 71, nil, nil, + nil, 11, nil, nil, 7, nil, 208, 261, 231, 72, + 307, nil, 294, 253, 254, nil, nil, 63, 313, 95, + 259, 171, nil, nil, nil, 213, 301, nil, 11, nil, + nil, 7, nil, nil, 11, 251, nil, 7, nil, nil, + nil, 257, nil, nil, 265, 265, 312, 72, nil, 122, + nil, nil, nil, nil, 58, 63, 63, 202, 269, 269, + 296, nil, 208, 92, nil, 63, 117, nil, 71, nil, + nil, nil, nil, 63, nil, nil, nil, nil, nil, nil, + nil, 11, nil, 92, 7, nil, 208, nil, nil, 92, + nil, nil, nil, 67, 174, 69, 11, 63, 164, 7, + nil, 11, nil, 291, 7, nil, nil, 11, nil, 63, + 7, 303, 173, nil, nil, nil, nil, nil, nil, nil, + 308, 309, nil, 92, nil, 72, nil, nil, nil, 72, + 215, 67, nil, 69, nil, 208, nil, nil, nil, nil, + nil, 11, nil, nil, 7, nil, 63, 92, nil, 92, + 208, nil, 215, 240, nil, 11, 11, nil, 7, 7, + nil, 63, 315, 317, nil, 11, nil, 11, 7, nil, + 7, nil, nil, nil, nil, nil, nil, nil, 170, nil, + 172, nil, 65, nil, nil, nil, nil, nil, nil, nil, + 270, 270, nil, 62, nil, nil, nil, nil, nil, nil, + 72, nil, nil, nil, nil, nil, nil, nil, 215, 67, + nil, 69, nil, 67, 170, 69, 172, nil, nil, nil, + 65, nil, 84, nil, nil, nil, nil, 123, 123, nil, + nil, 62, 215, nil, nil, nil, 170, nil, 172, 99, + 100, nil, nil, nil, 174, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 168, nil, nil, + nil, nil, nil, nil, 268, 268, 172, 172, 166, nil, + 136, 215, nil, 139, 67, nil, 69, nil, nil, nil, + nil, nil, 170, 155, 172, nil, 215, nil, 65, 123, + nil, nil, 65, 210, nil, nil, nil, nil, nil, 62, + nil, nil, nil, 62, 209, nil, 170, nil, 172, nil, + nil, nil, nil, nil, nil, 210, nil, nil, 170, nil, + 172, nil, nil, nil, nil, nil, 209, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, nil, 233, 234, + 235, nil, nil, 267, 267, 170, nil, 172, nil, nil, + nil, nil, nil, 65, 266, 266, nil, nil, nil, 123, + 170, 210, 172, nil, 62, nil, nil, nil, nil, nil, + nil, nil, 209, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 210, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 209, 168, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 166, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 210, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 209, nil, nil, nil, 210, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + 209 ] racc_goto_check = [ - 20, 4, 23, 33, 60, 31, 32, 2, 46, 70, - 48, 43, 58, 20, 18, 32, 51, 28, 56, 20, - 33, 26, 33, 1, 67, 19, 54, 45, 42, 42, - 3, 53, 37, 37, 58, 38, 52, 55, 36, 28, - 23, 34, 59, 30, 61, 62, 52, 63, 64, 65, - 66, 20, 18, 29, 68, 69, 5, 71, 31, 26, - nil, nil, 32, nil, nil, 45, 3, 52, 49, 3, - nil, nil, 54, nil, nil, nil, nil, nil, nil, nil, - nil, 60, nil, nil, nil, nil, nil, 23, nil, 58, - nil, nil, 49, nil, nil, nil, nil, 56, nil, 19, - 22, nil, 49, 37, nil, nil, 26, nil, nil, nil, - nil, nil, 45, 58, 28, nil, nil, 23, nil, nil, - nil, 23, 23, 49, 67, nil, 3, 67, 20, nil, - nil, nil, 20, 18, 22, 22, 26, nil, 22, 70, - 26, nil, 45, nil, 23, nil, 45, 45, nil, nil, - 20, nil, nil, 33, 48, nil, 46, 2, 25, 43, - 51, 58, nil, 48, nil, nil, nil, 60, nil, 45, - nil, nil, nil, 32, nil, 58, nil, 20, nil, nil, - 33, 23, 23, 20, 2, 22, 33, nil, nil, nil, - 2, 23, nil, 32, nil, nil, 25, nil, nil, 23, - 26, 26, 20, nil, nil, 22, 45, 45, 31, nil, - 26, 4, nil, nil, nil, 22, 45, nil, nil, 22, - 22, nil, nil, 23, 45, nil, 49, 49, nil, 20, - nil, 4, 33, 49, 21, 23, nil, 4, nil, nil, - nil, nil, 22, 25, 20, 24, nil, 33, 45, 20, - nil, 2, 33, nil, 26, 20, nil, nil, 33, nil, - 45, nil, nil, nil, nil, 27, nil, nil, 21, 21, - 4, 23, 21, 25, nil, 27, nil, 25, 25, 22, - 22, nil, nil, 24, 22, 23, nil, nil, 20, 22, - nil, 33, nil, 4, nil, 4, 45, 22, nil, nil, - 25, 20, 20, 27, 33, 33, nil, nil, 2, 2, - 45, 20, nil, 20, 33, nil, 33, nil, nil, 21, - nil, 22, 49, nil, nil, nil, nil, nil, nil, nil, - 24, 49, 49, 22, nil, nil, nil, 25, 25, 21, - nil, nil, nil, nil, nil, nil, nil, 25, nil, 21, - 27, nil, nil, 21, 21, 25, nil, nil, nil, nil, - 24, nil, nil, nil, 24, 24, nil, nil, nil, 22, - nil, nil, nil, nil, nil, nil, 21, nil, nil, 25, - 27, nil, nil, 22, 27, 27, nil, 24, nil, nil, - nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 27, 27, nil, - nil, nil, nil, 21, 21, nil, nil, nil, 21, nil, - nil, nil, nil, 21, 24, 24, nil, 25, nil, 47, - nil, 21, nil, nil, 24, nil, nil, nil, nil, nil, - nil, 25, 24, nil, 27, 27, 47, 47, nil, nil, - nil, nil, nil, nil, 27, 21, nil, nil, nil, nil, - nil, nil, 27, nil, nil, nil, 24, 21, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 24, nil, - nil, nil, nil, nil, nil, nil, 27, 47, nil, nil, - 47, nil, nil, nil, nil, nil, nil, nil, 27, nil, - 47, nil, nil, 21, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 24, nil, nil, 21, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 24, nil, - nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 27, nil, - nil, nil, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, nil, 47, 47, 47 ] + 33, 4, 60, 20, 49, 31, 32, 2, 18, 58, + 70, 48, 43, 21, 67, 32, 20, 33, 28, 33, + 34, 46, 20, 56, 45, 19, 54, 26, 49, 52, + 3, 58, 37, 37, 42, 42, 1, 53, 49, 52, + 28, 51, 55, 38, 36, 59, 18, 21, 21, 30, + 61, 21, 62, 63, 20, 64, 65, 66, 31, 49, + 52, 29, 45, 32, 48, 26, 3, 68, 69, 3, + 5, 71, nil, 54, nil, nil, nil, nil, nil, nil, + 60, nil, nil, nil, nil, nil, nil, 58, nil, nil, + nil, nil, 32, nil, nil, nil, nil, nil, 21, nil, + 19, 34, nil, 56, 37, nil, nil, nil, nil, 45, + nil, 58, 26, nil, 67, 28, nil, 67, nil, 21, + nil, nil, nil, nil, nil, nil, 3, nil, 18, 21, + nil, nil, 20, 21, 21, nil, 20, nil, nil, nil, + 45, nil, 70, 26, 45, 45, nil, 26, nil, nil, + nil, 33, nil, nil, 20, nil, 21, 48, 2, 27, + 58, nil, 43, 49, 49, nil, nil, 45, 60, 27, + 49, 46, nil, nil, nil, 58, 32, nil, 33, nil, + nil, 20, nil, nil, 33, 2, nil, 20, nil, nil, + nil, 2, nil, nil, 21, 21, 32, 27, nil, 21, + nil, nil, nil, nil, 21, 45, 45, 20, 26, 26, + 31, nil, 21, 4, nil, 45, 48, nil, 26, nil, + nil, nil, nil, 45, nil, nil, nil, nil, nil, nil, + nil, 33, nil, 4, 20, nil, 21, nil, nil, 4, + nil, nil, nil, 24, 27, 25, 33, 45, 21, 20, + nil, 33, nil, 2, 20, nil, nil, 33, nil, 45, + 20, 49, 26, nil, nil, nil, nil, nil, nil, nil, + 49, 49, nil, 4, nil, 27, nil, nil, nil, 27, + 27, 24, nil, 25, nil, 21, nil, nil, nil, nil, + nil, 33, nil, nil, 20, nil, 45, 4, nil, 4, + 21, nil, 27, 27, nil, 33, 33, nil, 20, 20, + nil, 45, 2, 2, nil, 33, nil, 33, 20, nil, + 20, nil, nil, nil, nil, nil, nil, nil, 24, nil, + 25, nil, 23, nil, nil, nil, nil, nil, nil, nil, + 27, 27, nil, 22, nil, nil, nil, nil, nil, nil, + 27, nil, nil, nil, nil, nil, nil, nil, 27, 24, + nil, 25, nil, 24, 24, 25, 25, nil, nil, nil, + 23, nil, 47, nil, nil, nil, nil, 22, 22, nil, + nil, 22, 27, nil, nil, nil, 24, nil, 25, 47, + 47, nil, nil, nil, 27, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 23, nil, nil, + nil, nil, nil, nil, 24, 24, 25, 25, 22, nil, + 47, 27, nil, 47, 24, nil, 25, nil, nil, nil, + nil, nil, 24, 47, 25, nil, 27, nil, 23, 22, + nil, nil, 23, 23, nil, nil, nil, nil, nil, 22, + nil, nil, nil, 22, 22, nil, 24, nil, 25, nil, + nil, nil, nil, nil, nil, 23, nil, nil, 24, nil, + 25, nil, nil, nil, nil, nil, 22, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, nil, 47, 47, + 47, nil, nil, 23, 23, 24, nil, 25, nil, nil, + nil, nil, nil, 23, 22, 22, nil, nil, nil, 22, + 24, 23, 25, nil, 22, nil, nil, nil, nil, nil, + nil, nil, 22, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, 22, 23, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 22, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 22, nil, nil, nil, 23, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + 22 ] racc_goto_pointer = [ - nil, 23, 7, 30, -18, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 1, -103, - 0, 221, 87, -11, 232, 145, 8, 252, 13, -45, - -117, -40, -100, 3, 4, nil, 27, -15, -162, nil, - nil, nil, -164, -87, nil, 14, -90, 413, -27, 48, - nil, -21, -8, -242, -204, -118, -137, nil, -121, -91, - -129, -166, 22, -49, 12, 40, 11, 15, -103, -102, - -148, -44 ] + nil, 36, 7, 30, -18, 53, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, -5, -104, + 3, 0, 330, 319, 230, 232, 14, 146, 14, -37, + -112, -40, -100, 0, -17, nil, 33, -15, -156, nil, + nil, nil, -160, -86, nil, 11, -77, 356, -34, -16, + nil, -141, -15, -239, -206, -114, -133, nil, -125, -89, + -132, -162, 29, -43, 19, 47, 18, 5, -91, -90, + -148, -30 ] racc_goto_default = [ - nil, nil, nil, 124, 25, 29, 32, 2, 5, 8, + nil, nil, nil, 125, 25, 29, 32, 2, 5, 8, 10, 12, 14, 18, 21, 24, 28, 31, nil, 53, 76, 78, 79, 81, 83, 85, 86, 89, 30, nil, - nil, nil, nil, 59, nil, 17, nil, nil, 126, 197, - 119, 120, nil, nil, 166, 80, 82, nil, 117, 88, - 108, nil, nil, 185, nil, nil, nil, 236, 68, nil, + nil, nil, nil, 59, nil, 17, nil, nil, 127, 199, + 120, 121, nil, nil, 167, 80, 82, nil, 107, 88, + 108, 104, nil, 186, nil, nil, nil, 238, 68, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ] racc_token_table = { false => 0, Object.new => 1, :LBRACK => 2, :DQTEXT => 3, :SQTEXT => 4, :RBRACK => 5, :LBRACE => 6, :RBRACE => 7, :SYMBOL => 8, :FARROW => 9, :COMMA => 10, :TRUE => 11, :FALSE => 12, :EQUALS => 13, :APPENDS => 14, :LESSEQUAL => 15, :NOTEQUAL => 16, :DOT => 17, :COLON => 18, :LLCOLLECT => 19, :RRCOLLECT => 20, :QMARK => 21, :LPAREN => 22, :RPAREN => 23, :ISEQUAL => 24, :GREATEREQUAL => 25, :GREATERTHAN => 26, :LESSTHAN => 27, :IF => 28, :ELSE => 29, :IMPORT => 30, :DEFINE => 31, :ELSIF => 32, :VARIABLE => 33, :CLASS => 34, :INHERITS => 35, :NODE => 36, :BOOLEAN => 37, :NAME => 38, :SEMIC => 39, :CASE => 40, :DEFAULT => 41, :AT => 42, :LCOLLECT => 43, :RCOLLECT => 44, :CLASSNAME => 45, :CLASSREF => 46, :NOT => 47, :OR => 48, :AND => 49, :UNDEF => 50, :PARROW => 51, :PLUS => 52, :MINUS => 53, :TIMES => 54, :DIV => 55, :LSHIFT => 56, :RSHIFT => 57, :UMINUS => 58 } racc_use_result_var = true racc_nt_base = 59 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_token_to_s_table = [ '$end', 'error', 'LBRACK', 'DQTEXT', 'SQTEXT', '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', '$start', 'program', 'statements', 'nil', 'statement', 'resource', 'virtualresource', 'collection', 'assignment', 'casestatement', 'ifstatement', 'import', 'fstatement', 'definition', 'hostclass', 'nodedef', 'resourceoverride', 'append', 'funcvalues', 'namestring', 'resourceref', 'name', 'variable', 'type', 'boolean', 'funcrvalue', 'selector', 'quotedtext', 'classname', 'resourceinstances', 'endsemi', 'params', 'endcomma', 'classref', 'anyparams', 'at', 'collectrhand', 'collstatements', 'collstatement', 'colljoin', 'collexpr', 'colllval', 'simplervalue', 'resourceinst', 'resourcename', 'undef', 'array', 'expression', 'param', 'rvalue', 'addparam', 'anyparam', 'rvalues', 'comma', 'else', 'caseopts', 'caseopt', 'casevalues', 'selectlhand', 'svalues', 'selectval', 'sintvalues', 'qtexts', 'argumentlist', 'classparent', 'hostnames', 'nodeparent', 'hostname', 'nothing', 'arguments', 'argument', 'classnameordefault'] Racc_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted module_eval <<'.,.,', 'grammar.ra', 42 def _reduce_1( val, _values, result ) if val[0] # Make sure we always return an array. if val[0].is_a?(AST::ASTArray) if val[0].children.empty? result = nil else result = val[0] end else result = aryfy(val[0]) end else result = nil end result end .,., # reduce 2 omitted # reduce 3 omitted module_eval <<'.,.,', 'grammar.ra', 58 def _reduce_4( val, _values, result ) if val[0] and val[1] 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 elsif obj = (val[0] || val[1]) result = obj else result = nil end result end .,., # reduce 5 omitted # reduce 6 omitted # reduce 7 omitted # reduce 8 omitted # reduce 9 omitted # reduce 10 omitted # reduce 11 omitted # reduce 12 omitted # reduce 13 omitted # reduce 14 omitted # reduce 15 omitted # reduce 16 omitted # reduce 17 omitted module_eval <<'.,.,', 'grammar.ra', 81 def _reduce_18( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement result end .,., module_eval <<'.,.,', 'grammar.ra', 88 def _reduce_19( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement result end .,., module_eval <<'.,.,', 'grammar.ra', 93 def _reduce_20( val, _values, result ) result = ast AST::Function, :name => val[0], :arguments => AST::ASTArray.new({}), :ftype => :statement result end .,., module_eval <<'.,.,', 'grammar.ra', 100 def _reduce_21( val, _values, result ) args = aryfy(val[1]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement result end .,., # reduce 22 omitted # reduce 23 omitted module_eval <<'.,.,', 'grammar.ra', 108 def _reduce_24( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., module_eval <<'.,.,', 'grammar.ra', 117 def _reduce_25( val, _values, result ) unless val[0].is_a?(AST::ASTArray) val[0] = aryfy(val[0]) end val[0].push(val[2]) result = val[0] result end .,., # reduce 26 omitted # reduce 27 omitted # reduce 28 omitted # reduce 29 omitted # reduce 30 omitted # reduce 31 omitted # reduce 32 omitted module_eval <<'.,.,', 'grammar.ra', 130 def _reduce_33( val, _values, result ) result = ast AST::Name, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 152 def _reduce_34( val, _values, result ) @lexer.commentpop array = val[2] if array.instance_of?(AST::ResourceInstance) array = [array] end result = ast AST::ASTArray # this iterates across each specified resourceinstance array.each { |instance| unless instance.instance_of?(AST::ResourceInstance) raise Puppet::Dev, "Got something that isn't an instance" end # 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], :params => instance[1]) } result end .,., module_eval <<'.,.,', 'grammar.ra', 155 def _reduce_35( val, _values, result ) # This is a deprecated syntax. error "All resource specifications require names" result end .,., module_eval <<'.,.,', 'grammar.ra', 158 def _reduce_36( val, _values, result ) # a defaults setting for a type result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2]) result end .,., module_eval <<'.,.,', 'grammar.ra', 164 def _reduce_37( val, _values, result ) @lexer.commentpop result = ast AST::ResourceOverride, :object => val[0], :params => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 191 def _reduce_38( 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") end if val[1].is_a? AST::ResourceDefaults error "Defaults are not virtualizable" end 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 result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 192 def _reduce_39( val, _values, result ) result = :virtual result end .,., module_eval <<'.,.,', 'grammar.ra', 193 def _reduce_40( val, _values, result ) result = :exported result end .,., -module_eval <<'.,.,', 'grammar.ra', 216 +module_eval <<'.,.,', 'grammar.ra', 217 def _reduce_41( val, _values, result ) if val[0] =~ /^[a-z]/ Puppet.warning addcontext("Collection names must now be capitalized") end type = val[0].downcase - args = {:type => type } + args = {:type => type} if val[1].is_a?(AST::CollExpr) args[:query] = val[1] args[:query].type = type args[:form] = args[:query].form else args[:form] = val[1] end if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly] Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored") end + args[:override] = val[3] result = ast AST::Collection, args result end .,., -module_eval <<'.,.,', 'grammar.ra', 226 +module_eval <<'.,.,', 'grammar.ra', 236 def _reduce_42( val, _values, result ) + if val[0] =~ /^[a-z]/ + Puppet.warning addcontext("Collection names must now be capitalized") + end + type = val[0].downcase + args = {:type => type } + + if val[1].is_a?(AST::CollExpr) + args[:query] = val[1] + args[:query].type = type + args[:form] = args[:query].form + else + args[:form] = val[1] + end + if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly] + Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored") + end + result = ast AST::Collection, args + result + end +.,., + +module_eval <<'.,.,', 'grammar.ra', 246 + def _reduce_43( val, _values, result ) if val[1] result = val[1] result.form = :virtual else result = :virtual end result end .,., -module_eval <<'.,.,', 'grammar.ra', 234 - def _reduce_43( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 254 + def _reduce_44( val, _values, result ) if val[1] result = val[1] result.form = :exported else result = :exported end result end .,., - # reduce 44 omitted - # reduce 45 omitted -module_eval <<'.,.,', 'grammar.ra', 242 - def _reduce_46( val, _values, result ) + # reduce 46 omitted + +module_eval <<'.,.,', 'grammar.ra', 262 + def _reduce_47( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] result end .,., - # reduce 47 omitted + # reduce 48 omitted -module_eval <<'.,.,', 'grammar.ra', 248 - def _reduce_48( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 268 + def _reduce_49( val, _values, result ) result = val[1] result.parens = true result end .,., - # reduce 49 omitted - # reduce 50 omitted -module_eval <<'.,.,', 'grammar.ra', 256 - def _reduce_51( val, _values, result ) + # reduce 51 omitted + +module_eval <<'.,.,', 'grammar.ra', 276 + def _reduce_52( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr #result.push *val result end .,., -module_eval <<'.,.,', 'grammar.ra', 261 - def _reduce_52( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 281 + def _reduce_53( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr #result.push *val result end .,., - # reduce 53 omitted - # reduce 54 omitted -module_eval <<'.,.,', 'grammar.ra', 268 - def _reduce_55( val, _values, result ) + # reduce 55 omitted + +module_eval <<'.,.,', 'grammar.ra', 288 + def _reduce_56( val, _values, result ) result = ast AST::ResourceInstance, :children => [val[0],val[2]] result end .,., - # reduce 56 omitted + # reduce 57 omitted -module_eval <<'.,.,', 'grammar.ra', 278 - def _reduce_57( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 298 + def _reduce_58( val, _values, result ) 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 result end .,., - # reduce 58 omitted - # reduce 59 omitted -module_eval <<'.,.,', 'grammar.ra', 285 - def _reduce_60( val, _values, result ) + # reduce 60 omitted + +module_eval <<'.,.,', 'grammar.ra', 305 + def _reduce_61( val, _values, result ) result = ast AST::Undef, :value => :undef result end .,., -module_eval <<'.,.,', 'grammar.ra', 289 - def _reduce_61( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 309 + def _reduce_62( val, _values, result ) result = ast AST::Name, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 293 - def _reduce_62( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 313 + def _reduce_63( val, _values, result ) result = ast AST::Type, :value => val[0] result end .,., - # reduce 63 omitted - # reduce 64 omitted # reduce 65 omitted # reduce 66 omitted # reduce 67 omitted # reduce 68 omitted -module_eval <<'.,.,', 'grammar.ra', 309 - def _reduce_69( val, _values, result ) + # reduce 69 omitted + +module_eval <<'.,.,', 'grammar.ra', 329 + def _reduce_70( val, _values, result ) if val[0] =~ /::/ raise Puppet::ParseError, "Cannot assign to variables in other namespaces" end # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0] result = ast AST::VarDef, :name => variable, :value => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 314 - def _reduce_70( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 334 + def _reduce_71( val, _values, result ) variable = ast AST::Name, :value => val[0] result = ast AST::VarDef, :name => variable, :value => val[2], :append => true result end .,., -module_eval <<'.,.,', 'grammar.ra', 319 - def _reduce_71( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 339 + def _reduce_72( val, _values, result ) result = ast AST::ASTArray result end .,., -module_eval <<'.,.,', 'grammar.ra', 319 - def _reduce_72( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 339 + def _reduce_73( val, _values, result ) result = val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 328 - def _reduce_73( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 348 + def _reduce_74( 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 end .,., -module_eval <<'.,.,', 'grammar.ra', 332 - def _reduce_74( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 352 + def _reduce_75( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 337 - def _reduce_75( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 357 + def _reduce_76( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2], :add => true result end .,., - # reduce 76 omitted - # reduce 77 omitted -module_eval <<'.,.,', 'grammar.ra', 345 - def _reduce_78( val, _values, result ) + # reduce 78 omitted + +module_eval <<'.,.,', 'grammar.ra', 365 + def _reduce_79( val, _values, result ) result = ast AST::ASTArray result end .,., -module_eval <<'.,.,', 'grammar.ra', 345 - def _reduce_79( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 365 + def _reduce_80( val, _values, result ) result = val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 354 - def _reduce_80( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 374 + def _reduce_81( 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 end .,., - # reduce 81 omitted + # reduce 82 omitted -module_eval <<'.,.,', 'grammar.ra', 363 - def _reduce_82( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 383 + def _reduce_83( 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]] end result end .,., - # reduce 83 omitted - # reduce 84 omitted # reduce 85 omitted # reduce 86 omitted # reduce 87 omitted # reduce 88 omitted # reduce 89 omitted # reduce 90 omitted # reduce 91 omitted # reduce 92 omitted # reduce 93 omitted # reduce 94 omitted # reduce 95 omitted # reduce 96 omitted # reduce 97 omitted # reduce 98 omitted -module_eval <<'.,.,', 'grammar.ra', 390 - def _reduce_99( val, _values, result ) + # reduce 99 omitted + +module_eval <<'.,.,', 'grammar.ra', 410 + def _reduce_100( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :rvalue result end .,., -module_eval <<'.,.,', 'grammar.ra', 395 - def _reduce_100( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 415 + def _reduce_101( val, _values, result ) result = ast AST::Function, :name => val[0], :arguments => AST::ASTArray.new({}), :ftype => :rvalue result end .,., -module_eval <<'.,.,', 'grammar.ra', 399 - def _reduce_101( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 419 + def _reduce_102( val, _values, result ) result = ast AST::String, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 401 - def _reduce_102( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 421 + def _reduce_103( val, _values, result ) result = ast AST::FlatString, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 405 - def _reduce_103( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 425 + def _reduce_104( val, _values, result ) result = ast AST::Boolean, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 410 - def _reduce_104( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 430 + def _reduce_105( val, _values, result ) Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceReference, :type => val[0], :title => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 412 - def _reduce_105( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 432 + def _reduce_106( val, _values, result ) result = ast AST::ResourceReference, :type => val[0], :title => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 426 - def _reduce_106( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 446 + def _reduce_107( val, _values, result ) @lexer.commentpop args = { :test => val[1], :statements => val[3] } if val[5] args[:else] = val[5] end result = ast AST::IfStatement, args result end .,., -module_eval <<'.,.,', 'grammar.ra', 439 - def _reduce_107( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 459 + def _reduce_108( val, _values, result ) @lexer.commentpop args = { :test => val[1], :statements => ast(AST::Nop) } if val[4] args[:else] = val[4] end result = ast AST::IfStatement, args result end .,., - # reduce 108 omitted + # reduce 109 omitted -module_eval <<'.,.,', 'grammar.ra', 445 - def _reduce_109( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 465 + def _reduce_110( val, _values, result ) @lexer.commentpop result = ast AST::Else, :statements => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 449 - def _reduce_110( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 469 + def _reduce_111( val, _values, result ) @lexer.commentpop result = ast AST::Else, :statements => ast(AST::Nop) result end .,., - # reduce 111 omitted - -module_eval <<'.,.,', 'grammar.ra', 466 - def _reduce_112( val, _values, result ) - result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] - result - end -.,., + # reduce 112 omitted -module_eval <<'.,.,', 'grammar.ra', 469 +module_eval <<'.,.,', 'grammar.ra', 486 def _reduce_113( val, _values, result ) result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 472 +module_eval <<'.,.,', 'grammar.ra', 489 def _reduce_114( val, _values, result ) result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 475 +module_eval <<'.,.,', 'grammar.ra', 492 def _reduce_115( val, _values, result ) result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 478 +module_eval <<'.,.,', 'grammar.ra', 495 def _reduce_116( val, _values, result ) result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 481 +module_eval <<'.,.,', 'grammar.ra', 498 def _reduce_117( val, _values, result ) result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 484 +module_eval <<'.,.,', 'grammar.ra', 501 def _reduce_118( val, _values, result ) - result = ast AST::Minus, :value => val[1] + result = ast AST::ArithmeticOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 487 +module_eval <<'.,.,', 'grammar.ra', 504 def _reduce_119( val, _values, result ) - result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] + result = ast AST::Minus, :value => val[1] result end .,., -module_eval <<'.,.,', 'grammar.ra', 490 +module_eval <<'.,.,', 'grammar.ra', 507 def _reduce_120( val, _values, result ) result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 493 +module_eval <<'.,.,', 'grammar.ra', 510 def _reduce_121( val, _values, result ) result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 496 +module_eval <<'.,.,', 'grammar.ra', 513 def _reduce_122( val, _values, result ) result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 499 +module_eval <<'.,.,', 'grammar.ra', 516 def _reduce_123( val, _values, result ) result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 502 +module_eval <<'.,.,', 'grammar.ra', 519 def _reduce_124( val, _values, result ) result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 505 +module_eval <<'.,.,', 'grammar.ra', 522 def _reduce_125( val, _values, result ) - result = ast AST::Not, :value => val[1] + result = ast AST::ComparisonOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 508 +module_eval <<'.,.,', 'grammar.ra', 525 def _reduce_126( val, _values, result ) - result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2] + result = ast AST::Not, :value => val[1] result end .,., -module_eval <<'.,.,', 'grammar.ra', 511 +module_eval <<'.,.,', 'grammar.ra', 528 def _reduce_127( val, _values, result ) result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 514 +module_eval <<'.,.,', 'grammar.ra', 531 def _reduce_128( val, _values, result ) - result = val[1] + result = ast AST::BooleanOperator, :operator => val[1], :lval => val[0], :rval => val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 523 +module_eval <<'.,.,', 'grammar.ra', 534 def _reduce_129( val, _values, result ) + result = val[1] + result + end +.,., + +module_eval <<'.,.,', 'grammar.ra', 543 + def _reduce_130( val, _values, result ) @lexer.commentpop options = val[3] unless options.instance_of?(AST::ASTArray) options = ast AST::ASTArray, :children => [val[3]] end result = ast AST::CaseStatement, :test => val[1], :options => options result end .,., - # reduce 130 omitted + # reduce 131 omitted -module_eval <<'.,.,', 'grammar.ra', 533 - def _reduce_131( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 553 + def _reduce_132( val, _values, result ) 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 result end .,., -module_eval <<'.,.,', 'grammar.ra', 538 - def _reduce_132( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 558 + def _reduce_133( val, _values, result ) @lexer.commentpop result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., -module_eval <<'.,.,', 'grammar.ra', 544 - def _reduce_133( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 564 + def _reduce_134( val, _values, result ) @lexer.commentpop result = ast(AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) ) result end .,., - # reduce 134 omitted + # reduce 135 omitted -module_eval <<'.,.,', 'grammar.ra', 554 - def _reduce_135( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 574 + def _reduce_136( 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 end .,., -module_eval <<'.,.,', 'grammar.ra', 558 - def _reduce_136( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 578 + def _reduce_137( val, _values, result ) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., - # reduce 137 omitted + # reduce 138 omitted -module_eval <<'.,.,', 'grammar.ra', 564 - def _reduce_138( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 584 + def _reduce_139( val, _values, result ) @lexer.commentpop result = val[1] result end .,., - # reduce 139 omitted + # reduce 140 omitted -module_eval <<'.,.,', 'grammar.ra', 574 - def _reduce_140( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 594 + def _reduce_141( 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 end .,., -module_eval <<'.,.,', 'grammar.ra', 578 - def _reduce_141( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 598 + def _reduce_142( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., - # reduce 142 omitted - # reduce 143 omitted # reduce 144 omitted # reduce 145 omitted # reduce 146 omitted # reduce 147 omitted # reduce 148 omitted -module_eval <<'.,.,', 'grammar.ra', 589 - def _reduce_149( val, _values, result ) + # reduce 149 omitted + +module_eval <<'.,.,', 'grammar.ra', 609 + def _reduce_150( val, _values, result ) result = ast AST::Default, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 591 - def _reduce_150( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 611 + def _reduce_151( val, _values, result ) result = [val[0].value] result end .,., -module_eval <<'.,.,', 'grammar.ra', 595 - def _reduce_151( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 615 + def _reduce_152( val, _values, result ) results = val[0] << val[2].value result end .,., -module_eval <<'.,.,', 'grammar.ra', 603 - def _reduce_152( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 623 + def _reduce_153( val, _values, result ) val[1].each do |file| import(file) end result = AST::ASTArray.new(:children => []) result end .,., -module_eval <<'.,.,', 'grammar.ra', 614 - def _reduce_153( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 634 + def _reduce_154( val, _values, result ) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :code => val[4] @lexer.indefine = false result = nil #} | DEFINE NAME argumentlist parent LBRACE RBRACE { result end .,., -module_eval <<'.,.,', 'grammar.ra', 619 - def _reduce_154( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 639 + def _reduce_155( val, _values, result ) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2] @lexer.indefine = false result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 628 - def _reduce_155( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 648 + def _reduce_156( val, _values, result ) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :code => val[4], :parent => val[2] result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 634 - def _reduce_156( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 654 + def _reduce_157( val, _values, result ) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :parent => val[2] result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 640 - def _reduce_157( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 660 + def _reduce_158( val, _values, result ) @lexer.commentpop newnode val[1], :parent => val[2], :code => val[4] result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 644 - def _reduce_158( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 664 + def _reduce_159( val, _values, result ) @lexer.commentpop newnode val[1], :parent => val[2] result = nil result end .,., - # reduce 159 omitted - # reduce 160 omitted # reduce 161 omitted # reduce 162 omitted -module_eval <<'.,.,', 'grammar.ra', 658 - def _reduce_163( val, _values, result ) + # reduce 163 omitted + +module_eval <<'.,.,', 'grammar.ra', 678 + def _reduce_164( val, _values, result ) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] result end .,., - # reduce 164 omitted - # reduce 165 omitted # reduce 166 omitted # reduce 167 omitted -module_eval <<'.,.,', 'grammar.ra', 667 - def _reduce_168( val, _values, result ) + # reduce 168 omitted + +module_eval <<'.,.,', 'grammar.ra', 687 + def _reduce_169( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 671 - def _reduce_169( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 691 + def _reduce_170( val, _values, result ) result = ast AST::ASTArray, :children => [] result end .,., - # reduce 170 omitted + # reduce 171 omitted -module_eval <<'.,.,', 'grammar.ra', 676 - def _reduce_171( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 696 + def _reduce_172( val, _values, result ) result = nil result end .,., -module_eval <<'.,.,', 'grammar.ra', 680 - def _reduce_172( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 700 + def _reduce_173( val, _values, result ) result = val[1] result = [result] unless result[0].is_a?(Array) result end .,., - # reduce 173 omitted + # reduce 174 omitted -module_eval <<'.,.,', 'grammar.ra', 687 - def _reduce_174( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 707 + def _reduce_175( val, _values, result ) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] result end .,., -module_eval <<'.,.,', 'grammar.ra', 692 - def _reduce_175( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 712 + def _reduce_176( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0], val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 696 - def _reduce_176( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 716 + def _reduce_177( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 698 - def _reduce_177( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 718 + def _reduce_178( val, _values, result ) result = [val[0], val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 700 - def _reduce_178( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 720 + def _reduce_179( val, _values, result ) result = [val[0]] result end .,., - # reduce 179 omitted + # reduce 180 omitted -module_eval <<'.,.,', 'grammar.ra', 705 - def _reduce_180( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 725 + def _reduce_181( val, _values, result ) result = val[1] result end .,., - # reduce 181 omitted + # reduce 182 omitted -module_eval <<'.,.,', 'grammar.ra', 710 - def _reduce_182( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 730 + def _reduce_183( val, _values, result ) result = val[1] result end .,., - # reduce 183 omitted - # reduce 184 omitted -module_eval <<'.,.,', 'grammar.ra', 716 - def _reduce_185( val, _values, result ) + # reduce 185 omitted + +module_eval <<'.,.,', 'grammar.ra', 736 + def _reduce_186( val, _values, result ) result = ast AST::Variable, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 724 - def _reduce_186( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 744 + def _reduce_187( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else result = ast AST::ASTArray, :children => [val[1]] end result end .,., -module_eval <<'.,.,', 'grammar.ra', 731 - def _reduce_187( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 751 + def _reduce_188( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else result = ast AST::ASTArray, :children => [val[1]] end result end .,., -module_eval <<'.,.,', 'grammar.ra', 733 - def _reduce_188( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 753 + def _reduce_189( val, _values, result ) result = ast AST::ASTArray result end .,., - # reduce 189 omitted - # reduce 190 omitted # reduce 191 omitted -module_eval <<'.,.,', 'grammar.ra', 738 - def _reduce_192( val, _values, result ) + # reduce 192 omitted + +module_eval <<'.,.,', 'grammar.ra', 758 + def _reduce_193( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet