diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index 5e25b9d6c..af0ab182b 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -1,876 +1,873 @@ # vim: syntax=ruby # the parser class Puppet::Parser::Parser token STRING DQPRE DQMID DQPOST token LBRACK 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 token MATCH NOMATCH REGEX IN_EDGE OUT_EDGE IN_EDGE_SUB OUT_EDGE_SUB token IN prechigh right NOT nonassoc UMINUS left IN MATCH NOMATCH 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_begin | import | fstatement | definition | hostclass | nodedef | resourceoverride | append | relationship relationship: relationship_side edge relationship_side { result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) } | relationship edge relationship_side { result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) } relationship_side: resource | resourceref | collection edge: IN_EDGE | OUT_EDGE | IN_EDGE_SUB | OUT_EDGE_SUB fstatement: NAME LPAREN funcvalues RPAREN { args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => args, :ftype => :statement } | NAME LPAREN funcvalues COMMA RPAREN { args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => args, :ftype => :statement } | NAME LPAREN RPAREN { result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), :ftype => :statement } | NAME funcvalues { args = aryfy(val[1]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :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 - | MINUS namestring =UMINUS { - result = ast AST::Minus, :value => val[1] - } | variable | type | boolean | funcrvalue | selector | quotedtext | hasharrayaccesses | CLASSNAME { result = ast AST::Name, :value => val[0][:value] } resource: classname LBRACE resourceinstances endsemi RBRACE { @lexer.commentpop array = val[2] array = [array] if array.instance_of?(AST::ResourceInstance) result = ast AST::ASTArray # this iterates across each specified resourceinstance array.each { |instance| raise Puppet::Dev, "Got something that isn't an instance" unless instance.instance_of?(AST::ResourceInstance) # now, i need to somehow differentiate between those things with # arrays in their names, and normal things result.push ast( AST::Resource, :type => val[0], :title => instance[0], :parameters => instance[1]) } } | 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 @lexer.commentpop result = ast(AST::ResourceDefaults, :type => val[0], :parameters => 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], :parameters => 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 error "Defaults are not virtualizable" if val[1].is_a? AST::ResourceDefaults 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 LBRACE anyparams endcomma RBRACE { @lexer.commentpop Puppet.warning addcontext("Collection names must now be capitalized") if val[0] =~ /^[a-z]/ 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 { result=val[0][:value] } | OR { result=val[0][:value] } collexpr: colllval ISEQUAL simplervalue { result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] #result = ast AST::CollExpr #result.push *val } | colllval NOTEQUAL simplervalue { result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :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][:value], :line => val[0][:line] } type: CLASSREF { result = ast AST::Type, :value => val[0][:value], :line => val[0][:line] } resourcename: quotedtext | name | type | selector | variable | array | hasharrayaccesses assignment: VARIABLE EQUALS expression { raise Puppet::ParseError, "Cannot assign to variables in other namespaces" if val[0][:value] =~ /::/ # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :line => val[0][:line] } | hasharrayaccess EQUALS expression { result = ast AST::VarDef, :name => val[0], :value => val[2] } append: VARIABLE APPENDS expression { variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :append => true, :line => val[0][:line] } 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], :line => val[0][:line], :value => val[2] } addparam: NAME PARROW rvalue { result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :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 | hash | hasharrayaccesses | 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][:value], :line => val[0][:line], :arguments => args, :ftype => :rvalue } | NAME LPAREN RPAREN { result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), :ftype => :rvalue } quotedtext: STRING { result = ast AST::String, :value => val[0][:value], :line => val[0][:line] } | DQPRE dqrval { result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line] } dqrval: expression dqtail { result = [val[0]] + val[1] } dqtail: DQPOST { result = [ast(AST::String,val[0])] } | DQMID dqrval { result = [ast(AST::String,val[0])] + val[1] } boolean: BOOLEAN { result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line] } resourceref: NAME LBRACK rvalues RBRACK { Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceReference, :type => val[0][:value], :line => val[0][:line], :title => val[2] } | classref LBRACK rvalues RBRACK { result = ast AST::ResourceReference, :type => val[0], :title => val[2] } ifstatement_begin: IF ifstatement { result = val[1] } ifstatement: expression LBRACE statements RBRACE else { @lexer.commentpop args = { :test => val[0], :statements => val[2] } args[:else] = val[4] if val[4] result = ast AST::IfStatement, args } | expression LBRACE RBRACE else { @lexer.commentpop args = { :test => val[0], :statements => ast(AST::Nop) } args[:else] = val[3] if val[3] result = ast AST::IfStatement, args } else: # nothing | ELSIF ifstatement { result = ast AST::Else, :statements => val[1] } | 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 IN rvalue { result = ast AST::InOperator, :lval => val[0], :rval => val[2] } | expression MATCH regex { result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression NOMATCH regex { result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression PLUS expression { result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression MINUS expression { result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression DIV expression { result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression TIMES expression { result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression LSHIFT expression { result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression RSHIFT expression { result = ast AST::ArithmeticOperator, :operator => val[1][:value], :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][:value], :lval => val[0], :rval => val[2] } | expression ISEQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression GREATERTHAN expression { result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression GREATEREQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression LESSTHAN expression { result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | expression LESSEQUAL expression { result = ast AST::ComparisonOperator, :operator => val[1][:value], :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][:value], :lval => val[0], :rval => val[2] } | expression OR expression { result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] } | LPAREN expression RPAREN { result = val[1] } casestatement: CASE rvalue LBRACE caseopts RBRACE { @lexer.commentpop options = val[3] options = ast AST::ASTArray, :children => [val[3]] unless options.instance_of?(AST::ASTArray) result = ast AST::CaseStatement, :test => val[1], :options => options } 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 | hasharrayaccess | DEFAULT { result = ast AST::Default, :value => val[0][:value], :line => val[0][:line] } | regex # These are only used for importing, and we don't interpolate there. string: STRING { result = [val[0][:value]] } strings: string | strings COMMA string { result = val[0] += val[2] } import: IMPORT strings { 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], :line => val[0][:line] @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], :line => val[0][:line] @lexer.indefine = false result = nil } #hostclass: CLASS NAME argumentlist parent LBRACE statements RBRACE { hostclass: CLASS classname argumentlist classparent LBRACE statements RBRACE { @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :arguments => val[2], :parent => val[3], :code => val[5], :line => val[0][:line] result = nil } | CLASS classname argumentlist classparent LBRACE RBRACE { @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :arguments => val[2], :parent => val[3], :line => val[0][:line] result = nil } nodedef: NODE hostnames nodeparent LBRACE statements RBRACE { @lexer.commentpop newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line] result = nil } | NODE hostnames nodeparent LBRACE RBRACE { @lexer.commentpop newnode val[1], :parent => val[2], :line => val[0][:line] result = nil } classref: CLASSREF { result = val[0][:value] } classname: NAME { result = val[0][:value] } | CLASSNAME { result = val[0][:value] } | CLASS { result = "class" } # Multiple hostnames, as used for node names. These are all literal # strings, not AST objects. hostnames: nodename | hostnames COMMA nodename { result = val[0] result = [result] unless result.is_a?(Array) result << val[2] } nodename: hostname { result = ast AST::HostName, :value => val[0] } hostname: NAME { result = val[0][:value] } | STRING { result = val[0][:value] } | DEFAULT { result = val[0][:value] } | regex 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][:value], val[2]] } | NAME { Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value]] } | VARIABLE EQUALS rvalue { result = [val[0][:value], val[2]] } | VARIABLE { result = [val[0][:value]] } 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][:value], :line => val[0][:line] } array: LBRACK rvalues RBRACK { if val[1].instance_of?(AST::ASTArray) result = val[1] else result = ast AST::ASTArray, :children => [val[1]] end } | LBRACK rvalues COMMA RBRACK { if val[1].instance_of?(AST::ASTArray) result = val[1] else result = ast AST::ASTArray, :children => [val[1]] end } | LBRACK RBRACK { result = ast AST::ASTArray } comma: FARROW | COMMA endcomma: # nothing | COMMA { result = nil } regex: REGEX { result = ast AST::Regex, :value => val[0][:value] } hash: LBRACE hashpairs RBRACE { if val[1].instance_of?(AST::ASTHash) result = val[1] else result = ast AST::ASTHash, { :value => val[1] } end } | LBRACE hashpairs COMMA RBRACE { if val[1].instance_of?(AST::ASTHash) result = val[1] else result = ast AST::ASTHash, { :value => val[1] } end } | LBRACE RBRACE { result = ast AST::ASTHash } hashpairs: hashpair | hashpairs COMMA hashpair { if val[0].instance_of?(AST::ASTHash) result = val[0].merge(val[2]) else result = ast AST::ASTHash, :value => val[0] result.merge(val[2]) end } hashpair: key FARROW rvalue { result = ast AST::ASTHash, { :value => { val[0] => val[2] } } } key: NAME { result = val[0][:value] } | quotedtext { result = val[0] } hasharrayaccess: VARIABLE LBRACK rvalue RBRACK { result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2] } hasharrayaccesses: hasharrayaccess | hasharrayaccesses LBRACK rvalue RBRACK { result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2] } end ---- header ---- require 'puppet' require 'puppet/util/loadedfile' require 'puppet/parser/lexer' require 'puppet/parser/ast' module Puppet class ParseError < Puppet::Error; end class ImportError < Racc::ParseError; end class AlreadyImportedError < ImportError; end end ---- 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: diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb old mode 100755 new mode 100644 index ff05996ec..c2fbf976d --- a/lib/puppet/parser/parser.rb +++ b/lib/puppet/parser/parser.rb @@ -1,2703 +1,2688 @@ # # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.6 # from Racc grammer file "". # require 'racc/parser.rb' require 'puppet' require 'puppet/util/loadedfile' require 'puppet/parser/lexer' require 'puppet/parser/ast' module Puppet class ParseError < Puppet::Error; end class ImportError < Racc::ParseError; end class AlreadyImportedError < ImportError; end end module Puppet module Parser class Parser < Racc::Parser -module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 869) +module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 866) # 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/module_eval... ##### State transition tables begin ### racc_action_table = [ - 259, 260, 231, 63, 329, 64, 157, 54, 83, 248, - 321, 358, -168, 208, 213, 231, 37, 247, 65, 359, - 38, 63, 204, 206, 209, 212, 187, 11, 187, 244, - 245, 159, 54, 254, 73, 76, 73, 76, 103, -170, - 107, 118, 62, 197, 233, 58, 207, 211, 60, -167, - 216, 199, 200, 201, 203, 205, 98, 210, 214, 73, - 76, 244, 245, 103, 202, 107, 164, 72, 59, 308, - 58, 84, 87, 60, 196, 93, 54, 163, 73, 76, - 79, 101, 170, 164, 90, 73, 76, 95, 309, 103, - 164, 107, 72, 59, 163, 59, 84, 87, 310, 170, - 93, 163, -172, 73, 76, 79, 170, 98, 257, 90, - 355, 72, 311, 354, 58, 84, 178, 60, 72, 93, - 59, 258, 84, 87, 138, 312, 93, 355, 90, 184, - 354, 79, 101, 249, 370, 90, 72, 59, 95, 59, - 84, 178, 347, 313, 93, 185, 59, 164, 37, 138, - 73, 76, 38, 90, 103, 174, 107, 316, 163, 11, - 14, 73, 76, 170, 59, -187, 174, 37, 351, 73, - 76, 128, 98, 103, 184, 107, 73, 76, 11, 14, - 103, 37, 107, 72, 221, 128, 153, 84, 87, 223, - 59, 93, 11, 14, 73, 76, 79, 101, 98, 196, - 90, 37, 72, 95, 322, 38, 84, 87, 325, 72, - 93, 59, 11, 84, 87, 79, 273, 93, -171, 90, - 249, 250, 79, 101, 73, 76, 90, 72, 83, 95, - 59, 84, 87, 281, 37, 93, 280, 59, 38, 77, - 79, 48, 73, 76, 90, 11, 75, 69, 272, 221, - 46, 47, 210, 214, 223, 59, 48, 72, 59, 202, - -169, 84, 87, 179, -169, 93, -174, 73, 76, 77, - 79, 103, 339, 107, 90, 72, 234, 69, 341, 84, - 178, 176, 243, 93, 179, 59, 244, 245, 138, 98, - 200, 201, 90, 73, 76, 210, 214, 103, 344, 107, - 72, 174, 202, 59, 84, 87, 200, 201, 93, -167, - 348, 210, 214, 79, 101, 73, 76, 90, 202, 103, - 95, 107, 73, 76, -170, -168, 72, -173, 59, -172, - 84, 87, -171, 217, 93, 64, 73, 76, 279, 79, - 103, 218, 107, 90, 156, 274, 278, 123, 72, 153, - 249, 277, 84, 87, 59, 72, 93, 73, 76, 84, - 87, 79, 220, 93, 357, 90, 252, 77, 79, 72, - 249, 250, 90, 84, 87, 69, 59, 93, 210, 214, - 123, 83, 79, 59, 226, 202, 90, 73, 76, 187, - 72, 103, 192, 107, 84, 178, 153, 59, 93, 44, - 45, 41, 42, 138, 231, 73, 76, 90, 229, 103, - 118, 107, -23, -23, -23, -23, -169, 240, 59, 179, - 72, 229, 237, 52, 84, 87, -169, 98, 93, 44, - 45, 41, 42, 79, -167, 73, 76, 90, 72, 103, - -170, 107, 84, 87, -168, -172, 93, 368, 59, 234, - 228, 79, 101, 232, 50, 90, 375, 98, 95, 49, - 377, 73, 76, -168, -222, 103, 59, 107, 72, -170, - 380, 40, 84, 87, 39, 229, 93, -21, -21, -21, - -21, 79, 101, 98, -167, 90, nil, nil, 95, nil, - nil, 73, 76, nil, 72, 103, 59, 107, 84, 87, - nil, nil, 93, nil, nil, nil, nil, 79, 101, nil, - nil, 90, nil, 98, 95, nil, nil, 73, 76, nil, - nil, 103, 59, 107, 72, nil, nil, nil, 84, 87, - nil, nil, 93, nil, nil, 73, 76, 79, 101, 98, - nil, 90, 73, 76, 95, nil, 103, nil, 107, nil, - 72, nil, 59, nil, 84, 87, 73, 76, 93, nil, - 103, nil, nil, 79, 101, nil, nil, 90, 72, nil, - 95, nil, 84, 178, nil, 72, 93, nil, 59, 84, - 87, 138, nil, 93, nil, 90, nil, nil, 79, 72, - nil, nil, 90, 84, 144, nil, 59, 93, nil, nil, - nil, nil, 138, 59, 73, 76, 90, nil, 103, nil, - 107, 216, 199, 200, 201, nil, nil, 59, 210, 214, - nil, 216, 199, 200, 201, 202, 98, nil, 210, 214, - 73, 76, nil, nil, 103, 202, 107, 72, nil, nil, - nil, 84, 87, nil, nil, 93, nil, nil, nil, nil, - 79, 101, 98, nil, 90, nil, nil, 95, nil, nil, - 73, 76, nil, 72, 103, 59, 107, 84, 87, nil, - nil, 93, nil, nil, nil, nil, 79, 101, nil, nil, - 90, nil, 98, 95, nil, nil, 73, 76, nil, nil, - 103, 59, 107, 72, nil, nil, nil, 84, 87, nil, - nil, 93, nil, nil, nil, nil, 79, 101, 73, 76, - 90, nil, 103, 95, 107, nil, nil, nil, nil, 72, - nil, 59, nil, 84, 87, nil, nil, 93, nil, 73, - 76, nil, 79, 103, nil, 107, 90, nil, nil, nil, - nil, 72, nil, nil, nil, 84, 87, 59, nil, 93, - nil, 98, nil, nil, 79, 73, 76, nil, 90, nil, - nil, nil, 72, nil, nil, nil, 84, 87, nil, 59, - 93, nil, nil, 73, 76, 79, 101, nil, 342, 90, - 73, 76, 95, nil, 103, nil, 107, nil, 72, nil, - 59, nil, 84, 87, 73, 76, 93, nil, nil, nil, - 77, 79, nil, nil, nil, 90, 72, nil, 69, nil, - 84, 178, nil, 72, 93, nil, 59, 84, 87, 138, - nil, 93, nil, 90, 73, 76, 79, 72, nil, nil, - 90, 84, 178, nil, 59, 93, nil, nil, nil, 77, - 138, 59, 73, 76, 90, nil, 103, 69, 107, nil, - nil, nil, nil, nil, nil, 59, nil, 72, nil, nil, - nil, 84, 178, nil, 98, 93, nil, 73, 76, nil, - 138, nil, nil, nil, 90, 72, nil, nil, nil, 84, - 87, nil, nil, 93, nil, 59, nil, nil, 79, 101, - 180, nil, 90, 73, 76, 95, nil, 103, nil, 107, - 72, nil, nil, 59, 84, 87, nil, nil, 93, nil, - nil, nil, 77, 79, nil, 98, nil, 90, 73, 76, - 69, nil, 103, nil, 107, nil, 72, nil, 59, nil, - 84, 87, 73, 76, 93, nil, 103, nil, 107, 79, - 101, nil, nil, 90, nil, nil, 95, nil, 73, 76, - nil, 72, 103, nil, 59, 84, 87, nil, nil, 93, - nil, nil, nil, nil, 79, 72, nil, nil, 90, 84, - 87, nil, nil, 93, nil, 73, 76, nil, 79, 59, - nil, 72, 90, nil, nil, 84, 178, nil, nil, 93, - nil, 73, 76, 59, 138, 103, nil, 107, 90, nil, - nil, 73, 76, nil, nil, 103, nil, 107, 72, 59, - nil, nil, 84, 178, nil, nil, 93, nil, nil, nil, - nil, 138, nil, 98, 72, 90, nil, nil, 84, 87, - nil, nil, 93, nil, 72, nil, 59, 79, 84, 87, - nil, 90, 93, nil, nil, nil, nil, 79, 101, 73, - 76, 90, 59, 103, 95, 107, 216, 199, 200, 201, - 203, 205, 59, 210, 214, nil, nil, nil, nil, nil, - 202, 98, nil, nil, nil, 73, 76, nil, nil, 103, - nil, 107, 72, nil, nil, nil, 84, 87, nil, nil, - 93, nil, nil, nil, nil, 79, 101, 98, nil, 90, - nil, nil, 95, nil, nil, 73, 76, nil, 72, 103, - 59, 107, 84, 87, nil, nil, 93, nil, nil, nil, - nil, 79, 101, nil, nil, 90, nil, 98, 95, nil, - nil, 73, 76, nil, nil, 103, 59, 107, 72, nil, - nil, nil, 84, 87, nil, nil, 93, nil, nil, nil, - nil, 79, 101, 98, nil, 90, nil, nil, 95, nil, - nil, 73, 76, nil, 72, 103, 59, 107, 84, 87, - nil, nil, 93, nil, nil, nil, nil, 79, 101, nil, - nil, 90, nil, 98, 95, nil, nil, 73, 76, nil, - nil, 103, 59, 107, 72, nil, nil, nil, 84, 87, - nil, nil, 93, nil, nil, nil, nil, 79, 101, 98, - nil, 90, nil, nil, 95, nil, nil, 73, 76, nil, - 72, 103, 59, 107, 84, 87, nil, nil, 93, nil, - nil, nil, nil, 79, 101, nil, nil, 90, nil, 98, - 95, nil, nil, 73, 76, nil, nil, 103, 59, 107, - 72, nil, nil, nil, 84, 87, nil, nil, 93, nil, - nil, nil, nil, 79, 101, nil, nil, 90, nil, nil, - 95, nil, nil, nil, nil, nil, 72, 215, 59, nil, - 84, 87, nil, nil, 93, nil, 208, 213, nil, 79, - nil, nil, nil, 90, nil, 204, 206, 209, 212, nil, - nil, 208, 213, nil, 59, nil, nil, nil, nil, 276, - 204, 206, 209, 212, nil, nil, nil, nil, nil, 207, - 211, nil, nil, 216, 199, 200, 201, 203, 205, nil, - 210, 214, nil, nil, 207, 211, nil, 202, 216, 199, - 200, 201, 203, 205, nil, 210, 214, 208, 213, nil, - nil, nil, 202, nil, nil, nil, 204, 206, 209, 212, - nil, nil, 208, 213, nil, nil, nil, nil, nil, nil, - nil, 204, 206, 209, 212, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 216, 199, 200, 201, 203, 205, - nil, 210, 214, nil, nil, nil, 211, nil, 202, 216, - 199, 200, 201, 203, 205, nil, 210, 214, 208, 213, - nil, nil, nil, 202, nil, nil, nil, 204, 206, 209, - 212, nil, nil, 208, 213, nil, nil, nil, nil, nil, - nil, nil, 204, 206, 209, 212, nil, nil, nil, nil, - nil, 207, 211, nil, nil, 216, 199, 200, 201, 203, - 205, nil, 210, 214, nil, nil, 207, 211, nil, 202, - 216, 199, 200, 201, 203, 205, nil, 210, 214, 208, - 213, nil, nil, nil, 202, nil, nil, nil, 204, 206, - 209, 212, nil, nil, nil, 213, nil, 216, 199, 200, - 201, 203, 205, 204, 210, 214, nil, nil, nil, nil, - nil, 202, 207, 211, 213, nil, 216, 199, 200, 201, - 203, 205, 204, 210, 214, nil, nil, nil, nil, 213, - 202, 216, 199, 200, 201, 203, 205, 204, 210, 214, - nil, nil, nil, nil, nil, 202, nil, nil, 213, nil, - 216, 199, 200, 201, 203, 205, 204, 210, 214, nil, - nil, nil, nil, nil, 202, 216, 199, 200, 201, 203, - 205, nil, 210, 214, nil, nil, 352, nil, nil, 202, - nil, nil, nil, nil, 216, 199, 200, 201, 203, 205, - nil, 210, 214, nil, nil, 360, nil, 26, 202, 33, - 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, - nil, 3, nil, nil, 11, 14, 26, 299, 33, 1, - nil, 7, 12, nil, 17, nil, 23, nil, 29, nil, - 3, nil, nil, 11, 14, nil, 366, nil, 26, nil, - 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, - 29, nil, 3, nil, nil, 11, 14, 26, 367, 33, - 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, - nil, 3, nil, nil, 11, 14, nil, 378, nil, 26, - nil, 33, 1, nil, 7, 12, nil, 17, nil, 23, - nil, 29, nil, 3, nil, nil, 11, 14, 26, 382, - 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, - 29, nil, 3, nil, nil, 11, 14, nil, 307, nil, - 26, nil, 33, 1, nil, 7, 12, nil, 17, nil, + 256, 257, 228, 63, 327, 64, 156, 54, 82, 356, + -166, 245, 176, 205, 210, 254, 37, 357, 65, 244, + 38, -168, 201, 203, 206, 209, 184, 11, 255, 241, + 242, 158, 54, 251, 72, 75, 72, 75, 102, 117, + 106, -170, 62, 194, 230, 58, 204, 208, 60, 306, + 213, 196, 197, 198, 200, 202, 97, 207, 211, 72, + 75, 241, 242, 102, 199, 106, 163, 71, 59, 307, + 58, 83, 86, 60, 193, 92, 54, 162, 72, 75, + 78, 100, 169, 163, 89, 72, 75, 94, 308, 102, + 163, 106, 71, 59, 162, 59, 83, 86, 59, 169, + 92, 162, 311, 72, 75, 78, 169, 97, 181, 89, + 353, 71, 228, 352, 58, 83, 269, 60, 71, 92, + 59, 345, 83, 86, 137, 184, 92, -171, 89, 72, + 75, 78, 100, 246, 368, 89, 71, 59, 94, 59, + 83, 86, 309, 173, 92, 314, 59, 163, 76, 78, + 72, 75, -167, 89, 102, 310, 106, 37, 162, 173, + 218, 127, 71, 169, 59, 220, 83, 269, 11, 14, + 92, 63, 97, 152, 37, 137, 72, 75, 127, 89, + 102, 319, 106, 71, 218, 11, 14, 83, 86, 220, + 59, 92, 72, 75, 72, 75, 78, 100, 270, 279, + 89, 349, 278, 94, 353, 207, 211, 352, 320, 71, + -169, 59, 199, 83, 86, 197, 198, 92, 72, 75, + 207, 211, 78, -169, 37, 71, 89, 199, 38, 83, + 269, -167, 193, 92, -166, 11, 14, 59, 137, 72, + 75, 272, 89, 102, 182, 106, 37, 207, 211, -186, + 38, 71, 181, 59, 199, 83, 86, 11, 337, 92, + 231, 97, 339, 76, 78, 72, 75, 37, 89, 82, + 48, 38, 71, 48, 323, 176, 83, 86, 11, 59, + 92, 342, 46, 47, 184, 78, 100, 74, -168, 89, + 72, 75, 94, -172, 102, 346, 106, -173, 71, 175, + 59, 59, 83, 86, 240, -171, 92, -170, 241, 242, + 76, 78, 97, 197, 198, 89, 72, 75, 207, 211, + 102, 214, 106, 71, 64, 199, 59, 83, 86, 276, + 215, 92, 217, 246, 275, 173, 78, 100, 97, 82, + 89, 72, 75, 94, 155, 102, 122, 106, 152, 71, + 223, 59, -168, 83, 86, 249, 277, 92, 176, 246, + 247, 122, 78, 100, 225, -166, 89, 72, 75, 94, + 117, 102, 226, 106, 71, -169, 271, 59, 83, 86, + 246, 247, 92, -21, -21, -21, -21, 78, 226, 97, + -167, 89, 72, 75, 52, -168, 102, -166, 106, -169, + 71, -167, 59, -171, 83, 86, 366, 152, 92, -23, + -23, -23, -23, 78, 100, 228, 226, 89, 72, 75, + 94, 50, 102, 373, 106, 71, 49, 375, 59, 83, + 86, 229, -221, 92, 237, 378, 72, 75, 78, 40, + 97, 39, 89, 355, 44, 45, 41, 42, 231, 234, + nil, 71, nil, 59, nil, 83, 86, nil, nil, 92, + 44, 45, 41, 42, 78, 100, 72, 75, 89, 71, + 102, 94, 106, 83, 269, nil, nil, 92, nil, 59, + nil, nil, 137, nil, nil, nil, 89, nil, 97, nil, + nil, nil, 72, 75, nil, nil, 102, 59, 106, 71, + nil, nil, nil, 83, 86, nil, nil, 92, nil, nil, + nil, nil, 78, 100, 97, nil, 89, nil, nil, 94, + nil, nil, 72, 75, nil, 71, 102, 59, 106, 83, + 86, nil, nil, 92, nil, nil, nil, nil, 78, 100, + nil, nil, 89, nil, 97, 94, nil, nil, 72, 75, + nil, nil, 102, 59, 106, 71, nil, nil, nil, 83, + 86, nil, nil, 92, nil, nil, 72, 75, 78, 100, + 97, nil, 89, 72, 75, 94, nil, 102, nil, 106, + nil, 71, nil, 59, nil, 83, 86, 72, 75, 92, + nil, 102, nil, nil, 78, 100, nil, nil, 89, 71, + nil, 94, nil, 83, 269, nil, 71, 92, nil, 59, + 83, 86, 137, nil, 92, nil, 89, nil, nil, 78, + 71, nil, nil, 89, 83, 143, nil, 59, 92, nil, + nil, nil, nil, 137, 59, 72, 75, 89, nil, 102, + nil, 106, 213, 196, 197, 198, 200, 202, 59, 207, + 211, nil, 213, 196, 197, 198, 199, 97, nil, 207, + 211, 72, 75, nil, nil, 102, 199, 106, 71, nil, + nil, nil, 83, 86, nil, nil, 92, nil, nil, nil, + nil, 78, 100, 97, nil, 89, nil, nil, 94, nil, + nil, 72, 75, nil, 71, 102, 59, 106, 83, 86, + nil, nil, 92, nil, nil, nil, nil, 78, 100, nil, + nil, 89, nil, 97, 94, nil, nil, nil, nil, nil, + nil, nil, 59, nil, 71, nil, nil, nil, 83, 86, + 72, 75, 92, nil, 102, 189, 106, 78, 100, nil, + nil, 89, nil, nil, 94, nil, nil, nil, nil, 72, + 75, nil, 59, 102, nil, 106, 72, 75, nil, nil, + 102, nil, 106, 71, nil, nil, nil, 83, 86, nil, + nil, 92, nil, nil, nil, nil, 78, nil, 97, nil, + 89, nil, 71, nil, nil, nil, 83, 86, nil, 71, + 92, 59, nil, 83, 86, 78, nil, 92, nil, 89, + nil, nil, 78, 100, nil, nil, 89, 72, 75, 94, + 59, 102, nil, 106, nil, nil, nil, 59, nil, nil, + nil, nil, nil, nil, nil, nil, 72, 75, nil, 97, + 102, nil, 106, 72, 75, nil, nil, 102, nil, 106, + 71, nil, nil, nil, 83, 86, nil, nil, 92, nil, + nil, nil, nil, 78, 100, 97, nil, 89, nil, 71, + 94, nil, nil, 83, 86, nil, 71, 92, 59, nil, + 83, 86, 78, nil, 92, nil, 89, nil, nil, 78, + 100, nil, nil, 89, 72, 75, 94, 59, 102, nil, + 106, nil, nil, nil, 59, nil, nil, nil, nil, nil, + nil, nil, nil, 72, 75, nil, 97, nil, nil, 72, + 75, nil, nil, nil, nil, nil, nil, 71, nil, nil, + nil, 83, 86, nil, nil, 92, 340, nil, nil, nil, + 78, 100, 177, nil, 89, nil, 71, 94, nil, nil, + 83, 86, 71, nil, 92, 59, 83, 86, 76, 78, + 92, nil, nil, 89, 76, 78, 72, 75, nil, 89, + 102, nil, 106, nil, 59, nil, 213, 196, 197, 198, + 59, nil, nil, 207, 211, 72, 75, nil, 97, 102, + 199, 106, 72, 75, nil, nil, nil, nil, nil, 71, + nil, nil, nil, 83, 86, nil, nil, 92, nil, nil, + 72, 75, 78, 100, nil, nil, 89, nil, 71, 94, + nil, nil, 83, 86, nil, 71, 92, 59, nil, 83, + 269, 78, nil, 92, nil, 89, nil, nil, 137, nil, + nil, nil, 89, 71, nil, nil, 59, 83, 269, nil, + nil, 92, nil, 59, nil, nil, 137, 72, 75, nil, + 89, 102, nil, 106, nil, nil, nil, nil, nil, nil, + nil, 59, nil, nil, nil, nil, 72, 75, nil, 97, + 102, nil, 106, 72, 75, nil, nil, 102, nil, 106, + 71, nil, nil, nil, 83, 86, nil, nil, 92, nil, + nil, nil, nil, 78, 100, 72, 75, 89, nil, 71, + 94, nil, nil, 83, 86, nil, 71, 92, 59, nil, + 83, 86, 78, nil, 92, nil, 89, nil, nil, 78, + 72, 75, nil, 89, 102, nil, 106, 59, 71, nil, + nil, nil, 83, 269, 59, nil, 92, nil, 72, 75, + nil, 137, 102, nil, 106, 89, nil, nil, nil, nil, + nil, nil, nil, 71, nil, nil, 59, 83, 86, nil, + 97, 92, nil, 72, 75, nil, 78, 102, nil, 106, + 89, 71, nil, 72, 75, 83, 86, 102, nil, 92, + nil, 59, nil, nil, 78, 100, nil, nil, 89, nil, + nil, 94, nil, nil, nil, nil, 71, nil, nil, 59, + 83, 86, nil, nil, 92, nil, 71, nil, nil, 78, + 83, 269, nil, 89, 92, nil, 72, 75, nil, 137, + 102, nil, 106, 89, 59, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 59, 72, 75, nil, 97, 102, + nil, 106, 72, 75, nil, nil, 102, nil, 106, 71, + nil, nil, nil, 83, 86, nil, nil, 92, nil, nil, + nil, nil, 78, 100, 97, nil, 89, nil, 71, 94, + nil, nil, 83, 86, nil, 71, 92, 59, nil, 83, + 86, 78, nil, 92, nil, 89, nil, nil, 78, 100, + 212, nil, 89, nil, nil, 94, 59, nil, nil, 205, + 210, nil, nil, 59, nil, nil, nil, nil, 201, 203, + 206, 209, nil, nil, 205, 210, nil, nil, nil, nil, + nil, nil, 274, 201, 203, 206, 209, nil, nil, nil, + nil, nil, 204, 208, nil, nil, 213, 196, 197, 198, + 200, 202, nil, 207, 211, nil, nil, 204, 208, nil, + 199, 213, 196, 197, 198, 200, 202, nil, 207, 211, + 205, 210, nil, nil, nil, 199, nil, nil, nil, 201, + 203, 206, 209, nil, nil, 205, 210, nil, nil, nil, + nil, nil, nil, nil, 201, 203, 206, 209, nil, nil, + nil, nil, nil, nil, 208, nil, nil, 213, 196, 197, + 198, 200, 202, nil, 207, 211, nil, nil, 204, 208, + nil, 199, 213, 196, 197, 198, 200, 202, nil, 207, + 211, 205, 210, nil, nil, nil, 199, nil, nil, nil, + 201, 203, 206, 209, nil, nil, 205, 210, nil, nil, + nil, nil, nil, nil, nil, 201, 203, 206, 209, nil, + nil, nil, nil, nil, 204, 208, nil, nil, 213, 196, + 197, 198, 200, 202, nil, 207, 211, nil, nil, nil, + nil, nil, 199, 213, 196, 197, 198, 200, 202, nil, + 207, 211, 205, 210, nil, nil, nil, 199, nil, nil, + nil, 201, 203, 206, 209, nil, nil, nil, 210, nil, + 213, 196, 197, 198, 200, 202, 201, 207, 211, nil, + nil, nil, nil, nil, 199, 204, 208, 210, nil, 213, + 196, 197, 198, 200, 202, 201, 207, 211, nil, nil, + nil, nil, 210, 199, 213, 196, 197, 198, 200, 202, + 201, 207, 211, nil, nil, nil, nil, nil, 199, nil, + nil, 210, nil, 213, 196, 197, 198, 200, 202, 201, + 207, 211, nil, nil, nil, nil, nil, 199, 213, 196, + 197, 198, 200, 202, nil, 207, 211, nil, nil, 384, + nil, nil, 199, nil, nil, nil, nil, 213, 196, 197, + 198, 200, 202, nil, 207, 211, nil, nil, 297, nil, + 26, 199, 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, 14, 26, - 384, 33, 1, nil, 7, 12, nil, 17, nil, 23, - nil, 29, nil, 3, nil, nil, 11, 14, nil, 385, + 305, 33, 1, nil, 7, 12, nil, 17, nil, 23, + nil, 29, nil, 3, nil, nil, 11, 14, nil, 383, nil, 26, nil, 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, 14, - 26, 327, 33, 1, nil, 7, 12, nil, 17, nil, + 26, 325, 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, 14, nil, - 386, nil, 26, nil, 33, 1, nil, 7, 12, nil, + 382, nil, 26, nil, 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, - 14, 26, nil, 33, 1, nil, 7, 12, nil, 17, + 14, 26, 380, 33, 1, nil, 7, 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, 14, - 26, nil, 33, 1, nil, 7, 12, nil, 17, nil, - 23, nil, 29, nil, 3, nil, nil, 11, 14, 26, - nil, 33, 1, nil, 7, 12, nil, 17, nil, 23, - nil, 29, nil, 3, nil, nil, 11, 14 ] + nil, 376, nil, 26, nil, 33, 1, nil, 7, 12, + nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, + 11, 14, 26, 350, 33, 1, nil, 7, 12, nil, + 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, + 14, nil, 358, nil, 26, nil, 33, 1, nil, 7, + 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, + nil, 11, 14, 26, 365, 33, 1, nil, 7, 12, + nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, + 11, 14, nil, 364, nil, 26, nil, 33, 1, nil, + 7, 12, nil, 17, nil, 23, nil, 29, nil, 3, + nil, nil, 11, 14, 26, nil, 33, 1, nil, 7, + 12, nil, 17, nil, 23, nil, 29, nil, 3, nil, + nil, 11, 14, 26, nil, 33, 1, nil, 7, 12, + nil, 17, nil, 23, nil, 29, nil, 3, nil, nil, + 11, 14, 26, nil, 33, 1, nil, 7, 12, nil, + 17, nil, 23, nil, 29, nil, 3, nil, nil, 11, + 14 ] racc_action_check = [ - 183, 183, 153, 22, 246, 22, 55, 157, 87, 166, - 235, 303, 88, 183, 183, 144, 12, 166, 22, 303, - 12, 86, 183, 183, 183, 183, 87, 12, 144, 246, - 246, 55, 17, 175, 200, 200, 107, 107, 200, 85, - 200, 218, 22, 107, 153, 157, 183, 183, 157, 82, - 183, 183, 183, 183, 183, 183, 200, 183, 183, 179, - 179, 175, 175, 179, 183, 179, 62, 200, 157, 221, - 17, 200, 200, 17, 107, 200, 159, 62, 371, 371, - 200, 200, 62, 164, 200, 205, 205, 200, 222, 205, - 242, 205, 179, 17, 164, 200, 179, 179, 223, 164, - 179, 242, 91, 358, 358, 179, 242, 205, 181, 179, - 299, 371, 224, 299, 159, 371, 371, 159, 205, 371, - 179, 181, 205, 205, 371, 224, 205, 352, 371, 275, - 352, 205, 205, 346, 346, 205, 358, 159, 205, 371, - 358, 358, 275, 227, 358, 81, 205, 65, 30, 358, - 354, 354, 30, 358, 354, 229, 354, 230, 65, 30, - 30, 280, 280, 65, 358, 79, 232, 43, 280, 344, - 344, 43, 354, 344, 78, 344, 206, 206, 43, 43, - 206, 121, 206, 354, 123, 121, 234, 354, 354, 123, - 214, 354, 121, 121, 184, 184, 354, 354, 206, 280, - 354, 237, 344, 354, 236, 237, 344, 344, 237, 206, - 344, 354, 237, 206, 206, 344, 186, 206, 92, 344, - 186, 186, 206, 206, 23, 23, 206, 184, 23, 206, - 344, 184, 184, 198, 1, 184, 198, 206, 1, 184, - 184, 7, 185, 185, 184, 1, 23, 184, 185, 311, - 7, 7, 284, 284, 311, 184, 72, 23, 210, 284, - 96, 23, 23, 71, 68, 23, 67, 26, 26, 23, - 23, 26, 253, 26, 23, 185, 255, 23, 256, 185, - 185, 66, 161, 185, 97, 23, 161, 161, 185, 26, - 282, 282, 185, 310, 310, 282, 282, 310, 267, 310, - 26, 64, 282, 185, 26, 26, 300, 300, 26, 102, - 277, 300, 300, 26, 26, 29, 29, 26, 300, 29, - 26, 29, 187, 187, 104, 106, 310, 108, 26, 109, - 310, 310, 110, 115, 310, 116, 308, 308, 195, 310, - 308, 120, 308, 310, 52, 187, 191, 51, 29, 50, - 191, 191, 29, 29, 310, 187, 29, 301, 301, 187, - 187, 29, 122, 187, 301, 29, 172, 187, 187, 308, - 172, 172, 187, 308, 308, 187, 29, 308, 283, 283, - 36, 128, 308, 187, 133, 283, 308, 103, 103, 178, - 301, 103, 103, 103, 301, 301, 176, 308, 301, 4, - 4, 4, 4, 301, 174, 199, 199, 301, 173, 199, - 33, 199, 35, 35, 35, 35, 134, 158, 301, 136, - 103, 318, 155, 16, 103, 103, 330, 199, 103, 34, - 34, 34, 34, 103, 331, 39, 39, 103, 199, 39, - 333, 39, 199, 199, 334, 335, 199, 340, 103, 154, - 137, 199, 199, 145, 9, 199, 355, 39, 199, 8, - 359, 207, 207, 143, 370, 207, 199, 207, 39, 141, - 372, 3, 39, 39, 2, 140, 39, 28, 28, 28, - 28, 39, 39, 207, 139, 39, nil, nil, 39, nil, - nil, 46, 46, nil, 207, 46, 39, 46, 207, 207, - nil, nil, 207, nil, nil, nil, nil, 207, 207, nil, - nil, 207, nil, 46, 207, nil, nil, 47, 47, nil, - nil, 47, 207, 47, 46, nil, nil, nil, 46, 46, - nil, nil, 46, nil, nil, 272, 272, 46, 46, 47, - nil, 46, 48, 48, 46, nil, 48, nil, 48, nil, - 47, nil, 46, nil, 47, 47, 49, 49, 47, nil, - 49, nil, nil, 47, 47, nil, nil, 47, 272, nil, - 47, nil, 272, 272, nil, 48, 272, nil, 47, 48, - 48, 272, nil, 48, nil, 272, nil, nil, 48, 49, - nil, nil, 48, 49, 49, nil, 272, 49, nil, nil, - nil, nil, 49, 48, 101, 101, 49, nil, 101, nil, - 101, 286, 286, 286, 286, nil, nil, 49, 286, 286, - nil, 288, 288, 288, 288, 286, 101, nil, 288, 288, - 98, 98, nil, nil, 98, 288, 98, 101, nil, nil, - nil, 101, 101, nil, nil, 101, nil, nil, nil, nil, - 101, 101, 98, nil, 101, nil, nil, 101, nil, nil, - 201, 201, nil, 98, 201, 101, 201, 98, 98, nil, - nil, 98, nil, nil, nil, nil, 98, 98, nil, nil, - 98, nil, 201, 98, nil, nil, 279, 279, nil, nil, - 279, 98, 279, 201, nil, nil, nil, 201, 201, nil, - nil, 201, nil, nil, nil, nil, 201, 201, 63, 63, - 201, nil, 63, 201, 63, nil, nil, nil, nil, 279, - nil, 201, nil, 279, 279, nil, nil, 279, nil, 259, - 259, nil, 279, 259, nil, 259, 279, nil, nil, nil, - nil, 63, nil, nil, nil, 63, 63, 279, nil, 63, - nil, 259, nil, nil, 63, 257, 257, nil, 63, nil, - nil, nil, 259, nil, nil, nil, 259, 259, nil, 63, - 259, nil, nil, 248, 248, 259, 259, nil, 257, 259, - 251, 251, 259, nil, 251, nil, 251, nil, 257, nil, - 259, nil, 257, 257, 69, 69, 257, nil, nil, nil, - 257, 257, nil, nil, nil, 257, 248, nil, 257, nil, - 248, 248, nil, 251, 248, nil, 257, 251, 251, 248, - nil, 251, nil, 248, 247, 247, 251, 69, nil, nil, - 251, 69, 69, nil, 248, 69, nil, nil, nil, 69, - 69, 251, 204, 204, 69, nil, 204, 69, 204, nil, - nil, nil, nil, nil, nil, 69, nil, 247, nil, nil, - nil, 247, 247, nil, 204, 247, nil, 75, 75, nil, - 247, nil, nil, nil, 247, 204, nil, nil, nil, 204, - 204, nil, nil, 204, nil, 247, nil, nil, 204, 204, - 75, nil, 204, 76, 76, 204, nil, 76, nil, 76, - 75, nil, nil, 204, 75, 75, nil, nil, 75, nil, - nil, nil, 75, 75, nil, 76, nil, 75, 233, 233, - 75, nil, 233, nil, 233, nil, 76, nil, 75, nil, - 76, 76, 231, 231, 76, nil, 231, nil, 231, 76, - 76, nil, nil, 76, nil, nil, 76, nil, 228, 228, - nil, 233, 228, nil, 76, 233, 233, nil, nil, 233, - nil, nil, nil, nil, 233, 231, nil, nil, 233, 231, - 231, nil, nil, 231, nil, 217, 217, nil, 231, 233, - nil, 228, 231, nil, nil, 228, 228, nil, nil, 228, - nil, 202, 202, 231, 228, 202, nil, 202, 228, nil, - nil, 208, 208, nil, nil, 208, nil, 208, 217, 228, - nil, nil, 217, 217, nil, nil, 217, nil, nil, nil, - nil, 217, nil, 208, 202, 217, nil, nil, 202, 202, - nil, nil, 202, nil, 208, nil, 217, 202, 208, 208, - nil, 202, 208, nil, nil, nil, nil, 208, 208, 216, - 216, 208, 202, 216, 208, 216, 287, 287, 287, 287, - 287, 287, 208, 287, 287, nil, nil, nil, nil, nil, - 287, 216, nil, nil, nil, 203, 203, nil, nil, 203, - nil, 203, 216, nil, nil, nil, 216, 216, nil, nil, - 216, nil, nil, nil, nil, 216, 216, 203, nil, 216, - nil, nil, 216, nil, nil, 213, 213, nil, 203, 213, - 216, 213, 203, 203, nil, nil, 203, nil, nil, nil, - nil, 203, 203, nil, nil, 203, nil, 213, 203, nil, - nil, 212, 212, nil, nil, 212, 203, 212, 213, nil, - nil, nil, 213, 213, nil, nil, 213, nil, nil, nil, - nil, 213, 213, 212, nil, 213, nil, nil, 213, nil, - nil, 211, 211, nil, 212, 211, 213, 211, 212, 212, - nil, nil, 212, nil, nil, nil, nil, 212, 212, nil, - nil, 212, nil, 211, 212, nil, nil, 95, 95, nil, - nil, 95, 212, 95, 211, nil, nil, nil, 211, 211, - nil, nil, 211, nil, nil, nil, nil, 211, 211, 95, - nil, 211, nil, nil, 211, nil, nil, 209, 209, nil, - 95, 209, 211, 209, 95, 95, nil, nil, 95, nil, - nil, nil, nil, 95, 95, nil, nil, 95, nil, 209, - 95, nil, nil, 83, 83, nil, nil, 83, 95, 83, - 209, nil, nil, nil, 209, 209, nil, nil, 209, nil, - nil, nil, nil, 209, 209, nil, nil, 209, nil, nil, - 209, nil, nil, nil, nil, nil, 83, 112, 209, nil, - 83, 83, nil, nil, 83, nil, 112, 112, nil, 83, - nil, nil, nil, 83, nil, 112, 112, 112, 112, nil, - nil, 189, 189, nil, 83, nil, nil, nil, nil, 189, - 189, 189, 189, 189, nil, nil, nil, nil, nil, 112, - 112, nil, nil, 112, 112, 112, 112, 112, 112, nil, - 112, 112, nil, nil, 189, 189, nil, 112, 189, 189, - 189, 189, 189, 189, nil, 189, 189, 294, 294, nil, - nil, nil, 189, nil, nil, nil, 294, 294, 294, 294, - nil, nil, 290, 290, nil, nil, nil, nil, nil, nil, - nil, 290, 290, 290, 290, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 294, 294, 294, 294, 294, 294, - nil, 294, 294, nil, nil, nil, 290, nil, 294, 290, - 290, 290, 290, 290, 290, nil, 290, 290, 125, 125, - nil, nil, nil, 290, nil, nil, nil, 125, 125, 125, - 125, nil, nil, 131, 131, nil, nil, nil, nil, nil, - nil, nil, 131, 131, 131, 131, nil, nil, nil, nil, - nil, 125, 125, nil, nil, 125, 125, 125, 125, 125, - 125, nil, 125, 125, nil, nil, 131, 131, nil, 125, - 131, 131, 131, 131, 131, 131, nil, 131, 131, 132, - 132, nil, nil, nil, 131, nil, nil, nil, 132, 132, - 132, 132, nil, nil, nil, 289, nil, 296, 296, 296, - 296, 296, 296, 289, 296, 296, nil, nil, nil, nil, - nil, 296, 132, 132, 292, nil, 132, 132, 132, 132, - 132, 132, 292, 132, 132, nil, nil, nil, nil, 291, - 132, 289, 289, 289, 289, 289, 289, 291, 289, 289, - nil, nil, nil, nil, nil, 289, nil, nil, 295, nil, - 292, 292, 292, 292, 292, 292, 295, 292, 292, nil, - nil, nil, nil, nil, 292, 291, 291, 291, 291, 291, - 291, nil, 291, 291, nil, nil, 298, nil, nil, 291, - nil, nil, nil, nil, 295, 295, 295, 295, 295, 295, - nil, 295, 295, nil, nil, 306, nil, 298, 295, 298, - 298, nil, 298, 298, nil, 298, nil, 298, nil, 298, - nil, 298, nil, nil, 298, 298, 306, 215, 306, 306, - nil, 306, 306, nil, 306, nil, 306, nil, 306, nil, - 306, nil, nil, 306, 306, nil, 322, nil, 215, nil, - 215, 215, nil, 215, 215, nil, 215, nil, 215, nil, - 215, nil, 215, nil, nil, 215, 215, 322, 326, 322, - 322, nil, 322, 322, nil, 322, nil, 322, nil, 322, - nil, 322, nil, nil, 322, 322, nil, 365, nil, 326, - nil, 326, 326, nil, 326, 326, nil, 326, nil, 326, - nil, 326, nil, 326, nil, nil, 326, 326, 365, 375, - 365, 365, nil, 365, 365, nil, 365, nil, 365, nil, - 365, nil, 365, nil, nil, 365, 365, nil, 220, nil, - 375, nil, 375, 375, nil, 375, 375, nil, 375, nil, - 375, nil, 375, nil, 375, nil, nil, 375, 375, 220, - 377, 220, 220, nil, 220, 220, nil, 220, nil, 220, - nil, 220, nil, 220, nil, nil, 220, 220, nil, 381, - nil, 377, nil, 377, 377, nil, 377, 377, nil, 377, - nil, 377, nil, 377, nil, 377, nil, nil, 377, 377, - 381, 240, 381, 381, nil, 381, 381, nil, 381, nil, - 381, nil, 381, nil, 381, nil, nil, 381, 381, nil, - 383, nil, 240, nil, 240, 240, nil, 240, 240, nil, - 240, nil, 240, nil, 240, nil, 240, nil, nil, 240, - 240, 383, nil, 383, 383, nil, 383, 383, nil, 383, - nil, 383, nil, 383, nil, 383, nil, nil, 383, 383, - 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 ] + 180, 180, 152, 22, 243, 22, 55, 17, 86, 301, + 81, 165, 96, 180, 180, 178, 12, 301, 22, 165, + 12, 95, 180, 180, 180, 180, 86, 12, 178, 243, + 243, 55, 156, 174, 208, 208, 106, 106, 208, 215, + 208, 91, 22, 106, 152, 17, 180, 180, 17, 218, + 180, 180, 180, 180, 180, 180, 208, 180, 180, 176, + 176, 174, 174, 176, 180, 176, 62, 208, 17, 219, + 156, 208, 208, 156, 106, 208, 158, 62, 369, 369, + 208, 208, 62, 239, 208, 205, 205, 208, 220, 205, + 65, 205, 176, 156, 239, 208, 176, 176, 211, 239, + 176, 65, 224, 181, 181, 176, 65, 205, 273, 176, + 350, 369, 143, 350, 158, 369, 369, 158, 205, 369, + 176, 273, 205, 205, 369, 143, 205, 90, 369, 356, + 356, 205, 205, 344, 344, 205, 181, 158, 205, 369, + 181, 181, 221, 226, 181, 227, 205, 163, 181, 181, + 352, 352, 87, 181, 352, 221, 352, 120, 163, 229, + 309, 120, 356, 163, 181, 309, 356, 356, 120, 120, + 356, 85, 352, 231, 43, 356, 342, 342, 43, 356, + 342, 232, 342, 352, 122, 43, 43, 352, 352, 122, + 356, 352, 182, 182, 278, 278, 352, 352, 182, 195, + 352, 278, 195, 352, 297, 281, 281, 297, 233, 342, + 103, 352, 281, 342, 342, 280, 280, 342, 184, 184, + 280, 280, 342, 84, 30, 182, 342, 280, 30, 182, + 182, 105, 278, 182, 101, 30, 30, 342, 182, 204, + 204, 184, 182, 204, 80, 204, 1, 282, 282, 78, + 1, 184, 77, 182, 282, 184, 184, 1, 250, 184, + 252, 204, 253, 184, 184, 23, 23, 234, 184, 23, + 71, 234, 204, 7, 234, 70, 204, 204, 234, 184, + 204, 264, 7, 7, 269, 204, 204, 23, 68, 204, + 26, 26, 204, 107, 26, 275, 26, 67, 23, 66, + 204, 207, 23, 23, 160, 108, 23, 109, 160, 160, + 23, 23, 26, 298, 298, 23, 196, 196, 298, 298, + 196, 114, 196, 26, 115, 298, 23, 26, 26, 188, + 119, 26, 121, 188, 188, 64, 26, 26, 196, 127, + 26, 29, 29, 26, 52, 29, 51, 29, 50, 196, + 132, 26, 133, 196, 196, 171, 192, 196, 135, 171, + 171, 36, 196, 196, 136, 138, 196, 213, 213, 196, + 33, 213, 139, 213, 29, 140, 183, 196, 29, 29, + 183, 183, 29, 28, 28, 28, 28, 29, 316, 213, + 142, 29, 306, 306, 16, 328, 306, 329, 306, 331, + 213, 332, 29, 333, 213, 213, 338, 175, 213, 35, + 35, 35, 35, 213, 213, 173, 172, 213, 197, 197, + 213, 9, 197, 353, 197, 306, 8, 357, 213, 306, + 306, 144, 368, 306, 157, 370, 299, 299, 306, 3, + 197, 2, 306, 299, 34, 34, 34, 34, 153, 154, + nil, 197, nil, 306, nil, 197, 197, nil, nil, 197, + 4, 4, 4, 4, 197, 197, 39, 39, 197, 299, + 39, 197, 39, 299, 299, nil, nil, 299, nil, 197, + nil, nil, 299, nil, nil, nil, 299, nil, 39, nil, + nil, nil, 206, 206, nil, nil, 206, 299, 206, 39, + nil, nil, nil, 39, 39, nil, nil, 39, nil, nil, + nil, nil, 39, 39, 206, nil, 39, nil, nil, 39, + nil, nil, 46, 46, nil, 206, 46, 39, 46, 206, + 206, nil, nil, 206, nil, nil, nil, nil, 206, 206, + nil, nil, 206, nil, 46, 206, nil, nil, 47, 47, + nil, nil, 47, 206, 47, 46, nil, nil, nil, 46, + 46, nil, nil, 46, nil, nil, 270, 270, 46, 46, + 47, nil, 46, 48, 48, 46, nil, 48, nil, 48, + nil, 47, nil, 46, nil, 47, 47, 49, 49, 47, + nil, 49, nil, nil, 47, 47, nil, nil, 47, 270, + nil, 47, nil, 270, 270, nil, 48, 270, nil, 47, + 48, 48, 270, nil, 48, nil, 270, nil, nil, 48, + 49, nil, nil, 48, 49, 49, nil, 270, 49, nil, + nil, nil, nil, 49, 48, 203, 203, 49, nil, 203, + nil, 203, 294, 294, 294, 294, 294, 294, 49, 294, + 294, nil, 284, 284, 284, 284, 294, 203, nil, 284, + 284, 209, 209, nil, nil, 209, 284, 209, 203, nil, + nil, nil, 203, 203, nil, nil, 203, nil, nil, nil, + nil, 203, 203, 209, nil, 203, nil, nil, 203, nil, + nil, 210, 210, nil, 209, 210, 203, 210, 209, 209, + nil, nil, 209, nil, nil, nil, nil, 209, 209, nil, + nil, 209, nil, 210, 209, nil, nil, nil, nil, nil, + nil, nil, 209, nil, 210, nil, nil, nil, 210, 210, + 102, 102, 210, nil, 102, 102, 102, 210, 210, nil, + nil, 210, nil, nil, 210, nil, nil, nil, nil, 63, + 63, nil, 210, 63, nil, 63, 202, 202, nil, nil, + 202, nil, 202, 102, nil, nil, nil, 102, 102, nil, + nil, 102, nil, nil, nil, nil, 102, nil, 202, nil, + 102, nil, 63, nil, nil, nil, 63, 63, nil, 202, + 63, 102, nil, 202, 202, 63, nil, 202, nil, 63, + nil, nil, 202, 202, nil, nil, 202, 100, 100, 202, + 63, 100, nil, 100, nil, nil, nil, 202, nil, nil, + nil, nil, nil, nil, nil, nil, 277, 277, nil, 100, + 277, nil, 277, 198, 198, nil, nil, 198, nil, 198, + 100, nil, nil, nil, 100, 100, nil, nil, 100, nil, + nil, nil, nil, 100, 100, 198, nil, 100, nil, 277, + 100, nil, nil, 277, 277, nil, 198, 277, 100, nil, + 198, 198, 277, nil, 198, nil, 277, nil, nil, 198, + 198, nil, nil, 198, 256, 256, 198, 277, 256, nil, + 256, nil, nil, nil, 198, nil, nil, nil, nil, nil, + nil, nil, nil, 254, 254, nil, 256, nil, nil, 74, + 74, nil, nil, nil, nil, nil, nil, 256, nil, nil, + nil, 256, 256, nil, nil, 256, 254, nil, nil, nil, + 256, 256, 74, nil, 256, nil, 254, 256, nil, nil, + 254, 254, 74, nil, 254, 256, 74, 74, 254, 254, + 74, nil, nil, 254, 74, 74, 75, 75, nil, 74, + 75, nil, 75, nil, 254, nil, 286, 286, 286, 286, + 74, nil, nil, 286, 286, 248, 248, nil, 75, 248, + 286, 248, 245, 245, nil, nil, nil, nil, nil, 75, + nil, nil, nil, 75, 75, nil, nil, 75, nil, nil, + 244, 244, 75, 75, nil, nil, 75, nil, 248, 75, + nil, nil, 248, 248, nil, 245, 248, 75, nil, 245, + 245, 248, nil, 245, nil, 248, nil, nil, 245, nil, + nil, nil, 245, 244, nil, nil, 248, 244, 244, nil, + nil, 244, nil, 245, nil, nil, 244, 97, 97, nil, + 244, 97, nil, 97, nil, nil, nil, nil, nil, nil, + nil, 244, nil, nil, nil, nil, 82, 82, nil, 97, + 82, nil, 82, 199, 199, nil, nil, 199, nil, 199, + 97, nil, nil, nil, 97, 97, nil, nil, 97, nil, + nil, nil, nil, 97, 97, 214, 214, 97, nil, 82, + 97, nil, nil, 82, 82, nil, 199, 82, 97, nil, + 199, 199, 82, nil, 199, nil, 82, nil, nil, 199, + 230, 230, nil, 199, 230, nil, 230, 82, 214, nil, + nil, nil, 214, 214, 199, nil, 214, nil, 200, 200, + nil, 214, 200, nil, 200, 214, nil, nil, nil, nil, + nil, nil, nil, 230, nil, nil, 214, 230, 230, nil, + 200, 230, nil, 228, 228, nil, 230, 228, nil, 228, + 230, 200, nil, 225, 225, 200, 200, 225, nil, 200, + nil, 230, nil, nil, 200, 200, nil, nil, 200, nil, + nil, 200, nil, nil, nil, nil, 228, nil, nil, 200, + 228, 228, nil, nil, 228, nil, 225, nil, nil, 228, + 225, 225, nil, 228, 225, nil, 201, 201, nil, 225, + 201, nil, 201, 225, 228, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 225, 308, 308, nil, 201, 308, + nil, 308, 94, 94, nil, nil, 94, nil, 94, 201, + nil, nil, nil, 201, 201, nil, nil, 201, nil, nil, + nil, nil, 201, 201, 94, nil, 201, nil, 308, 201, + nil, nil, 308, 308, nil, 94, 308, 201, nil, 94, + 94, 308, nil, 94, nil, 308, nil, nil, 94, 94, + 111, nil, 94, nil, nil, 94, 308, nil, nil, 111, + 111, nil, nil, 94, nil, nil, nil, nil, 111, 111, + 111, 111, nil, nil, 186, 186, nil, nil, nil, nil, + nil, nil, 186, 186, 186, 186, 186, nil, nil, nil, + nil, nil, 111, 111, nil, nil, 111, 111, 111, 111, + 111, 111, nil, 111, 111, nil, nil, 186, 186, nil, + 111, 186, 186, 186, 186, 186, 186, nil, 186, 186, + 288, 288, nil, nil, nil, 186, nil, nil, nil, 288, + 288, 288, 288, nil, nil, 131, 131, nil, nil, nil, + nil, nil, nil, nil, 131, 131, 131, 131, nil, nil, + nil, nil, nil, nil, 288, nil, nil, 288, 288, 288, + 288, 288, 288, nil, 288, 288, nil, nil, 131, 131, + nil, 288, 131, 131, 131, 131, 131, 131, nil, 131, + 131, 130, 130, nil, nil, nil, 131, nil, nil, nil, + 130, 130, 130, 130, nil, nil, 292, 292, nil, nil, + nil, nil, nil, nil, nil, 292, 292, 292, 292, nil, + nil, nil, nil, nil, 130, 130, nil, nil, 130, 130, + 130, 130, 130, 130, nil, 130, 130, nil, nil, nil, + nil, nil, 130, 292, 292, 292, 292, 292, 292, nil, + 292, 292, 124, 124, nil, nil, nil, 292, nil, nil, + nil, 124, 124, 124, 124, nil, nil, nil, 293, nil, + 285, 285, 285, 285, 285, 285, 293, 285, 285, nil, + nil, nil, nil, nil, 285, 124, 124, 289, nil, 124, + 124, 124, 124, 124, 124, 289, 124, 124, nil, nil, + nil, nil, 287, 124, 293, 293, 293, 293, 293, 293, + 287, 293, 293, nil, nil, nil, nil, nil, 293, nil, + nil, 290, nil, 289, 289, 289, 289, 289, 289, 290, + 289, 289, nil, nil, nil, nil, nil, 289, 287, 287, + 287, 287, 287, 287, nil, 287, 287, nil, nil, 381, + nil, nil, 287, nil, nil, nil, nil, 290, 290, 290, + 290, 290, 290, nil, 290, 290, nil, nil, 212, nil, + 381, 290, 381, 381, nil, 381, 381, nil, 381, nil, + 381, nil, 381, nil, 381, nil, nil, 381, 381, 212, + 217, 212, 212, nil, 212, 212, nil, 212, nil, 212, + nil, 212, nil, 212, nil, nil, 212, 212, nil, 379, + nil, 217, nil, 217, 217, nil, 217, 217, nil, 217, + nil, 217, nil, 217, nil, 217, nil, nil, 217, 217, + 379, 237, 379, 379, nil, 379, 379, nil, 379, nil, + 379, nil, 379, nil, 379, nil, nil, 379, 379, nil, + 375, nil, 237, nil, 237, 237, nil, 237, 237, nil, + 237, nil, 237, nil, 237, nil, 237, nil, nil, 237, + 237, 375, 373, 375, 375, nil, 375, 375, nil, 375, + nil, 375, nil, 375, nil, 375, nil, nil, 375, 375, + nil, 363, nil, 373, nil, 373, 373, nil, 373, 373, + nil, 373, nil, 373, nil, 373, nil, 373, nil, nil, + 373, 373, 363, 296, 363, 363, nil, 363, 363, nil, + 363, nil, 363, nil, 363, nil, 363, nil, nil, 363, + 363, nil, 304, nil, 296, nil, 296, 296, nil, 296, + 296, nil, 296, nil, 296, nil, 296, nil, 296, nil, + nil, 296, 296, 304, 324, 304, 304, nil, 304, 304, + nil, 304, nil, 304, nil, 304, nil, 304, nil, nil, + 304, 304, nil, 320, nil, 324, nil, 324, 324, nil, + 324, 324, nil, 324, nil, 324, nil, 324, nil, 324, + nil, nil, 324, 324, 320, nil, 320, 320, nil, 320, + 320, nil, 320, nil, 320, nil, 320, nil, 320, nil, + nil, 320, 320, 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 = [ - 1819, 198, 459, 427, 335, nil, nil, 235, 451, 446, - nil, nil, -20, nil, nil, nil, 423, 30, nil, 1800, - nil, nil, -3, 222, nil, nil, 265, nil, 413, 313, - 112, nil, nil, 408, 365, 348, 356, nil, nil, 433, - nil, nil, nil, 131, nil, nil, 489, 515, 540, 554, - 309, 323, 344, nil, nil, -6, nil, nil, nil, nil, - nil, nil, 42, 706, 261, 123, 273, 243, 241, 792, - nil, 257, 250, nil, nil, 865, 891, nil, 162, 159, - nil, 122, 26, 1241, nil, 16, 15, 2, -11, nil, - nil, 79, 195, nil, nil, 1185, 237, 278, 628, nil, - nil, 602, 286, 385, 301, nil, 302, 34, 304, 306, - 309, nil, 1269, nil, nil, 325, 327, nil, nil, nil, - 329, 145, 354, 149, nil, 1391, nil, nil, 375, nil, - nil, 1406, 1452, 377, 393, nil, 413, 409, nil, 461, - 463, 446, nil, 440, 4, 433, nil, nil, nil, nil, - nil, nil, nil, -9, 437, 385, nil, 5, 409, 74, - nil, 236, nil, nil, 59, nil, -9, nil, nil, nil, - nil, nil, 359, 396, 393, 11, 356, nil, 365, 57, - nil, 96, nil, -4, 192, 240, 209, 320, nil, 1284, - nil, 339, nil, nil, nil, 327, nil, nil, 224, 403, - 32, 658, 989, 1073, 840, 83, 174, 459, 999, 1215, - 195, 1159, 1129, 1103, 127, 1598, 1047, 973, 39, nil, - 1699, 54, 63, 83, 100, nil, nil, 134, 946, 115, - 148, 930, 126, 916, 146, 1, 196, 165, nil, nil, - 1762, nil, 66, nil, nil, nil, -21, 822, 771, nil, - nil, 778, nil, 263, nil, 264, 271, 753, nil, 727, - nil, nil, nil, nil, nil, nil, nil, 287, nil, nil, - nil, nil, 533, nil, nil, 117, nil, 303, nil, 684, - 159, nil, 234, 317, 191, nil, 557, 1002, 567, 1467, - 1345, 1501, 1486, nil, 1330, 1520, 1433, nil, 1557, 79, - 250, 355, nil, -1, nil, nil, 1576, nil, 334, nil, - 291, 214, nil, nil, nil, nil, nil, nil, 409, nil, - nil, nil, 1617, nil, nil, nil, 1639, nil, nil, nil, - 403, 411, nil, 417, 421, 422, nil, nil, nil, nil, - 438, nil, nil, nil, 167, nil, 122, nil, nil, nil, - nil, nil, 96, nil, 148, 448, nil, nil, 101, 452, - nil, nil, nil, nil, nil, 1658, nil, nil, nil, nil, - 455, 76, 461, nil, nil, 1680, nil, 1721, nil, nil, - nil, 1740, nil, 1781, nil, nil, nil ] + 1832, 210, 426, 395, 396, nil, nil, 267, 418, 413, + nil, nil, -20, nil, nil, nil, 394, 5, nil, 1813, + nil, nil, -3, 263, nil, nil, 288, nil, 319, 339, + 188, nil, nil, 368, 380, 345, 337, nil, nil, 464, + nil, nil, nil, 138, nil, nil, 520, 546, 571, 585, + 308, 322, 344, nil, nil, -6, nil, nil, nil, nil, + nil, nil, 42, 747, 295, 66, 291, 274, 265, nil, + 269, 264, nil, nil, 907, 954, nil, 240, 243, nil, + 221, -13, 1064, nil, 200, 165, 2, 129, nil, nil, + 104, 18, nil, nil, 1240, -2, 6, 1045, nil, nil, + 805, 211, 728, 187, nil, 208, 34, 270, 282, 284, + nil, 1282, nil, nil, 313, 316, nil, nil, nil, 318, + 121, 324, 149, nil, 1465, nil, nil, 333, nil, nil, + 1404, 1358, 343, 329, nil, 352, 323, nil, 342, 360, + 352, nil, 367, 101, 411, nil, nil, nil, nil, nil, + nil, nil, -9, 436, 412, nil, 30, 426, 74, nil, + 258, nil, nil, 123, nil, -7, nil, nil, nil, nil, + nil, 348, 404, 404, 11, 367, 57, nil, 3, nil, + -4, 101, 190, 369, 216, nil, 1297, nil, 322, nil, + nil, nil, 345, nil, nil, 190, 314, 416, 831, 1071, + 1136, 1214, 754, 633, 237, 83, 490, 238, 32, 659, + 689, 35, 1589, 365, 1093, 37, nil, 1611, 34, 44, + 73, 130, nil, nil, 93, 1171, 103, 136, 1161, 119, + 1118, 133, 172, 200, 231, nil, nil, 1652, nil, 59, + nil, nil, nil, -21, 998, 980, nil, nil, 973, nil, + 249, nil, 248, 255, 901, nil, 882, nil, nil, nil, + nil, nil, nil, nil, 270, nil, nil, nil, nil, 260, + 564, nil, nil, 96, nil, 288, nil, 824, 192, nil, + 159, 144, 186, nil, 598, 1446, 912, 1514, 1343, 1499, + 1533, nil, 1419, 1480, 588, nil, 1734, 173, 257, 434, + nil, -3, nil, nil, 1753, nil, 390, nil, 1233, 125, + nil, nil, nil, nil, nil, nil, 376, nil, nil, nil, + 1794, nil, nil, nil, 1775, nil, nil, nil, 372, 374, + nil, 376, 378, 380, nil, nil, nil, nil, 397, nil, + nil, nil, 174, nil, 122, nil, nil, nil, nil, nil, + 79, nil, 148, 415, nil, nil, 127, 419, nil, nil, + nil, nil, nil, 1712, nil, nil, nil, nil, 423, 76, + 426, nil, nil, 1693, nil, 1671, nil, nil, nil, 1630, + nil, 1570, nil, nil, nil ] racc_action_default = [ - -198, -235, -235, -51, -235, -8, -9, -235, -235, -22, - -10, -189, -190, -11, -187, -12, -235, -235, -13, -1, - -14, -2, -235, -188, -15, -3, -235, -16, -5, -235, - -235, -17, -6, -235, -18, -7, -198, -190, -188, -235, - -52, -26, -27, -235, -24, -25, -235, -235, -235, -86, - -93, -198, -235, -197, -195, -198, -191, -193, -194, -223, - -196, -4, -198, -235, -86, -198, -54, -233, -43, -235, - -176, -44, -215, -118, -33, -235, -235, -45, -31, -75, - -32, -235, -36, -235, -123, -38, -235, -74, -39, -173, - -73, -40, -41, -175, -42, -235, -104, -112, -235, -133, - -113, -235, -105, -235, -109, -111, -106, -235, -115, -107, - -114, -110, -235, -126, -108, -235, -235, -50, -177, -178, - -180, -235, -235, -199, -200, -84, -19, -22, -188, -21, - -23, -83, -85, -235, -76, -87, -82, -71, -75, -77, - -221, -80, -69, -78, -74, -235, -172, -171, -81, -79, - -91, -92, -94, -235, -221, -198, 387, -235, -235, -235, - -209, -235, -58, -215, -198, -60, -235, -67, -66, -57, - -74, -96, -235, -221, -235, -235, -93, -37, -74, -235, - -30, -235, -119, -235, -235, -235, -235, -235, -143, -235, - -150, -235, -218, -231, -227, -235, -230, -226, -235, -235, - -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, - -235, -235, -235, -235, -235, -235, -235, -235, -235, -20, - -235, -208, -235, -206, -235, -203, -232, -235, -72, -222, - -235, -235, -86, -235, -222, -235, -235, -235, -211, -192, - -235, -210, -235, -55, -63, -62, -235, -235, -235, -219, - -220, -235, -125, -235, -56, -221, -235, -235, -28, -235, - -121, -120, -35, -34, -174, -169, -167, -235, -170, -161, - -168, -162, -235, -124, -117, -235, -153, -220, -216, -235, - -235, -224, -138, -140, -139, -134, -141, -145, -142, -147, - -152, -149, -146, -135, -151, -148, -144, -136, -235, -129, - -137, -235, -155, -235, -159, -179, -235, -182, -235, -201, - -235, -235, -202, -46, -70, -88, -47, -89, -221, -90, - -95, -49, -235, -213, -212, -214, -235, -186, -59, -61, - -98, -99, -64, -103, -100, -101, -102, -65, -97, -48, - -235, -234, -29, -122, -235, -164, -221, -116, -217, -229, - -228, -225, -129, -128, -235, -235, -156, -154, -235, -235, - -181, -207, -205, -204, -68, -235, -184, -185, -53, -166, - -220, -235, -235, -127, -130, -235, -160, -235, -183, -165, - -163, -235, -132, -235, -158, -131, -157 ] + -197, -234, -234, -50, -234, -8, -9, -234, -234, -22, + -10, -188, -189, -11, -186, -12, -234, -234, -13, -1, + -14, -2, -234, -187, -15, -3, -234, -16, -5, -234, + -234, -17, -6, -234, -18, -7, -197, -189, -187, -234, + -51, -26, -27, -234, -24, -25, -234, -234, -234, -85, + -92, -197, -234, -196, -194, -197, -190, -192, -193, -222, + -195, -4, -197, -234, -85, -197, -53, -232, -42, -175, + -43, -214, -117, -33, -234, -234, -44, -31, -74, -32, + -234, -36, -234, -122, -37, -234, -73, -38, -172, -72, + -39, -40, -174, -41, -234, -103, -111, -234, -132, -112, + -234, -104, -234, -108, -110, -105, -234, -114, -106, -113, + -109, -234, -125, -107, -234, -234, -49, -176, -177, -179, + -234, -234, -198, -199, -83, -19, -22, -187, -21, -23, + -82, -84, -234, -75, -86, -81, -70, -74, -76, -220, + -79, -68, -77, -73, -234, -171, -170, -80, -78, -90, + -91, -93, -234, -220, -197, 385, -234, -234, -234, -208, + -234, -57, -214, -197, -59, -234, -66, -65, -56, -73, + -95, -234, -220, -234, -234, -92, -234, -30, -234, -118, + -234, -234, -234, -234, -234, -142, -234, -149, -234, -217, + -230, -226, -234, -229, -225, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -20, -234, -207, -234, + -205, -234, -202, -231, -234, -71, -221, -234, -234, -85, + -234, -221, -234, -234, -234, -210, -191, -234, -209, -234, + -54, -62, -61, -234, -234, -234, -218, -219, -234, -124, + -234, -55, -220, -234, -234, -28, -234, -120, -119, -35, + -34, -173, -168, -166, -234, -169, -160, -167, -161, -73, + -234, -123, -116, -234, -152, -219, -215, -234, -234, -223, + -137, -139, -138, -133, -140, -144, -141, -146, -151, -148, + -145, -134, -150, -147, -143, -135, -234, -128, -136, -234, + -154, -234, -158, -178, -234, -181, -234, -200, -234, -234, + -201, -45, -69, -87, -46, -88, -220, -89, -94, -48, + -234, -212, -211, -213, -234, -185, -58, -60, -97, -98, + -63, -102, -99, -100, -101, -64, -96, -47, -234, -233, + -29, -121, -234, -163, -220, -115, -216, -228, -227, -224, + -128, -127, -234, -234, -155, -153, -234, -234, -180, -206, + -204, -203, -67, -234, -183, -184, -52, -165, -219, -234, + -234, -126, -129, -234, -159, -234, -182, -164, -162, -234, + -131, -234, -157, -130, -156 ] racc_goto_table = [ - 22, 9, 68, 113, 53, 177, 61, 36, 267, 271, - 225, 194, 230, 19, 2, 78, 154, 119, 51, 22, - 9, 56, 182, 140, 74, 150, 235, 21, 134, 142, - 116, 148, 161, 2, 117, 175, 126, 130, 173, 94, - 304, 353, 43, 22, 127, 253, 122, 129, 68, 302, - 172, 332, 337, 269, 68, 261, 137, 301, 371, 346, - 320, 155, 120, 124, 227, 149, 236, 181, 55, 158, - 186, 66, 121, 241, 222, 224, 74, 328, 124, 324, - 198, 16, 160, nil, 82, 94, 193, nil, nil, nil, - 191, 94, nil, nil, 373, 267, 345, nil, nil, nil, + 22, 9, 68, 112, 222, 264, 61, 36, 53, 179, + 268, 141, 70, 19, 2, 77, 191, 118, 51, 22, + 9, 139, 116, 21, 73, 91, 56, 147, 133, 149, + 115, 227, 153, 2, 300, 128, 172, 302, 135, 160, + 125, 129, 174, 22, 126, 232, 351, 43, 171, 299, + 260, 146, 369, 68, 121, 330, 335, 258, 266, 123, + 318, 344, 136, 70, 250, 119, 178, 183, 224, 154, + 233, 55, 157, 66, 123, 73, 91, 120, 159, 238, + 219, 221, 326, 322, 195, 190, 16, 188, nil, nil, + nil, nil, nil, 264, nil, nil, nil, nil, 343, 371, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 128, nil, nil, 88, nil, 216, 129, 354, + 22, 126, 302, 260, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 139, nil, nil, nil, 219, 130, nil, nil, nil, nil, - 263, 22, 127, 167, 304, 129, 167, 340, nil, nil, - 82, nil, nil, 356, 246, nil, 82, 115, nil, nil, - nil, nil, 255, nil, 53, nil, 53, nil, nil, nil, - nil, 150, nil, nil, nil, nil, 133, nil, nil, nil, - nil, 239, nil, 68, 265, nil, 68, nil, nil, nil, - nil, 171, nil, nil, nil, nil, nil, nil, nil, 275, - nil, 376, 238, nil, 350, 262, nil, nil, 74, nil, - 364, 171, nil, 263, 267, 379, 265, 293, 363, 264, - 94, 297, 305, 94, 315, 343, 318, 134, 314, 150, - 148, 171, nil, nil, nil, 22, 9, nil, 372, nil, - 22, 9, nil, nil, nil, 167, 330, 330, 298, 2, - nil, 264, nil, 306, 2, nil, 68, nil, nil, nil, - 22, 9, 91, 323, 149, 82, 266, nil, 82, 89, - nil, 265, nil, 326, 2, nil, nil, nil, 262, 193, - nil, 264, 264, 336, 336, 88, nil, nil, 146, nil, - nil, nil, nil, 94, nil, 89, nil, nil, 266, nil, - 265, nil, nil, nil, nil, 61, 264, 256, 91, 139, - nil, 143, nil, 61, 91, 89, nil, nil, 22, 9, - nil, 89, nil, 167, nil, nil, 22, 9, 331, 331, - 285, 88, 2, 61, nil, 264, nil, 88, 82, nil, - 2, nil, 22, 9, nil, nil, 22, 9, nil, nil, - nil, 374, nil, 266, nil, 365, 2, 265, nil, 317, - 2, 319, nil, nil, nil, nil, nil, 92, nil, nil, - 265, nil, 61, nil, nil, nil, nil, nil, nil, 338, - nil, nil, 266, nil, nil, 22, 9, nil, 61, nil, - 61, nil, 264, 147, nil, 22, 9, 22, 9, 2, - nil, 22, 9, 22, 9, 264, nil, 349, 381, 2, - 383, 2, nil, 92, nil, 2, nil, 2, 85, 92, - nil, nil, nil, 91, 146, 71, 91, nil, nil, nil, - 89, 89, nil, 89, nil, nil, 361, nil, 362, 266, - nil, nil, nil, nil, 141, nil, 88, 270, nil, 88, - nil, 136, 266, nil, nil, nil, 146, 168, nil, nil, - 168, nil, nil, 89, 85, nil, nil, 146, nil, nil, - 85, 71, 369, nil, 89, nil, nil, 71, nil, 270, - nil, nil, nil, nil, nil, nil, 335, 335, nil, nil, - 143, nil, nil, 89, 89, nil, 91, nil, nil, nil, - nil, nil, nil, 89, nil, nil, nil, nil, 125, 334, - 334, 146, nil, nil, nil, 131, 132, nil, 89, 88, - nil, nil, nil, nil, nil, nil, nil, nil, 92, 147, - nil, 92, nil, nil, 270, nil, nil, nil, nil, nil, - 146, nil, nil, nil, nil, 183, nil, 89, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 168, - nil, 147, nil, 270, 188, nil, nil, 189, nil, nil, - 190, nil, 147, nil, nil, nil, nil, nil, nil, 85, - 268, nil, 85, nil, nil, nil, 71, nil, nil, 71, - nil, 147, 147, nil, nil, nil, nil, 146, nil, nil, - nil, 92, nil, nil, 89, nil, nil, nil, nil, nil, - 146, nil, 268, nil, nil, nil, 147, 89, nil, nil, - 270, nil, nil, 141, nil, nil, nil, nil, nil, nil, - 136, nil, nil, 270, nil, nil, nil, 168, nil, nil, - nil, nil, 333, 333, nil, 147, nil, nil, nil, nil, - nil, nil, 85, nil, nil, nil, nil, nil, nil, 71, - nil, nil, nil, nil, nil, nil, nil, 268, 282, 283, - 284, nil, 286, 287, 288, 289, 290, 291, 292, nil, - 294, 295, 296, nil, nil, 300, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 268, nil, nil, nil, - nil, nil, 147, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 147, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 183, nil, + 243, 88, nil, nil, 338, nil, nil, 53, nil, 53, + nil, nil, nil, nil, 149, nil, nil, 252, nil, nil, + 68, 262, nil, 68, nil, 236, 88, nil, nil, nil, + 70, nil, nil, 70, nil, nil, 273, 235, nil, 374, + nil, nil, 259, 91, 146, 73, 91, 312, 348, nil, + 341, 361, 264, 262, 87, nil, 261, 377, 291, 303, + nil, 316, 295, 147, 133, 313, nil, nil, 362, nil, + 149, nil, 22, 9, 135, nil, 146, 22, 9, nil, + 142, nil, nil, 328, 328, 296, 2, 146, 261, nil, + 304, 2, nil, 68, nil, nil, 370, 22, 9, nil, + 321, nil, nil, 70, nil, 87, 146, 146, nil, 262, + 324, 2, nil, nil, nil, 259, 91, 190, 261, 261, + nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 146, 88, 88, nil, 88, nil, 262, nil, + nil, nil, nil, 61, 261, nil, nil, 138, 84, nil, + nil, 61, nil, nil, nil, nil, 22, 9, nil, nil, + 166, 146, nil, 166, 22, 9, 88, nil, nil, nil, + 2, 61, 81, 261, 140, nil, nil, 88, 2, nil, + 22, 9, nil, nil, 22, 9, nil, 167, nil, 372, + 167, nil, nil, 363, 2, 262, 88, 88, 2, 84, + nil, 90, nil, nil, nil, nil, 88, nil, 262, nil, + 61, nil, 87, 267, nil, 87, nil, nil, 146, nil, + nil, nil, 88, 22, 9, nil, 61, 145, 61, nil, + 261, 146, nil, 22, 9, 22, 9, 2, 114, 22, + 9, 22, 9, 261, 93, 267, 379, 2, 381, 2, + nil, 88, 90, 2, nil, 2, 142, 132, nil, nil, + nil, 166, nil, nil, nil, nil, nil, nil, nil, nil, + 148, nil, 170, nil, nil, 332, 332, nil, nil, 81, + 263, nil, 81, nil, nil, 87, nil, nil, 167, nil, + nil, 170, nil, nil, nil, 93, nil, nil, nil, nil, + nil, 267, nil, nil, nil, nil, 84, 265, 88, 84, + nil, 170, 263, nil, nil, nil, nil, nil, nil, nil, + nil, 88, nil, 138, nil, nil, nil, nil, nil, nil, + 267, nil, nil, nil, nil, nil, nil, 166, 124, 265, + nil, nil, 329, 329, nil, 130, 131, nil, nil, nil, + 140, nil, 81, nil, nil, nil, nil, nil, nil, 90, + 145, nil, 90, nil, 167, nil, nil, nil, 263, 331, + 331, nil, nil, nil, 180, nil, nil, nil, nil, 84, + nil, nil, nil, nil, nil, 253, nil, 267, nil, nil, + nil, nil, 145, 185, nil, 265, 186, 263, nil, 187, + 267, nil, 93, 145, nil, 93, nil, nil, 283, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 333, 333, 265, nil, nil, nil, nil, nil, + nil, nil, 90, nil, nil, nil, nil, 315, nil, 317, + nil, nil, nil, nil, nil, nil, 148, nil, 145, nil, + nil, nil, nil, nil, 263, nil, nil, 336, nil, nil, + nil, nil, nil, nil, nil, 334, 334, 263, nil, nil, + nil, nil, nil, nil, nil, 93, nil, 145, nil, nil, + nil, 265, nil, nil, nil, nil, 347, nil, nil, nil, + nil, nil, nil, nil, 265, 280, 281, 282, nil, 284, + 285, 286, 287, 288, 289, 290, nil, 292, 293, 294, + nil, nil, 298, nil, nil, 359, nil, 360, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 268, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 268 ] + nil, nil, nil, nil, 145, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 145, nil, nil, + nil, 367, nil, nil, nil, 180 ] racc_goto_check = [ - 37, 21, 30, 62, 64, 23, 4, 32, 68, 70, - 82, 85, 36, 2, 52, 22, 38, 72, 32, 37, - 21, 78, 60, 35, 21, 53, 36, 3, 30, 47, - 37, 50, 41, 52, 5, 41, 19, 7, 35, 29, - 68, 63, 20, 37, 21, 36, 74, 5, 30, 66, - 57, 46, 46, 69, 30, 61, 33, 65, 58, 71, - 56, 74, 73, 3, 34, 29, 75, 22, 76, 77, - 57, 40, 20, 79, 80, 81, 21, 42, 3, 83, - 84, 1, 3, nil, 24, 29, 30, nil, nil, nil, - 57, 29, nil, nil, 63, 68, 70, nil, nil, nil, + 37, 21, 30, 62, 82, 68, 4, 32, 64, 60, + 70, 47, 31, 2, 52, 22, 85, 72, 32, 37, + 21, 35, 5, 3, 21, 28, 78, 50, 30, 53, + 37, 36, 38, 52, 66, 5, 35, 68, 31, 41, + 19, 7, 41, 37, 21, 36, 63, 20, 57, 65, + 23, 28, 58, 30, 74, 46, 46, 61, 69, 3, + 56, 71, 33, 31, 36, 73, 22, 57, 34, 74, + 75, 76, 77, 40, 3, 21, 28, 20, 3, 79, + 80, 81, 42, 83, 84, 30, 1, 57, nil, nil, + nil, nil, nil, 68, nil, nil, nil, nil, 70, 63, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 24, nil, nil, nil, 19, 7, nil, nil, nil, nil, - 23, 37, 21, 24, 68, 5, 24, 36, nil, nil, - 24, nil, nil, 66, 41, nil, 24, 54, nil, nil, - nil, nil, 38, nil, 64, nil, 64, nil, nil, nil, - nil, 53, nil, nil, nil, nil, 54, nil, nil, nil, - nil, 78, nil, 30, 30, nil, 30, nil, nil, nil, - nil, 54, nil, nil, nil, nil, nil, nil, nil, 22, - nil, 68, 3, nil, 85, 21, nil, nil, 21, nil, - 36, 54, nil, 23, 68, 70, 30, 64, 82, 52, - 29, 64, 72, 29, 53, 60, 35, 30, 47, 53, - 50, 54, nil, nil, nil, 37, 21, nil, 36, nil, - 37, 21, nil, nil, nil, 24, 30, 30, 2, 52, - nil, 52, nil, 2, 52, nil, 30, nil, nil, nil, - 37, 21, 27, 32, 29, 24, 24, nil, 24, 49, - nil, 30, nil, 2, 52, nil, nil, nil, 21, 30, - nil, 52, 52, 29, 29, 26, nil, nil, 27, nil, - nil, nil, nil, 29, nil, 49, nil, nil, 24, nil, - 30, nil, nil, nil, nil, 4, 52, 54, 27, 24, - nil, 26, nil, 4, 27, 49, nil, nil, 37, 21, - nil, 49, nil, 24, nil, nil, 37, 21, 24, 24, - 54, 26, 52, 4, nil, 52, nil, 26, 24, nil, - 52, nil, 37, 21, nil, nil, 37, 21, nil, nil, - nil, 62, nil, 24, nil, 2, 52, 30, nil, 54, - 52, 54, nil, nil, nil, nil, nil, 28, nil, nil, - 30, nil, 4, nil, nil, nil, nil, nil, nil, 54, - nil, nil, 24, nil, nil, 37, 21, nil, 4, nil, - 4, nil, 52, 28, nil, 37, 21, 37, 21, 52, - nil, 37, 21, 37, 21, 52, nil, 54, 2, 52, - 2, 52, nil, 28, nil, 52, nil, 52, 25, 28, - nil, nil, nil, 27, 27, 31, 27, nil, nil, nil, - 49, 49, nil, 49, nil, nil, 54, nil, 54, 24, - nil, nil, nil, nil, 25, nil, 26, 26, nil, 26, - nil, 31, 24, nil, nil, nil, 27, 25, nil, nil, - 25, nil, nil, 49, 25, nil, nil, 27, nil, nil, - 25, 31, 54, nil, 49, nil, nil, 31, nil, 26, - nil, nil, nil, nil, nil, nil, 27, 27, nil, nil, - 26, nil, nil, 49, 49, nil, 27, nil, nil, nil, - nil, nil, nil, 49, nil, nil, nil, nil, 51, 26, - 26, 27, nil, nil, nil, 51, 51, nil, 49, 26, - nil, nil, nil, nil, nil, nil, nil, nil, 28, 28, - nil, 28, nil, nil, 26, nil, nil, nil, nil, nil, - 27, nil, nil, nil, nil, 51, nil, 49, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, - nil, 28, nil, 26, 51, nil, nil, 51, nil, nil, - 51, nil, 28, nil, nil, nil, nil, nil, nil, 25, - 25, nil, 25, nil, nil, nil, 31, nil, nil, 31, - nil, 28, 28, nil, nil, nil, nil, 27, nil, nil, - nil, 28, nil, nil, 49, nil, nil, nil, nil, nil, - 27, nil, 25, nil, nil, nil, 28, 49, nil, nil, - 26, nil, nil, 25, nil, nil, nil, nil, nil, nil, - 31, nil, nil, 26, nil, nil, nil, 25, nil, nil, - nil, nil, 25, 25, nil, 28, nil, nil, nil, nil, - nil, nil, 25, nil, nil, nil, nil, nil, nil, 31, - nil, nil, nil, nil, nil, nil, nil, 25, 51, 51, - 51, nil, 51, 51, 51, 51, 51, 51, 51, nil, - 51, 51, 51, nil, nil, 51, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 25, nil, nil, nil, - nil, nil, 28, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 28, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 51, nil, + nil, nil, 5, nil, nil, 49, nil, 19, 7, 66, + 37, 21, 68, 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + 41, 49, nil, nil, 36, nil, nil, 64, nil, 64, + nil, nil, nil, nil, 53, nil, nil, 38, nil, nil, + 30, 30, nil, 30, nil, 78, 49, nil, nil, nil, + 31, nil, nil, 31, nil, nil, 22, 3, nil, 68, + nil, nil, 21, 28, 28, 21, 28, 47, 85, nil, + 60, 82, 68, 30, 26, nil, 52, 70, 64, 72, + nil, 35, 64, 50, 30, 53, nil, nil, 36, nil, + 53, nil, 37, 21, 31, nil, 28, 37, 21, nil, + 26, nil, nil, 30, 30, 2, 52, 28, 52, nil, + 2, 52, nil, 30, nil, nil, 36, 37, 21, nil, + 32, nil, nil, 31, nil, 26, 28, 28, nil, 30, + 2, 52, nil, nil, nil, 21, 28, 30, 52, 52, + nil, 24, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 28, 49, 49, nil, 49, nil, 30, nil, + nil, nil, nil, 4, 52, nil, nil, 24, 25, nil, + nil, 4, nil, nil, nil, nil, 37, 21, nil, nil, + 24, 28, nil, 24, 37, 21, 49, nil, nil, nil, + 52, 4, 24, 52, 25, nil, nil, 49, 52, nil, + 37, 21, nil, nil, 37, 21, nil, 25, nil, 62, + 25, nil, nil, 2, 52, 30, 49, 49, 52, 25, + nil, 27, nil, nil, nil, nil, 49, nil, 30, nil, + 4, nil, 26, 26, nil, 26, nil, nil, 28, nil, + nil, nil, 49, 37, 21, nil, 4, 27, 4, nil, + 52, 28, nil, 37, 21, 37, 21, 52, 54, 37, + 21, 37, 21, 52, 29, 26, 2, 52, 2, 52, + nil, 49, 27, 52, nil, 52, 26, 54, nil, nil, + nil, 24, nil, nil, nil, nil, nil, nil, nil, nil, + 29, nil, 54, nil, nil, 26, 26, nil, nil, 24, + 24, nil, 24, nil, nil, 26, nil, nil, 25, nil, + nil, 54, nil, nil, nil, 29, nil, nil, nil, nil, + nil, 26, nil, nil, nil, nil, 25, 25, 49, 25, + nil, 54, 24, nil, nil, nil, nil, nil, nil, nil, + nil, 49, nil, 24, nil, nil, nil, nil, nil, nil, + 26, nil, nil, nil, nil, nil, nil, 24, 51, 25, + nil, nil, 24, 24, nil, 51, 51, nil, nil, nil, + 25, nil, 24, nil, nil, nil, nil, nil, nil, 27, + 27, nil, 27, nil, 25, nil, nil, nil, 24, 25, + 25, nil, nil, nil, 51, nil, nil, nil, nil, 25, + nil, nil, nil, nil, nil, 54, nil, 26, nil, nil, + nil, nil, 27, 51, nil, 25, 51, 24, nil, 51, + 26, nil, 29, 27, nil, 29, nil, nil, 54, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 25 ] + nil, nil, 27, 27, 25, nil, nil, nil, nil, nil, + nil, nil, 27, nil, nil, nil, nil, 54, nil, 54, + nil, nil, nil, nil, nil, nil, 29, nil, 27, nil, + nil, nil, nil, nil, 24, nil, nil, 54, nil, nil, + nil, nil, nil, nil, nil, 29, 29, 24, nil, nil, + nil, nil, nil, nil, nil, 29, nil, 27, nil, nil, + nil, 25, nil, nil, nil, nil, 54, nil, nil, nil, + nil, nil, nil, nil, 25, 51, 51, 51, nil, 51, + 51, 51, 51, 51, 51, 51, nil, 51, 51, 51, + nil, nil, 51, nil, nil, 54, nil, 54, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, + nil, 54, nil, nil, nil, 51 ] racc_goto_pointer = [ - nil, 81, 13, 27, -13, 4, nil, -6, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, -7, - 38, 1, -8, -64, 61, 375, 242, 219, 324, 16, - -21, 382, 6, 7, -73, -26, -128, 0, -34, nil, - 49, -30, -165, nil, nil, nil, -196, -20, nil, 226, - -18, 449, 14, -25, 108, nil, -174, -13, -288, nil, - -54, -128, -23, -258, -13, -160, -168, nil, -177, -132, - -176, -213, -16, 29, 10, -89, 51, 14, 4, -86, - -49, -48, -113, -158, -27, -96, nil ] + nil, 86, 13, 23, -13, -8, nil, -2, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, -3, + 43, 1, -8, -131, 238, 265, 171, 318, 2, 361, + -21, -11, 6, 13, -68, -28, -108, 0, -18, nil, + 51, -23, -157, nil, nil, nil, -189, -38, nil, 92, + -22, 439, 14, -21, 349, nil, -171, -15, -292, nil, + -66, -123, -23, -251, -9, -165, -180, nil, -177, -124, + -172, -209, -16, 32, 18, -84, 54, 17, 9, -79, + -42, -41, -118, -151, -22, -90, nil ] racc_goto_default = [ - nil, nil, nil, 169, 25, 28, 32, 35, 5, 6, + nil, nil, nil, 168, 25, 28, 32, 35, 5, 6, 10, 13, 15, 18, 20, 24, 27, 31, 34, 4, - nil, 100, nil, 80, 102, 104, 106, 109, 110, 114, - 96, 97, 8, nil, nil, nil, nil, 86, nil, 30, - nil, nil, 162, 242, 165, 166, nil, nil, 145, 108, - 111, 112, 67, 135, 99, 151, 152, nil, 251, 105, - nil, nil, nil, nil, 70, nil, nil, 303, 81, nil, + nil, 99, nil, 79, 101, 103, 105, 108, 109, 113, + 95, 96, 8, nil, nil, nil, nil, 85, nil, 30, + nil, nil, 161, 239, 164, 165, nil, nil, 144, 107, + 110, 111, 67, 134, 98, 150, 151, nil, 248, 104, + nil, nil, nil, nil, 69, nil, nil, 301, 80, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 57, - nil, nil, nil, nil, nil, nil, 195 ] + nil, nil, nil, nil, nil, nil, 192 ] racc_reduce_table = [ 0, 0, :racc_error, 1, 70, :_reduce_1, 1, 70, :_reduce_none, 1, 71, :_reduce_none, 2, 71, :_reduce_4, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 73, :_reduce_none, 3, 87, :_reduce_19, 3, 87, :_reduce_20, 1, 88, :_reduce_none, 1, 88, :_reduce_none, 1, 88, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 4, 81, :_reduce_28, 5, 81, :_reduce_29, 3, 81, :_reduce_30, 2, 81, :_reduce_31, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 3, 91, :_reduce_34, 3, 91, :_reduce_35, 1, 92, :_reduce_none, - 2, 92, :_reduce_37, 1, 92, :_reduce_none, 1, 92, :_reduce_none, 1, 92, :_reduce_none, 1, 92, :_reduce_none, 1, 92, :_reduce_none, 1, 92, :_reduce_none, 1, 92, :_reduce_none, - 1, 92, :_reduce_45, + 1, 92, :_reduce_44, + 5, 74, :_reduce_45, 5, 74, :_reduce_46, 5, 74, :_reduce_47, - 5, 74, :_reduce_48, - 5, 85, :_reduce_49, - 2, 75, :_reduce_50, - 1, 108, :_reduce_51, - 2, 108, :_reduce_52, - 6, 76, :_reduce_53, - 2, 76, :_reduce_54, + 5, 85, :_reduce_48, + 2, 75, :_reduce_49, + 1, 108, :_reduce_50, + 2, 108, :_reduce_51, + 6, 76, :_reduce_52, + 2, 76, :_reduce_53, + 3, 109, :_reduce_54, 3, 109, :_reduce_55, - 3, 109, :_reduce_56, 1, 110, :_reduce_none, 1, 110, :_reduce_none, - 3, 110, :_reduce_59, + 3, 110, :_reduce_58, 1, 111, :_reduce_none, - 3, 111, :_reduce_61, + 3, 111, :_reduce_60, + 1, 112, :_reduce_61, 1, 112, :_reduce_62, - 1, 112, :_reduce_63, + 3, 113, :_reduce_63, 3, 113, :_reduce_64, - 3, 113, :_reduce_65, 1, 114, :_reduce_none, 1, 114, :_reduce_none, - 4, 116, :_reduce_68, + 4, 116, :_reduce_67, 1, 102, :_reduce_none, - 3, 102, :_reduce_70, + 3, 102, :_reduce_69, 0, 103, :_reduce_none, 1, 103, :_reduce_none, - 1, 118, :_reduce_73, - 1, 93, :_reduce_74, - 1, 95, :_reduce_75, + 1, 118, :_reduce_72, + 1, 93, :_reduce_73, + 1, 95, :_reduce_74, 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, + 3, 77, :_reduce_82, 3, 77, :_reduce_83, - 3, 77, :_reduce_84, - 3, 86, :_reduce_85, - 0, 104, :_reduce_86, - 1, 104, :_reduce_87, - 3, 104, :_reduce_88, - 3, 122, :_reduce_89, - 3, 124, :_reduce_90, + 3, 86, :_reduce_84, + 0, 104, :_reduce_85, + 1, 104, :_reduce_86, + 3, 104, :_reduce_87, + 3, 122, :_reduce_88, + 3, 124, :_reduce_89, 1, 125, :_reduce_none, 1, 125, :_reduce_none, - 0, 107, :_reduce_93, - 1, 107, :_reduce_94, - 3, 107, :_reduce_95, + 0, 107, :_reduce_92, + 1, 107, :_reduce_93, + 3, 107, :_reduce_94, 1, 126, :_reduce_none, - 3, 126, :_reduce_97, + 3, 126, :_reduce_96, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 115, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, 1, 123, :_reduce_none, - 4, 97, :_reduce_116, - 3, 97, :_reduce_117, - 1, 99, :_reduce_118, - 2, 99, :_reduce_119, - 2, 129, :_reduce_120, - 1, 130, :_reduce_121, - 2, 130, :_reduce_122, - 1, 96, :_reduce_123, + 4, 97, :_reduce_115, + 3, 97, :_reduce_116, + 1, 99, :_reduce_117, + 2, 99, :_reduce_118, + 2, 129, :_reduce_119, + 1, 130, :_reduce_120, + 2, 130, :_reduce_121, + 1, 96, :_reduce_122, + 4, 90, :_reduce_123, 4, 90, :_reduce_124, - 4, 90, :_reduce_125, - 2, 79, :_reduce_126, - 5, 131, :_reduce_127, - 4, 131, :_reduce_128, + 2, 79, :_reduce_125, + 5, 131, :_reduce_126, + 4, 131, :_reduce_127, 0, 132, :_reduce_none, - 2, 132, :_reduce_130, - 4, 132, :_reduce_131, - 3, 132, :_reduce_132, + 2, 132, :_reduce_129, + 4, 132, :_reduce_130, + 3, 132, :_reduce_131, 1, 120, :_reduce_none, + 3, 120, :_reduce_133, 3, 120, :_reduce_134, 3, 120, :_reduce_135, 3, 120, :_reduce_136, 3, 120, :_reduce_137, 3, 120, :_reduce_138, 3, 120, :_reduce_139, 3, 120, :_reduce_140, 3, 120, :_reduce_141, - 3, 120, :_reduce_142, - 2, 120, :_reduce_143, + 2, 120, :_reduce_142, + 3, 120, :_reduce_143, 3, 120, :_reduce_144, 3, 120, :_reduce_145, 3, 120, :_reduce_146, 3, 120, :_reduce_147, 3, 120, :_reduce_148, - 3, 120, :_reduce_149, - 2, 120, :_reduce_150, + 2, 120, :_reduce_149, + 3, 120, :_reduce_150, 3, 120, :_reduce_151, 3, 120, :_reduce_152, - 3, 120, :_reduce_153, - 5, 78, :_reduce_154, + 5, 78, :_reduce_153, 1, 134, :_reduce_none, - 2, 134, :_reduce_156, - 5, 135, :_reduce_157, - 4, 135, :_reduce_158, + 2, 134, :_reduce_155, + 5, 135, :_reduce_156, + 4, 135, :_reduce_157, 1, 136, :_reduce_none, - 3, 136, :_reduce_160, - 3, 98, :_reduce_161, + 3, 136, :_reduce_159, + 3, 98, :_reduce_160, 1, 138, :_reduce_none, - 4, 138, :_reduce_163, + 4, 138, :_reduce_162, 1, 140, :_reduce_none, - 3, 140, :_reduce_165, - 3, 139, :_reduce_166, + 3, 140, :_reduce_164, + 3, 139, :_reduce_165, 1, 137, :_reduce_none, 1, 137, :_reduce_none, 1, 137, :_reduce_none, 1, 137, :_reduce_none, 1, 137, :_reduce_none, 1, 137, :_reduce_none, 1, 137, :_reduce_none, 1, 137, :_reduce_none, - 1, 137, :_reduce_175, + 1, 137, :_reduce_174, 1, 137, :_reduce_none, - 1, 141, :_reduce_177, + 1, 141, :_reduce_176, 1, 142, :_reduce_none, - 3, 142, :_reduce_179, - 2, 80, :_reduce_180, - 6, 82, :_reduce_181, - 5, 82, :_reduce_182, - 7, 83, :_reduce_183, - 6, 83, :_reduce_184, - 6, 84, :_reduce_185, - 5, 84, :_reduce_186, - 1, 106, :_reduce_187, + 3, 142, :_reduce_178, + 2, 80, :_reduce_179, + 6, 82, :_reduce_180, + 5, 82, :_reduce_181, + 7, 83, :_reduce_182, + 6, 83, :_reduce_183, + 6, 84, :_reduce_184, + 5, 84, :_reduce_185, + 1, 106, :_reduce_186, + 1, 101, :_reduce_187, 1, 101, :_reduce_188, 1, 101, :_reduce_189, - 1, 101, :_reduce_190, 1, 145, :_reduce_none, - 3, 145, :_reduce_192, - 1, 147, :_reduce_193, + 3, 145, :_reduce_191, + 1, 147, :_reduce_192, + 1, 148, :_reduce_193, 1, 148, :_reduce_194, 1, 148, :_reduce_195, - 1, 148, :_reduce_196, 1, 148, :_reduce_none, - 0, 72, :_reduce_198, - 0, 149, :_reduce_199, + 0, 72, :_reduce_197, + 0, 149, :_reduce_198, 1, 143, :_reduce_none, + 3, 143, :_reduce_200, 3, 143, :_reduce_201, - 3, 143, :_reduce_202, 1, 150, :_reduce_none, - 3, 150, :_reduce_204, - 3, 151, :_reduce_205, - 1, 151, :_reduce_206, - 3, 151, :_reduce_207, - 1, 151, :_reduce_208, + 3, 150, :_reduce_203, + 3, 151, :_reduce_204, + 1, 151, :_reduce_205, + 3, 151, :_reduce_206, + 1, 151, :_reduce_207, 1, 146, :_reduce_none, - 2, 146, :_reduce_210, + 2, 146, :_reduce_209, 1, 144, :_reduce_none, - 2, 144, :_reduce_212, + 2, 144, :_reduce_211, 1, 152, :_reduce_none, 1, 152, :_reduce_none, - 1, 94, :_reduce_215, - 3, 119, :_reduce_216, - 4, 119, :_reduce_217, - 2, 119, :_reduce_218, + 1, 94, :_reduce_214, + 3, 119, :_reduce_215, + 4, 119, :_reduce_216, + 2, 119, :_reduce_217, 1, 127, :_reduce_none, 1, 127, :_reduce_none, 0, 105, :_reduce_none, - 1, 105, :_reduce_222, - 1, 133, :_reduce_223, - 3, 128, :_reduce_224, - 4, 128, :_reduce_225, - 2, 128, :_reduce_226, + 1, 105, :_reduce_221, + 1, 133, :_reduce_222, + 3, 128, :_reduce_223, + 4, 128, :_reduce_224, + 2, 128, :_reduce_225, 1, 153, :_reduce_none, - 3, 153, :_reduce_228, - 3, 154, :_reduce_229, + 3, 153, :_reduce_227, + 3, 154, :_reduce_228, + 1, 155, :_reduce_229, 1, 155, :_reduce_230, - 1, 155, :_reduce_231, - 4, 121, :_reduce_232, + 4, 121, :_reduce_231, 1, 100, :_reduce_none, - 4, 100, :_reduce_234 ] + 4, 100, :_reduce_233 ] -racc_reduce_n = 235 +racc_reduce_n = 234 -racc_shift_n = 387 +racc_shift_n = 385 racc_token_table = { false => 0, :error => 1, :STRING => 2, :DQPRE => 3, :DQMID => 4, :DQPOST => 5, :LBRACK => 6, :RBRACK => 7, :LBRACE => 8, :RBRACE => 9, :SYMBOL => 10, :FARROW => 11, :COMMA => 12, :TRUE => 13, :FALSE => 14, :EQUALS => 15, :APPENDS => 16, :LESSEQUAL => 17, :NOTEQUAL => 18, :DOT => 19, :COLON => 20, :LLCOLLECT => 21, :RRCOLLECT => 22, :QMARK => 23, :LPAREN => 24, :RPAREN => 25, :ISEQUAL => 26, :GREATEREQUAL => 27, :GREATERTHAN => 28, :LESSTHAN => 29, :IF => 30, :ELSE => 31, :IMPORT => 32, :DEFINE => 33, :ELSIF => 34, :VARIABLE => 35, :CLASS => 36, :INHERITS => 37, :NODE => 38, :BOOLEAN => 39, :NAME => 40, :SEMIC => 41, :CASE => 42, :DEFAULT => 43, :AT => 44, :LCOLLECT => 45, :RCOLLECT => 46, :CLASSNAME => 47, :CLASSREF => 48, :NOT => 49, :OR => 50, :AND => 51, :UNDEF => 52, :PARROW => 53, :PLUS => 54, :MINUS => 55, :TIMES => 56, :DIV => 57, :LSHIFT => 58, :RSHIFT => 59, :UMINUS => 60, :MATCH => 61, :NOMATCH => 62, :REGEX => 63, :IN_EDGE => 64, :OUT_EDGE => 65, :IN_EDGE_SUB => 66, :OUT_EDGE_SUB => 67, :IN => 68 } racc_nt_base = 69 racc_use_result_var = true 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", "STRING", "DQPRE", "DQMID", "DQPOST", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "SYMBOL", "FARROW", "COMMA", "TRUE", "FALSE", "EQUALS", "APPENDS", "LESSEQUAL", "NOTEQUAL", "DOT", "COLON", "LLCOLLECT", "RRCOLLECT", "QMARK", "LPAREN", "RPAREN", "ISEQUAL", "GREATEREQUAL", "GREATERTHAN", "LESSTHAN", "IF", "ELSE", "IMPORT", "DEFINE", "ELSIF", "VARIABLE", "CLASS", "INHERITS", "NODE", "BOOLEAN", "NAME", "SEMIC", "CASE", "DEFAULT", "AT", "LCOLLECT", "RCOLLECT", "CLASSNAME", "CLASSREF", "NOT", "OR", "AND", "UNDEF", "PARROW", "PLUS", "MINUS", "TIMES", "DIV", "LSHIFT", "RSHIFT", "UMINUS", "MATCH", "NOMATCH", "REGEX", "IN_EDGE", "OUT_EDGE", "IN_EDGE_SUB", "OUT_EDGE_SUB", "IN", "$start", "program", "statements", "nil", "statement", "resource", "virtualresource", "collection", "assignment", "casestatement", "ifstatement_begin", "import", "fstatement", "definition", "hostclass", "nodedef", "resourceoverride", "append", "relationship", "relationship_side", "edge", "resourceref", "funcvalues", "namestring", "name", "variable", "type", "boolean", "funcrvalue", "selector", "quotedtext", "hasharrayaccesses", "classname", "resourceinstances", "endsemi", "params", "endcomma", "classref", "anyparams", "at", "collectrhand", "collstatements", "collstatement", "colljoin", "collexpr", "colllval", "simplervalue", "resourceinst", "resourcename", "undef", "array", "expression", "hasharrayaccess", "param", "rvalue", "addparam", "anyparam", "rvalues", "comma", "hash", "dqrval", "dqtail", "ifstatement", "else", "regex", "caseopts", "caseopt", "casevalues", "selectlhand", "svalues", "selectval", "sintvalues", "string", "strings", "argumentlist", "classparent", "hostnames", "nodeparent", "nodename", "hostname", "nothing", "arguments", "argument", "classnameordefault", "hashpairs", "hashpair", "key" ] Racc_debug_parser = false ##### State transition tables end ##### # reduce 0 omitted module_eval(<<'.,.,', 'grammar.ra', 31) 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', 50) 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 # reduce 18 omitted module_eval(<<'.,.,', 'grammar.ra', 80) def _reduce_19(val, _values, result) result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) result end .,., module_eval(<<'.,.,', 'grammar.ra', 83) def _reduce_20(val, _values, result) result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context) result end .,., # reduce 21 omitted # reduce 22 omitted # reduce 23 omitted # reduce 24 omitted # reduce 25 omitted # reduce 26 omitted # reduce 27 omitted module_eval(<<'.,.,', 'grammar.ra', 91) def _reduce_28(val, _values, result) args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => args, :ftype => :statement result end .,., module_eval(<<'.,.,', 'grammar.ra', 99) def _reduce_29(val, _values, result) args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => args, :ftype => :statement result end .,., module_eval(<<'.,.,', 'grammar.ra', 106) def _reduce_30(val, _values, result) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), :ftype => :statement result end .,., module_eval(<<'.,.,', 'grammar.ra', 113) def _reduce_31(val, _values, result) args = aryfy(val[1]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => args, :ftype => :statement result end .,., # reduce 32 omitted # reduce 33 omitted module_eval(<<'.,.,', 'grammar.ra', 124) def _reduce_34(val, _values, result) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., module_eval(<<'.,.,', 'grammar.ra', 129) def _reduce_35(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 36 omitted -module_eval(<<'.,.,', 'grammar.ra', 142) - def _reduce_37(val, _values, result) - result = ast AST::Minus, :value => val[1] - - result - end -.,., +# reduce 37 omitted # reduce 38 omitted # reduce 39 omitted # reduce 40 omitted # reduce 41 omitted # reduce 42 omitted # reduce 43 omitted -# reduce 44 omitted - -module_eval(<<'.,.,', 'grammar.ra', 152) - def _reduce_45(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 149) + def _reduce_44(val, _values, result) result = ast AST::Name, :value => val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 156) - def _reduce_46(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 153) + def _reduce_45(val, _values, result) @lexer.commentpop array = val[2] array = [array] if array.instance_of?(AST::ResourceInstance) result = ast AST::ASTArray # this iterates across each specified resourceinstance array.each { |instance| raise Puppet::Dev, "Got something that isn't an instance" unless instance.instance_of?(AST::ResourceInstance) # now, i need to somehow differentiate between those things with # arrays in their names, and normal things result.push ast( AST::Resource, :type => val[0], :title => instance[0], :parameters => instance[1]) } result end .,., -module_eval(<<'.,.,', 'grammar.ra', 175) - def _reduce_47(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 172) + def _reduce_46(val, _values, result) # This is a deprecated syntax. error "All resource specifications require names" result end .,., -module_eval(<<'.,.,', 'grammar.ra', 178) - def _reduce_48(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 175) + def _reduce_47(val, _values, result) # a defaults setting for a type @lexer.commentpop result = ast(AST::ResourceDefaults, :type => val[0], :parameters => val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.ra', 185) - def _reduce_49(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 182) + def _reduce_48(val, _values, result) @lexer.commentpop result = ast AST::ResourceOverride, :object => val[0], :parameters => val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 192) - def _reduce_50(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 189) + def _reduce_49(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 error "Defaults are not virtualizable" if val[1].is_a? AST::ResourceDefaults 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', 214) - def _reduce_51(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 211) + def _reduce_50(val, _values, result) result = :virtual result end .,., -module_eval(<<'.,.,', 'grammar.ra', 215) - def _reduce_52(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 212) + def _reduce_51(val, _values, result) result = :exported result end .,., -module_eval(<<'.,.,', 'grammar.ra', 220) - def _reduce_53(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 217) + def _reduce_52(val, _values, result) @lexer.commentpop Puppet.warning addcontext("Collection names must now be capitalized") if val[0] =~ /^[a-z]/ type = val[0].downcase args = {:type => type} 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', 239) - def _reduce_54(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 236) + def _reduce_53(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', 260) - def _reduce_55(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 257) + def _reduce_54(val, _values, result) if val[1] result = val[1] result.form = :virtual else result = :virtual end result end .,., -module_eval(<<'.,.,', 'grammar.ra', 268) - def _reduce_56(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 265) + def _reduce_55(val, _values, result) if val[1] result = val[1] result.form = :exported else result = :exported end result end .,., -# reduce 57 omitted +# reduce 56 omitted -# reduce 58 omitted +# reduce 57 omitted -module_eval(<<'.,.,', 'grammar.ra', 281) - def _reduce_59(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 278) + def _reduce_58(val, _values, result) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] result end .,., -# reduce 60 omitted +# reduce 59 omitted -module_eval(<<'.,.,', 'grammar.ra', 286) - def _reduce_61(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 283) + def _reduce_60(val, _values, result) result = val[1] result.parens = true result end .,., -module_eval(<<'.,.,', 'grammar.ra', 290) - def _reduce_62(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 287) + def _reduce_61(val, _values, result) result=val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 291) - def _reduce_63(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 288) + def _reduce_62(val, _values, result) result=val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 294) - def _reduce_64(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 291) + def _reduce_63(val, _values, result) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] #result = ast AST::CollExpr #result.push *val result end .,., -module_eval(<<'.,.,', 'grammar.ra', 299) - def _reduce_65(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 296) + def _reduce_64(val, _values, result) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2] #result = ast AST::CollExpr #result.push *val result end .,., -# reduce 66 omitted +# reduce 65 omitted -# reduce 67 omitted +# reduce 66 omitted -module_eval(<<'.,.,', 'grammar.ra', 308) - def _reduce_68(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 305) + def _reduce_67(val, _values, result) result = ast AST::ResourceInstance, :children => [val[0],val[2]] result end .,., -# reduce 69 omitted +# reduce 68 omitted -module_eval(<<'.,.,', 'grammar.ra', 313) - def _reduce_70(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 310) + def _reduce_69(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 71 omitted +# reduce 70 omitted -# reduce 72 omitted +# reduce 71 omitted -module_eval(<<'.,.,', 'grammar.ra', 325) - def _reduce_73(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 322) + def _reduce_72(val, _values, result) result = ast AST::Undef, :value => :undef result end .,., -module_eval(<<'.,.,', 'grammar.ra', 329) - def _reduce_74(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 326) + def _reduce_73(val, _values, result) result = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 333) - def _reduce_75(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 330) + def _reduce_74(val, _values, result) result = ast AST::Type, :value => val[0][:value], :line => val[0][:line] result end .,., +# reduce 75 omitted + # reduce 76 omitted # reduce 77 omitted # reduce 78 omitted # reduce 79 omitted # reduce 80 omitted # reduce 81 omitted -# reduce 82 omitted - -module_eval(<<'.,.,', 'grammar.ra', 345) - def _reduce_83(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 342) + def _reduce_82(val, _values, result) raise Puppet::ParseError, "Cannot assign to variables in other namespaces" if val[0][:value] =~ /::/ # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 351) - def _reduce_84(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 348) + def _reduce_83(val, _values, result) result = ast AST::VarDef, :name => val[0], :value => val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 355) - def _reduce_85(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 352) + def _reduce_84(val, _values, result) variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line] result = ast AST::VarDef, :name => variable, :value => val[2], :append => true, :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 361) - def _reduce_86(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 358) + def _reduce_85(val, _values, result) result = ast AST::ASTArray result end .,., -module_eval(<<'.,.,', 'grammar.ra', 363) - def _reduce_87(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 360) + def _reduce_86(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 365) - def _reduce_88(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 362) + def _reduce_87(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', 374) - def _reduce_89(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 371) + def _reduce_88(val, _values, result) result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 378) - def _reduce_90(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 375) + def _reduce_89(val, _values, result) result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2], :add => true result end .,., -# reduce 91 omitted +# reduce 90 omitted -# reduce 92 omitted +# reduce 91 omitted -module_eval(<<'.,.,', 'grammar.ra', 387) - def _reduce_93(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 384) + def _reduce_92(val, _values, result) result = ast AST::ASTArray result end .,., -module_eval(<<'.,.,', 'grammar.ra', 389) - def _reduce_94(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 386) + def _reduce_93(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 391) - def _reduce_95(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 388) + def _reduce_94(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 96 omitted +# reduce 95 omitted -module_eval(<<'.,.,', 'grammar.ra', 401) - def _reduce_97(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 398) + def _reduce_96(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 97 omitted + # reduce 98 omitted # reduce 99 omitted # reduce 100 omitted # reduce 101 omitted # reduce 102 omitted # reduce 103 omitted # reduce 104 omitted # reduce 105 omitted # reduce 106 omitted # reduce 107 omitted # reduce 108 omitted # reduce 109 omitted # reduce 110 omitted # reduce 111 omitted # reduce 112 omitted # reduce 113 omitted # reduce 114 omitted -# reduce 115 omitted - -module_eval(<<'.,.,', 'grammar.ra', 430) - def _reduce_116(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 427) + def _reduce_115(val, _values, result) args = aryfy(val[2]) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => args, :ftype => :rvalue result end .,., -module_eval(<<'.,.,', 'grammar.ra', 436) - def _reduce_117(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 433) + def _reduce_116(val, _values, result) result = ast AST::Function, :name => val[0][:value], :line => val[0][:line], :arguments => AST::ASTArray.new({}), :ftype => :rvalue result end .,., -module_eval(<<'.,.,', 'grammar.ra', 442) - def _reduce_118(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 439) + def _reduce_117(val, _values, result) result = ast AST::String, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 443) - def _reduce_119(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 440) + def _reduce_118(val, _values, result) result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 445) - def _reduce_120(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 442) + def _reduce_119(val, _values, result) result = [val[0]] + val[1] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 447) - def _reduce_121(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 444) + def _reduce_120(val, _values, result) result = [ast(AST::String,val[0])] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 448) - def _reduce_122(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 445) + def _reduce_121(val, _values, result) result = [ast(AST::String,val[0])] + val[1] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 451) - def _reduce_123(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 448) + def _reduce_122(val, _values, result) result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 455) - def _reduce_124(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 452) + def _reduce_123(val, _values, result) Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceReference, :type => val[0][:value], :line => val[0][:line], :title => val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 458) - def _reduce_125(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 455) + def _reduce_124(val, _values, result) result = ast AST::ResourceReference, :type => val[0], :title => val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 462) - def _reduce_126(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 459) + def _reduce_125(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 466) - def _reduce_127(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 463) + def _reduce_126(val, _values, result) @lexer.commentpop args = { :test => val[0], :statements => val[2] } args[:else] = val[4] if val[4] result = ast AST::IfStatement, args result end .,., -module_eval(<<'.,.,', 'grammar.ra', 477) - def _reduce_128(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 474) + def _reduce_127(val, _values, result) @lexer.commentpop args = { :test => val[0], :statements => ast(AST::Nop) } args[:else] = val[3] if val[3] result = ast AST::IfStatement, args result end .,., -# reduce 129 omitted +# reduce 128 omitted -module_eval(<<'.,.,', 'grammar.ra', 490) - def _reduce_130(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 487) + def _reduce_129(val, _values, result) result = ast AST::Else, :statements => val[1] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 493) - def _reduce_131(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 490) + def _reduce_130(val, _values, result) @lexer.commentpop result = ast AST::Else, :statements => val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 497) - def _reduce_132(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 494) + def _reduce_131(val, _values, result) @lexer.commentpop result = ast AST::Else, :statements => ast(AST::Nop) result end .,., -# reduce 133 omitted +# reduce 132 omitted + +module_eval(<<'.,.,', 'grammar.ra', 512) + def _reduce_133(val, _values, result) + result = ast AST::InOperator, :lval => val[0], :rval => val[2] + + result + end +.,., module_eval(<<'.,.,', 'grammar.ra', 515) def _reduce_134(val, _values, result) - result = ast AST::InOperator, :lval => val[0], :rval => val[2] + result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 518) def _reduce_135(val, _values, result) result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 521) def _reduce_136(val, _values, result) - result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 524) def _reduce_137(val, _values, result) result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 527) def _reduce_138(val, _values, result) result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 530) def _reduce_139(val, _values, result) result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 533) def _reduce_140(val, _values, result) result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 536) def _reduce_141(val, _values, result) result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 539) def _reduce_142(val, _values, result) - result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result = ast AST::Minus, :value => val[1] result end .,., module_eval(<<'.,.,', 'grammar.ra', 542) def _reduce_143(val, _values, result) - result = ast AST::Minus, :value => val[1] + result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 545) def _reduce_144(val, _values, result) result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 548) def _reduce_145(val, _values, result) result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 551) def _reduce_146(val, _values, result) result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 554) def _reduce_147(val, _values, result) result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 557) def _reduce_148(val, _values, result) result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 560) def _reduce_149(val, _values, result) - result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] + result = ast AST::Not, :value => val[1] result end .,., module_eval(<<'.,.,', 'grammar.ra', 563) def _reduce_150(val, _values, result) - result = ast AST::Not, :value => val[1] + result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 566) def _reduce_151(val, _values, result) result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] result end .,., module_eval(<<'.,.,', 'grammar.ra', 569) def _reduce_152(val, _values, result) - result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'grammar.ra', 572) - def _reduce_153(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 576) - def _reduce_154(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 573) + def _reduce_153(val, _values, result) @lexer.commentpop options = val[3] options = ast AST::ASTArray, :children => [val[3]] unless options.instance_of?(AST::ASTArray) result = ast AST::CaseStatement, :test => val[1], :options => options result end .,., -# reduce 155 omitted +# reduce 154 omitted -module_eval(<<'.,.,', 'grammar.ra', 584) - def _reduce_156(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 581) + def _reduce_155(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', 593) - def _reduce_157(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 590) + def _reduce_156(val, _values, result) @lexer.commentpop result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 596) - def _reduce_158(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 593) + def _reduce_157(val, _values, result) @lexer.commentpop result = ast( AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) ) result end .,., -# reduce 159 omitted +# reduce 158 omitted -module_eval(<<'.,.,', 'grammar.ra', 608) - def _reduce_160(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 605) + def _reduce_159(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', 617) - def _reduce_161(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 614) + def _reduce_160(val, _values, result) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., -# reduce 162 omitted +# reduce 161 omitted -module_eval(<<'.,.,', 'grammar.ra', 622) - def _reduce_163(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 619) + def _reduce_162(val, _values, result) @lexer.commentpop result = val[1] result end .,., -# reduce 164 omitted +# reduce 163 omitted -module_eval(<<'.,.,', 'grammar.ra', 628) - def _reduce_165(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 625) + def _reduce_164(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', 637) - def _reduce_166(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 634) + def _reduce_165(val, _values, result) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., +# reduce 166 omitted + # reduce 167 omitted # reduce 168 omitted # reduce 169 omitted # reduce 170 omitted # reduce 171 omitted # reduce 172 omitted # reduce 173 omitted -# reduce 174 omitted - -module_eval(<<'.,.,', 'grammar.ra', 649) - def _reduce_175(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 646) + def _reduce_174(val, _values, result) result = ast AST::Default, :value => val[0][:value], :line => val[0][:line] result end .,., -# reduce 176 omitted +# reduce 175 omitted -module_eval(<<'.,.,', 'grammar.ra', 654) - def _reduce_177(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 651) + def _reduce_176(val, _values, result) result = [val[0][:value]] result end .,., -# reduce 178 omitted +# reduce 177 omitted -module_eval(<<'.,.,', 'grammar.ra', 656) - def _reduce_179(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 653) + def _reduce_178(val, _values, result) result = val[0] += val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 659) - def _reduce_180(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 656) + def _reduce_179(val, _values, result) val[1].each do |file| import(file) end result = AST::ASTArray.new(:children => []) result end .,., -module_eval(<<'.,.,', 'grammar.ra', 669) - def _reduce_181(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 666) + def _reduce_180(val, _values, result) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :code => val[4], :line => val[0][:line] @lexer.indefine = false result = nil #} | DEFINE NAME argumentlist parent LBRACE RBRACE { result end .,., -module_eval(<<'.,.,', 'grammar.ra', 676) - def _reduce_182(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 673) + def _reduce_181(val, _values, result) @lexer.commentpop newdefine classname(val[1]), :arguments => val[2], :line => val[0][:line] @lexer.indefine = false result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 684) - def _reduce_183(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 681) + def _reduce_182(val, _values, result) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :arguments => val[2], :parent => val[3], :code => val[5], :line => val[0][:line] result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 690) - def _reduce_184(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 687) + def _reduce_183(val, _values, result) @lexer.commentpop # Our class gets defined in the parent namespace, not our own. @lexer.namepop newclass classname(val[1]), :arguments => val[2], :parent => val[3], :line => val[0][:line] result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 698) - def _reduce_185(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 695) + def _reduce_184(val, _values, result) @lexer.commentpop newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line] result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 702) - def _reduce_186(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 699) + def _reduce_185(val, _values, result) @lexer.commentpop newnode val[1], :parent => val[2], :line => val[0][:line] result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 707) - def _reduce_187(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 704) + def _reduce_186(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 709) - def _reduce_188(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 706) + def _reduce_187(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 710) - def _reduce_189(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 707) + def _reduce_188(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 711) - def _reduce_190(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 708) + def _reduce_189(val, _values, result) result = "class" result end .,., -# reduce 191 omitted +# reduce 190 omitted -module_eval(<<'.,.,', 'grammar.ra', 717) - def _reduce_192(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 714) + def _reduce_191(val, _values, result) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 723) - def _reduce_193(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 720) + def _reduce_192(val, _values, result) result = ast AST::HostName, :value => val[0] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 726) - def _reduce_194(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 723) + def _reduce_193(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 727) - def _reduce_195(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 724) + def _reduce_194(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 728) - def _reduce_196(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 725) + def _reduce_195(val, _values, result) result = val[0][:value] result end .,., -# reduce 197 omitted +# reduce 196 omitted -module_eval(<<'.,.,', 'grammar.ra', 732) - def _reduce_198(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 729) + def _reduce_197(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 736) - def _reduce_199(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 733) + def _reduce_198(val, _values, result) result = ast AST::ASTArray, :children => [] result end .,., -# reduce 200 omitted +# reduce 199 omitted -module_eval(<<'.,.,', 'grammar.ra', 741) - def _reduce_201(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 738) + def _reduce_200(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 744) - def _reduce_202(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 741) + def _reduce_201(val, _values, result) result = val[1] result = [result] unless result[0].is_a?(Array) result end .,., -# reduce 203 omitted +# reduce 202 omitted -module_eval(<<'.,.,', 'grammar.ra', 750) - def _reduce_204(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 747) + def _reduce_203(val, _values, result) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 756) - def _reduce_205(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 753) + def _reduce_204(val, _values, result) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 760) - def _reduce_206(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 757) + def _reduce_205(val, _values, result) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0][:value]] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 763) - def _reduce_207(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 760) + def _reduce_206(val, _values, result) result = [val[0][:value], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 765) - def _reduce_208(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 762) + def _reduce_207(val, _values, result) result = [val[0][:value]] result end .,., -# reduce 209 omitted +# reduce 208 omitted -module_eval(<<'.,.,', 'grammar.ra', 770) - def _reduce_210(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 767) + def _reduce_209(val, _values, result) result = val[1] result end .,., -# reduce 211 omitted +# reduce 210 omitted -module_eval(<<'.,.,', 'grammar.ra', 775) - def _reduce_212(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 772) + def _reduce_211(val, _values, result) result = val[1] result end .,., -# reduce 213 omitted +# reduce 212 omitted -# reduce 214 omitted +# reduce 213 omitted -module_eval(<<'.,.,', 'grammar.ra', 781) - def _reduce_215(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 778) + def _reduce_214(val, _values, result) result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 785) - def _reduce_216(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 782) + def _reduce_215(val, _values, result) if val[1].instance_of?(AST::ASTArray) result = val[1] else result = ast AST::ASTArray, :children => [val[1]] end result end .,., -module_eval(<<'.,.,', 'grammar.ra', 792) - def _reduce_217(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 789) + def _reduce_216(val, _values, result) if val[1].instance_of?(AST::ASTArray) result = val[1] else result = ast AST::ASTArray, :children => [val[1]] end result end .,., -module_eval(<<'.,.,', 'grammar.ra', 798) - def _reduce_218(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 795) + def _reduce_217(val, _values, result) result = ast AST::ASTArray result end .,., +# reduce 218 omitted + # reduce 219 omitted # reduce 220 omitted -# reduce 221 omitted - -module_eval(<<'.,.,', 'grammar.ra', 805) - def _reduce_222(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 802) + def _reduce_221(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.ra', 808) - def _reduce_223(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 805) + def _reduce_222(val, _values, result) result = ast AST::Regex, :value => val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 812) - def _reduce_224(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 809) + def _reduce_223(val, _values, result) if val[1].instance_of?(AST::ASTHash) result = val[1] else result = ast AST::ASTHash, { :value => val[1] } end result end .,., -module_eval(<<'.,.,', 'grammar.ra', 819) - def _reduce_225(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 816) + def _reduce_224(val, _values, result) if val[1].instance_of?(AST::ASTHash) result = val[1] else result = ast AST::ASTHash, { :value => val[1] } end result end .,., -module_eval(<<'.,.,', 'grammar.ra', 825) - def _reduce_226(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 822) + def _reduce_225(val, _values, result) result = ast AST::ASTHash result end .,., -# reduce 227 omitted +# reduce 226 omitted -module_eval(<<'.,.,', 'grammar.ra', 830) - def _reduce_228(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 827) + def _reduce_227(val, _values, result) if val[0].instance_of?(AST::ASTHash) result = val[0].merge(val[2]) else result = ast AST::ASTHash, :value => val[0] result.merge(val[2]) end result end .,., -module_eval(<<'.,.,', 'grammar.ra', 839) - def _reduce_229(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 836) + def _reduce_228(val, _values, result) result = ast AST::ASTHash, { :value => { val[0] => val[2] } } result end .,., -module_eval(<<'.,.,', 'grammar.ra', 842) - def _reduce_230(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 839) + def _reduce_229(val, _values, result) result = val[0][:value] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 843) - def _reduce_231(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 840) + def _reduce_230(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.ra', 846) - def _reduce_232(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 843) + def _reduce_231(val, _values, result) result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2] result end .,., -# reduce 233 omitted +# reduce 232 omitted -module_eval(<<'.,.,', 'grammar.ra', 851) - def _reduce_234(val, _values, result) +module_eval(<<'.,.,', 'grammar.ra', 848) + def _reduce_233(val, _values, result) result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2] result end .,., def _reduce_none(val, _values, result) val[0] end end # class Parser end # module Parser end # module Puppet diff --git a/spec/integration/parser/parser_spec.rb b/spec/integration/parser/parser_spec.rb index 000e68dd8..20d87c228 100755 --- a/spec/integration/parser/parser_spec.rb +++ b/spec/integration/parser/parser_spec.rb @@ -1,133 +1,120 @@ #!/usr/bin/env ruby require File.dirname(__FILE__) + '/../../spec_helper' describe Puppet::Parser::Parser do module ParseMatcher class ParseAs def initialize(klass) @parser = Puppet::Parser::Parser.new "development" @class = klass end def result_instance @result.hostclass("").code[0] end def matches?(string) @string = string @result = @parser.parse(string) result_instance.instance_of?(@class) end def description "parse as a #{@class}" end def failure_message " expected #{@string} to parse as #{@class} but was #{result_instance.class}" end def negative_failure_message " expected #{@string} not to parse as #{@class}" end end def parse_as(klass) ParseAs.new(klass) end class ParseWith def initialize(block) @parser = Puppet::Parser::Parser.new "development" @block = block end def result_instance @result.hostclass("").code[0] end def matches?(string) @string = string @result = @parser.parse(string) @block.call(result_instance) end def description "parse with the block evaluating to true" end def failure_message " expected #{@string} to parse with a true result in the block" end def negative_failure_message " expected #{@string} not to parse with a true result in the block" end end def parse_with(&block) ParseWith.new(block) end end include ParseMatcher before :each do @resource_type_collection = Puppet::Resource::TypeCollection.new("env") @parser = Puppet::Parser::Parser.new "development" end describe "when parsing comments before statement" do it "should associate the documentation to the statement AST node" do ast = @parser.parse(""" # comment class test {} """) ast.hostclass("test").doc.should == "comment\n" end end describe "when parsing" do it "should be able to parse normal left to right relationships" do "Notify[foo] -> Notify[bar]".should parse_as(Puppet::Parser::AST::Relationship) end it "should be able to parse right to left relationships" do "Notify[foo] <- Notify[bar]".should parse_as(Puppet::Parser::AST::Relationship) end it "should be able to parse normal left to right subscriptions" do "Notify[foo] ~> Notify[bar]".should parse_as(Puppet::Parser::AST::Relationship) end it "should be able to parse right to left subscriptions" do "Notify[foo] <~ Notify[bar]".should parse_as(Puppet::Parser::AST::Relationship) end it "should correctly set the arrow type of a relationship" do "Notify[foo] <~ Notify[bar]".should parse_with { |rel| rel.arrow == "<~" } end it "should be able to parse deep hash access" do %q{ $hash = { 'a' => { 'b' => { 'c' => 'it works' } } } $out = $hash['a']['b']['c'] }.should parse_with { |v| v.value.is_a?(Puppet::Parser::AST::ASTHash) } end - - it "should be able to pass numbers to functions" do - %q{ - my_function(1) - }.should parse_as(Puppet::Parser::AST::Function) - end - - it "should be able to pass negative numbers to functions" do - %q{ - my_function(-1) - }.should parse_as(Puppet::Parser::AST::Function) - end - end end