diff options
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r-- | lib/puppet/parser/functions.rb | 56 | ||||
-rw-r--r-- | lib/puppet/parser/grammar.ra | 205 | ||||
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 12 | ||||
-rw-r--r-- | lib/puppet/parser/lexer.rb | 1 | ||||
-rw-r--r-- | lib/puppet/parser/parser.rb | 1045 |
5 files changed, 765 insertions, 554 deletions
diff --git a/lib/puppet/parser/functions.rb b/lib/puppet/parser/functions.rb index 9292e43f5..de5545cfc 100644 --- a/lib/puppet/parser/functions.rb +++ b/lib/puppet/parser/functions.rb @@ -155,6 +155,62 @@ module Functions end end.join("") end + + newfunction(:import, :statement) do |vals| + result = AST::ASTArray.new({}) + + files = [] + + # Collect all of our files + vals.each do |pat| + # We can't interpolate at this point since we don't have any + # scopes set up. Warn the user if they use a variable reference + tmp = nil + if pat =~ /[*{}\[\]?\\]/ + tmp = Puppet::Parser::Parser.glob(pat) + else + tmp = Puppet::Parser::Parser.find(pat) + if tmp + tmp = [tmp] + else + tmp = [] + end + end + + if tmp.size == 0 + raise Puppet::ImportError.new("No file(s) found for import " + + "of '#{pat}'") + end + + files += tmp + end + + files.each do |file| + parser = Puppet::Parser::Parser.new() + debug("importing '%s'" % file) + + unless file =~ /^#{File::SEPARATOR}/ + file = File.join(dir, file) + end + begin + parser.file = file + rescue Puppet::ImportError + Puppet.warning( + "Importing %s would result in an import loop" % + File.join(file) + ) + next + end + # push the results into the main result array + # We always return an array when we parse. + parser.parse.each do |child| + result.push child + end + end + + # Now that we have the entire result, evaluate it, since it's code + return result.safeevaluate(:scope => self) + end end end diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra index c4883deef..6e6ac430b 100644 --- a/lib/puppet/parser/grammar.ra +++ b/lib/puppet/parser/grammar.ra @@ -41,7 +41,7 @@ statement: object | assignment | casestatement | ifstatement - | import +# | import | fstatement | definition | hostclass @@ -346,62 +346,9 @@ selectlhand: name result = ast AST::Default, :value => val[0] } -import: IMPORT quotedtext { - # importing files - # yuk, i hate keywords - # we'll probably have to have some kind of search path eventually - # but for now, just use a path relative to the file doing the importing - dir = @lexer.file.sub(%r{[^/]+$},'').sub(/\/$/, '') - if dir == "" - dir = "." - end - result = ast AST::ASTArray - - Dir.chdir(dir) { - # We can't interpolate at this point since we don't have any - # scopes set up. Warn the user if they use a variable reference - pat = val[1].value - if pat.index("$") - Puppet.warning( - "The import of #{pat} contains a variable reference;" + - " variables are not interpolated for imports " + - "in file #{@lexer.file} at line #{@lexer.line}" - ) - end - files = Dir.glob(pat) - if files.size == 0 - files = Dir.glob(pat + ".pp") - if files.size == 0 - raise Puppet::ImportError.new("No file(s) found for import " + - "of '#{pat}'") - end - end - - files.each { |file| - parser = Puppet::Parser::Parser.new() - parser.files = self.files - Puppet.debug("importing '%s'" % file) - - unless file =~ /^#{File::SEPARATOR}/ - file = File.join(dir, file) - end - begin - parser.file = file - rescue Puppet::ImportError - Puppet.warning( - "Importing %s would result in an import loop" % - File.join(dir, file) - ) - next - end - # push the results into the main result array - # We always return an array when we parse. - parser.parse.each do |child| - result.push child - end - } - } -} +#import: IMPORT quotedtext { +# result = import(val[1].value) +#} # Disable definition inheritance for now. 8/27/06, luke #definition: DEFINE NAME argumentlist parent LBRACE statements RBRACE { @@ -593,9 +540,16 @@ require 'puppet/parser/ast' module Puppet class ParseError < Puppet::Error; end - class ImportError < Racc::ParseError; end + class ImportError < ParseError; end end +Puppet.config.setdefaults(:puppet, + :lib => ["", "Puppet's search path, where Puppet will search for files to be + imported. Can be expanded by setting PUPPETLIB in your environment. + Values should be colon-separated. Any manifest you specify on the command + line has its directory automatically added to the search path."] +) + Puppet[:typecheck] = true Puppet[:paramcheck] = true @@ -605,6 +559,72 @@ require 'puppet/parser/functions' attr_reader :file attr_accessor :files +# Figure out if the file exists, and whether we need to tack a '.pp' onto it. +def self.filecheck(path) + if File.exists?(path) + return path + elsif File.exists?(path + ".pp") + return path + ".pp" + else + return nil + end +end + +# Find a file in our search path. +def self.find(file) + if file =~ /^#{File::SEPARATOR}/ + return filecheck(file) + end + + libsetup unless Puppet[:lib].is_a? Array + + Puppet[:lib].each do |dir| + if val = filecheck(File.join(dir, file)) + return val + end + end + + return nil +end + +# Find all files matching a given glob, anywhere in the search path. +def self.glob(pattern) + self.libsetup unless Puppet[:lib].is_a? Array + + if pattern =~ /^#{File::SEPARATOR}/ + return Dir.glob(pattern).find_all do |f| + File.file?(f) + end + end + files = [] + + Puppet[:lib].each do |dir| + if File.directory?(dir) + Dir.glob(File.join(dir, pattern)).find_all do |f| + files << f if File.file?(f) + end + end + end + + return files +end + +# Convert our external lib directories as appropriate. +def self.libsetup + if Puppet[:lib].is_a? String + dirs = [] + if Puppet[:lib] != "" + dirs += Puppet[:lib].split(":") + end + Puppet[:lib] = dirs + end + + if ENV["PUPPETLIB"] + Puppet[:lib] += ENV["PUPPETLIB"].split(":") + ENV["PUPPETLIB"] = nil + end +end + # Create an AST array out of all of the args def aryfy(*args) if args[0].instance_of?(AST::ASTArray) @@ -636,15 +656,13 @@ def ast(klass, hash = nil) return klass.new(hash) end +# Specify the file to parse. Basically gets passed through to the lexer. def file=(file) - unless FileTest.exists?(file) - unless file =~ /\.pp$/ - file = file + ".pp" - end - unless FileTest.exists?(file) - raise Puppet::Error, "Could not find file %s" % file - end + path = self.class.filecheck(file) + unless path + raise Puppet::Error, "Could not find file %s" % file end + if @files.detect { |f| f.file == file } raise Puppet::ImportError.new("Import loop detected") else @@ -653,6 +671,62 @@ def file=(file) end end +def import(string) + # importing files + # yuk, i hate keywords + # we'll probably have to have some kind of search path eventually + # but for now, just use a path relative to the file doing the importing + result = ast AST::ASTArray + + # We can't interpolate at this point since we don't have any + # scopes set up. Warn the user if they use a variable reference + pat = string + if pat.index("$") + Puppet.warning( + "The import of #{pat} contains a variable reference;" + + " variables are not interpolated for imports " + + "in file #{@lexer.file} at line #{@lexer.line}" + ) + end + + if pat =~ /[*{}\[\]?\\]/ + files = self.class.glob(pat) + else + files = self.class.find(pat) + end + + if ! files or files.size == 0 + raise Puppet::ImportError.new("No file(s) found for import " + + "of '#{pat}'") + end + + files.each { |file| + parser = Puppet::Parser::Parser.new() + parser.files = self.files + Puppet.debug("importing '%s'" % file) + + unless file =~ /^#{File::SEPARATOR}/ + file = File.join(dir, file) + end + begin + parser.file = file + rescue Puppet::ImportError + Puppet.warning( + "Importing %s would result in an import loop" % + File.join(file) + ) + next + end + # push the results into the main result array + # We always return an array when we parse. + parser.parse.each do |child| + result.push child + end + } + + return result +end + def initialize @lexer = Puppet::Parser::Lexer.new() @files = [] @@ -661,6 +735,7 @@ def initialize #end end +# How to handle error messages. def on_error(token,value,stack) #on '%s' at '%s' in\n'%s'" % [token,value,stack] #error = "line %s: parse error after '%s'" % diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index 19d61c276..9a7cc7dc5 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -89,6 +89,18 @@ module Puppet raise Puppet::DevError, "You must provide code or a manifest" end + # If they passed us a file, then make sure that the file's + # directory is in our search path. + if @file + Puppet::Parser::Parser.libsetup + + dir = File.dirname(@file) + unless Puppet[:lib].include?(dir) + Puppet.debug "Adding %s to library path" % dir + Puppet[:lib] << dir + end + end + @lastchecked = 0 if hash.include?(:UseNodes) diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb index 80a8715ba..e90527622 100644 --- a/lib/puppet/parser/lexer.rb +++ b/lib/puppet/parser/lexer.rb @@ -53,7 +53,6 @@ module Puppet "default" => :DEFAULT, "define" => :DEFINE, "false" => :BOOLEAN, - "import" => :IMPORT, "if" => :IF, "elsif" => :ELSIF, "else" => :ELSE, diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb index 94ac1f6f1..22df59840 100644 --- a/lib/puppet/parser/parser.rb +++ b/lib/puppet/parser/parser.rb @@ -16,9 +16,16 @@ require 'puppet/parser/ast' module Puppet class ParseError < Puppet::Error; end - class ImportError < Racc::ParseError; end + class ImportError < ParseError; end end +Puppet.config.setdefaults(:puppet, + :lib => ["", "Puppet's search path, where Puppet will search for files to be + imported. Can be expanded by setting PUPPETLIB in your environment. + Values should be colon-separated. Any manifest you specify on the command + line has its directory automatically added to the search path."] +) + Puppet[:typecheck] = true Puppet[:paramcheck] = true @@ -29,12 +36,78 @@ module Puppet class Parser < Racc::Parser -module_eval <<'..end grammar.ra modeval..idaca07abf20', 'grammar.ra', 603 +module_eval <<'..end grammar.ra modeval..id3c509ea71c', 'grammar.ra', 557 require 'puppet/parser/functions' attr_reader :file attr_accessor :files +# Figure out if the file exists, and whether we need to tack a '.pp' onto it. +def self.filecheck(path) + if File.exists?(path) + return path + elsif File.exists?(path + ".pp") + return path + ".pp" + else + return nil + end +end + +# Find a file in our search path. +def self.find(file) + if file =~ /^#{File::SEPARATOR}/ + return filecheck(file) + end + + libsetup unless Puppet[:lib].is_a? Array + + Puppet[:lib].each do |dir| + if val = filecheck(File.join(dir, file)) + return val + end + end + + return nil +end + +# Find all files matching a given glob, anywhere in the search path. +def self.glob(pattern) + self.libsetup unless Puppet[:lib].is_a? Array + + if pattern =~ /^#{File::SEPARATOR}/ + return Dir.glob(pattern).find_all do |f| + File.file?(f) + end + end + files = [] + + Puppet[:lib].each do |dir| + if File.directory?(dir) + Dir.glob(File.join(dir, pattern)).find_all do |f| + files << f if File.file?(f) + end + end + end + + return files +end + +# Convert our external lib directories as appropriate. +def self.libsetup + if Puppet[:lib].is_a? String + dirs = [] + if Puppet[:lib] != "" + dirs += Puppet[:lib].split(":") + end + Puppet[:lib] = dirs + end + + if ENV["PUPPETLIB"] + Puppet[:lib] += ENV["PUPPETLIB"].split(":") + ENV["PUPPETLIB"] = nil + end +end + # Create an AST array out of all of the args def aryfy(*args) if args[0].instance_of?(AST::ASTArray) @@ -66,15 +139,13 @@ def ast(klass, hash = nil) return klass.new(hash) end +# Specify the file to parse. Basically gets passed through to the lexer. def file=(file) - unless FileTest.exists?(file) - unless file =~ /\.pp$/ - file = file + ".pp" - end - unless FileTest.exists?(file) - raise Puppet::Error, "Could not find file %s" % file - end + path = self.class.filecheck(file) + unless path + raise Puppet::Error, "Could not find file %s" % file end + if @files.detect { |f| f.file == file } raise Puppet::ImportError.new("Import loop detected") else @@ -83,6 +154,62 @@ def file=(file) end end +def import(string) + # importing files + # yuk, i hate keywords + # we'll probably have to have some kind of search path eventually + # but for now, just use a path relative to the file doing the importing + result = ast AST::ASTArray + + # We can't interpolate at this point since we don't have any + # scopes set up. Warn the user if they use a variable reference + pat = string + if pat.index("$") + Puppet.warning( + "The import of #{pat} contains a variable reference;" + + " variables are not interpolated for imports " + + "in file #{@lexer.file} at line #{@lexer.line}" + ) + end + + if pat =~ /[*{}\[\]?\\]/ + files = self.class.glob(pat) + else + files = self.class.find(pat) + end + + if ! files or files.size == 0 + raise Puppet::ImportError.new("No file(s) found for import " + + "of '#{pat}'") + end + + files.each { |file| + parser = Puppet::Parser::Parser.new() + parser.files = self.files + Puppet.debug("importing '%s'" % file) + + unless file =~ /^#{File::SEPARATOR}/ + file = File.join(dir, file) + end + begin + parser.file = file + rescue Puppet::ImportError + Puppet.warning( + "Importing %s would result in an import loop" % + File.join(file) + ) + next + end + # push the results into the main result array + # We always return an array when we parse. + parser.parse.each do |child| + result.push child + end + } + + return result +end + def initialize @lexer = Puppet::Parser::Lexer.new() @files = [] @@ -91,6 +218,7 @@ def initialize #end end +# How to handle error messages. def on_error(token,value,stack) #on '%s' at '%s' in\n'%s'" % [token,value,stack] #error = "line %s: parse error after '%s'" % @@ -175,7 +303,7 @@ end # $Id$ -..end grammar.ra modeval..idaca07abf20 +..end grammar.ra modeval..id3c509ea71c ##### racc 1.4.5 generates ### @@ -195,343 +323,347 @@ racc_reduce_table = [ 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, - 1, 47, :_reduce_none, - 4, 55, :_reduce_16, - 2, 55, :_reduce_17, + 4, 54, :_reduce_15, + 2, 54, :_reduce_16, + 1, 58, :_reduce_none, + 3, 58, :_reduce_18, + 1, 59, :_reduce_none, + 1, 59, :_reduce_none, 1, 59, :_reduce_none, - 3, 59, :_reduce_19, - 1, 60, :_reduce_none, - 1, 60, :_reduce_none, - 1, 60, :_reduce_none, + 5, 48, :_reduce_22, 5, 48, :_reduce_23, 5, 48, :_reduce_24, - 5, 48, :_reduce_25, - 2, 49, :_reduce_26, - 3, 50, :_reduce_27, - 4, 69, :_reduce_28, + 2, 49, :_reduce_25, + 3, 50, :_reduce_26, + 4, 68, :_reduce_27, + 1, 63, :_reduce_none, + 3, 63, :_reduce_29, + 0, 64, :_reduce_none, 1, 64, :_reduce_none, - 3, 64, :_reduce_30, - 0, 65, :_reduce_none, - 1, 65, :_reduce_none, - 1, 61, :_reduce_33, - 1, 68, :_reduce_34, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 1, 70, :_reduce_none, - 3, 51, :_reduce_41, - 0, 66, :_reduce_42, - 1, 66, :_reduce_43, - 3, 66, :_reduce_44, - 3, 74, :_reduce_45, - 1, 75, :_reduce_none, - 3, 75, :_reduce_47, - 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, - 4, 79, :_reduce_57, - 1, 63, :_reduce_58, - 1, 63, :_reduce_59, - 1, 77, :_reduce_60, - 4, 78, :_reduce_61, - 6, 53, :_reduce_62, - 0, 81, :_reduce_none, - 4, 81, :_reduce_64, - 1, 80, :_reduce_none, - 5, 52, :_reduce_66, - 1, 82, :_reduce_none, - 2, 82, :_reduce_68, - 5, 83, :_reduce_69, - 4, 83, :_reduce_70, - 1, 84, :_reduce_none, - 3, 84, :_reduce_72, - 3, 71, :_reduce_73, - 1, 86, :_reduce_none, - 3, 86, :_reduce_75, - 1, 88, :_reduce_none, - 3, 88, :_reduce_77, - 3, 87, :_reduce_78, - 1, 85, :_reduce_none, - 1, 85, :_reduce_none, - 1, 85, :_reduce_none, + 1, 60, :_reduce_32, + 1, 67, :_reduce_33, + 1, 69, :_reduce_none, + 1, 69, :_reduce_none, + 1, 69, :_reduce_none, + 1, 69, :_reduce_none, + 1, 69, :_reduce_none, + 1, 69, :_reduce_none, + 3, 51, :_reduce_40, + 0, 65, :_reduce_41, + 1, 65, :_reduce_42, + 3, 65, :_reduce_43, + 3, 73, :_reduce_44, + 1, 74, :_reduce_none, + 3, 74, :_reduce_46, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 1, 72, :_reduce_none, + 4, 78, :_reduce_56, + 1, 62, :_reduce_57, + 1, 62, :_reduce_58, + 1, 76, :_reduce_59, + 4, 77, :_reduce_60, + 6, 53, :_reduce_61, + 0, 80, :_reduce_none, + 4, 80, :_reduce_63, + 1, 79, :_reduce_none, + 5, 52, :_reduce_65, + 1, 81, :_reduce_none, + 2, 81, :_reduce_67, + 5, 82, :_reduce_68, + 4, 82, :_reduce_69, + 1, 83, :_reduce_none, + 3, 83, :_reduce_71, + 3, 70, :_reduce_72, 1, 85, :_reduce_none, - 1, 85, :_reduce_none, - 1, 85, :_reduce_none, - 1, 85, :_reduce_85, - 2, 54, :_reduce_86, + 3, 85, :_reduce_74, + 1, 87, :_reduce_none, + 3, 87, :_reduce_76, + 3, 86, :_reduce_77, + 1, 84, :_reduce_none, + 1, 84, :_reduce_none, + 1, 84, :_reduce_none, + 1, 84, :_reduce_none, + 1, 84, :_reduce_none, + 1, 84, :_reduce_none, + 1, 84, :_reduce_84, + 6, 55, :_reduce_85, + 5, 55, :_reduce_86, 6, 56, :_reduce_87, 5, 56, :_reduce_88, 6, 57, :_reduce_89, 5, 57, :_reduce_90, - 6, 58, :_reduce_91, - 5, 58, :_reduce_92, - 1, 91, :_reduce_none, - 3, 91, :_reduce_94, - 1, 92, :_reduce_95, - 1, 92, :_reduce_96, - 1, 92, :_reduce_97, - 0, 46, :_reduce_98, - 1, 89, :_reduce_none, - 3, 89, :_reduce_100, - 3, 89, :_reduce_101, - 1, 93, :_reduce_none, - 3, 93, :_reduce_103, - 3, 94, :_reduce_104, - 1, 94, :_reduce_105, - 3, 94, :_reduce_106, - 1, 94, :_reduce_107, 1, 90, :_reduce_none, - 2, 90, :_reduce_109, - 1, 62, :_reduce_110, - 1, 95, :_reduce_111, - 3, 72, :_reduce_112, - 2, 72, :_reduce_113, - 1, 76, :_reduce_none, - 1, 76, :_reduce_none, - 0, 67, :_reduce_none, - 1, 67, :_reduce_117 ] + 3, 90, :_reduce_92, + 1, 91, :_reduce_93, + 1, 91, :_reduce_94, + 1, 91, :_reduce_95, + 0, 46, :_reduce_96, + 1, 88, :_reduce_none, + 3, 88, :_reduce_98, + 3, 88, :_reduce_99, + 1, 92, :_reduce_none, + 3, 92, :_reduce_101, + 3, 93, :_reduce_102, + 1, 93, :_reduce_103, + 3, 93, :_reduce_104, + 1, 93, :_reduce_105, + 1, 89, :_reduce_none, + 2, 89, :_reduce_107, + 1, 61, :_reduce_108, + 1, 94, :_reduce_109, + 3, 71, :_reduce_110, + 2, 71, :_reduce_111, + 1, 75, :_reduce_none, + 1, 75, :_reduce_none, + 0, 66, :_reduce_none, + 1, 66, :_reduce_115 ] -racc_reduce_n = 118 +racc_reduce_n = 116 -racc_shift_n = 197 +racc_shift_n = 194 racc_action_table = [ - 48, 36, 38, 81, 162, 20, 48, 36, 38, 64, - 79, 161, 48, 36, 38, 86, 20, 36, 38, 75, - 36, 38, 20, 37, -79, 145, 36, 38, 20, 44, - 37, -82, -79, 49, 53, 44, 31, 55, 31, 49, - 53, 44, 72, 55, 65, 49, 53, -81, 44, 55, - 48, 36, 38, 37, 44, 145, 48, 36, 38, 37, - 37, 137, 48, 36, 38, 113, 20, 139, 29, 79, - 29, 33, 20, 33, -80, 79, 85, 170, 20, 44, - 154, 146, 102, 49, 53, 44, 115, 55, 171, 49, - 53, 44, 149, 55, 77, 49, 53, 36, 38, 55, - 48, 36, 38, 36, 38, 116, 48, 36, 38, 117, - 118, 88, 48, 36, 38, 179, 20, 117, 118, -81, - 45, 87, 20, 112, 155, 44, -82, 158, 20, 44, - 37, 44, 105, 49, 53, 44, 37, 55, 64, 49, - 53, 44, 163, 55, 77, 49, 53, 85, 84, 55, - 48, 36, 38, -80, 169, 72, 48, 36, 38, 172, - 173, -83, 48, 36, 38, -84, 20, 178, 108, 136, - 182, 77, 20, 36, 38, 112, 71, 160, 20, 44, - 109, 70, 69, 49, 53, 44, 113, 55, 20, 49, - 53, 44, 190, 55, 66, 49, 93, 36, 38, 55, - 112, 44, 35, 28, 166, 49, 53, 36, 38, 55, - 125, nil, 20, 36, 38, nil, nil, nil, nil, 36, - 38, nil, 20, nil, nil, 44, nil, nil, 20, 49, - 53, nil, nil, 55, 20, 44, nil, nil, nil, 49, - 53, 44, nil, 55, nil, 49, 53, 44, nil, 55, - nil, 49, 53, 36, 38, 55, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 20, 176, + 47, 34, 37, 159, 84, 18, 47, 34, 37, 61, + 158, -81, 47, 34, 37, 83, 18, -80, 133, 72, + 34, 37, 18, 35, 110, 142, 34, 37, 18, 42, + 35, 136, -78, 49, 50, 42, 30, 54, 30, 49, + 50, 42, 69, 54, 62, 49, 50, 132, 42, 54, + 47, 34, 37, 35, 42, 142, 47, 34, 37, 35, + 35, 143, 47, 34, 37, 108, 18, 102, 28, 76, + 28, 31, 18, 31, 99, 76, 82, 167, 18, 42, + 151, 147, 73, 49, 50, 42, 112, 54, 168, 49, + 50, 42, 85, 54, -83, 49, 89, 34, 37, 54, + 47, 34, 37, 34, 37, 113, 47, 34, 37, 114, + 116, -79, 47, 34, 37, 176, 18, 114, 116, 152, + 43, -80, 18, 155, -78, 42, 61, 73, 18, 42, + 35, 42, -81, 49, 50, 42, 35, 54, 69, 49, + 50, 42, 163, 54, 82, 49, 50, 166, 105, 54, + 47, 34, 37, 169, 170, 81, 47, 34, 37, -79, + 175, 106, 47, 34, 37, 78, 18, -82, 179, 76, + 110, 73, 18, 34, 37, 108, 68, 67, 18, 42, + 66, 187, 110, 49, 50, 42, 63, 54, 18, 49, + 50, 42, 32, 54, 26, 49, 50, 34, 37, 54, + 162, 42, nil, nil, nil, 49, 50, 34, 37, 54, + 123, nil, 18, 34, 37, nil, nil, 157, nil, 34, + 37, nil, 18, nil, nil, 42, nil, nil, 18, 49, + 50, nil, nil, 54, 18, 42, nil, nil, nil, 49, + 50, 42, nil, 54, nil, 49, 50, 42, nil, 54, + nil, 49, 50, 34, 37, 54, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 18, 165, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 20, 44, nil, nil, 168, 49, 53, nil, 12, 55, - 16, 19, nil, 24, 26, 20, 3, nil, 9, 175, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - 20, 3, nil, 9, 196, 14, nil, 21, 12, nil, - 16, 19, nil, 24, 26, 20, 3, nil, 9, 153, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - 20, 3, nil, 9, 185, 14, nil, 21, 12, nil, - 16, 19, nil, 24, 26, 20, 3, nil, 9, 189, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - 20, 3, nil, 9, 195, 14, nil, 21, 12, nil, - 16, 19, nil, 24, 26, 20, 3, nil, 9, 148, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - 20, 3, nil, 9, 193, 14, nil, 21, 12, nil, - 16, 19, nil, 24, 26, 20, 3, nil, 9, nil, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - 20, 3, nil, 9, nil, 14, nil, 21, 12, nil, - 16, 19, nil, 24, 26, 20, 3, nil, 9, nil, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - 20, 3, nil, 9, nil, 14, nil, 21, 12, nil, - 16, 19, nil, 24, 26, 20, 3, nil, 9, nil, - 14, nil, 21, 12, nil, 16, 19, nil, 24, 26, - nil, 3, nil, 9, nil, 14, nil, 21 ] + 18, 42, nil, nil, 172, 49, 50, nil, 11, 54, + nil, 17, nil, 22, 24, 18, 3, nil, 9, 182, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + 18, 3, nil, 9, 186, 13, nil, 19, 11, nil, + nil, 17, nil, 22, 24, 18, 3, nil, 9, 150, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + 18, 3, nil, 9, 190, 13, nil, 19, 11, nil, + nil, 17, nil, 22, 24, 18, 3, nil, 9, 145, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + 18, 3, nil, 9, 192, 13, nil, 19, 11, nil, + nil, 17, nil, 22, 24, 18, 3, nil, 9, 193, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + 18, 3, nil, 9, 173, 13, nil, 19, 11, nil, + nil, 17, nil, 22, 24, 18, 3, nil, 9, nil, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + 18, 3, nil, 9, nil, 13, nil, 19, 11, nil, + nil, 17, nil, 22, 24, 18, 3, nil, 9, nil, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + 18, 3, nil, 9, nil, 13, nil, 19, 11, nil, + nil, 17, nil, 22, 24, 18, 3, nil, 9, nil, + 13, nil, 19, 11, nil, nil, 17, nil, 22, 24, + nil, 3, nil, 9, nil, 13, nil, 19 ] racc_action_check = [ - 48, 48, 48, 48, 133, 21, 86, 86, 86, 17, - 39, 133, 137, 137, 137, 57, 48, 16, 16, 30, - 79, 79, 86, 21, 98, 170, 45, 45, 137, 48, - 170, 99, 57, 48, 48, 86, 3, 48, 75, 86, - 86, 137, 30, 86, 17, 137, 137, 100, 79, 137, - 69, 69, 69, 79, 45, 105, 119, 119, 119, 45, - 105, 101, 172, 172, 172, 93, 69, 103, 3, 121, - 75, 3, 119, 75, 92, 80, 93, 141, 172, 69, - 121, 107, 65, 69, 69, 119, 80, 69, 141, 119, - 119, 172, 111, 119, 112, 172, 172, 85, 85, 172, - 12, 12, 12, 9, 9, 83, 14, 14, 14, 83, - 83, 62, 113, 113, 113, 156, 12, 156, 156, 61, - 9, 60, 14, 90, 122, 85, 59, 128, 113, 12, - 85, 9, 66, 12, 12, 14, 9, 12, 68, 14, - 14, 113, 135, 14, 136, 113, 113, 53, 52, 113, - 173, 173, 173, 51, 140, 70, 158, 158, 158, 142, - 144, 50, 64, 64, 64, 46, 173, 153, 72, 95, - 161, 35, 158, 131, 131, 164, 28, 131, 64, 173, - 74, 26, 24, 173, 173, 158, 77, 173, 131, 158, - 158, 64, 178, 158, 19, 64, 64, 88, 88, 64, - 76, 131, 6, 2, 138, 131, 131, 87, 87, 131, - 87, nil, 88, 125, 125, nil, nil, nil, nil, 162, - 162, nil, 87, nil, nil, 88, nil, nil, 125, 88, - 88, nil, nil, 88, 162, 87, nil, nil, nil, 87, - 87, 125, nil, 87, nil, 125, 125, 162, nil, 125, - nil, 162, 162, 180, 180, 162, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 180, 147, + 66, 66, 66, 130, 57, 19, 155, 155, 155, 14, + 130, 94, 133, 133, 133, 53, 66, 95, 96, 27, + 43, 43, 155, 19, 98, 102, 76, 76, 133, 66, + 102, 100, 53, 66, 66, 155, 3, 66, 72, 155, + 155, 133, 27, 155, 14, 133, 133, 90, 43, 133, + 83, 83, 83, 43, 76, 167, 108, 108, 108, 76, + 167, 104, 61, 61, 61, 89, 83, 63, 3, 118, + 72, 3, 108, 72, 62, 77, 89, 138, 61, 83, + 118, 109, 110, 83, 83, 108, 77, 83, 138, 108, + 108, 61, 60, 108, 59, 61, 61, 82, 82, 61, + 11, 11, 11, 9, 9, 80, 13, 13, 13, 80, + 80, 87, 169, 169, 169, 154, 11, 154, 154, 119, + 9, 58, 13, 125, 93, 82, 65, 132, 169, 11, + 82, 9, 56, 11, 11, 13, 9, 11, 67, 13, + 13, 169, 135, 13, 50, 169, 169, 137, 69, 169, + 115, 115, 115, 139, 141, 48, 170, 170, 170, 46, + 150, 70, 47, 47, 47, 47, 115, 45, 158, 36, + 160, 32, 170, 123, 123, 73, 26, 24, 47, 115, + 22, 175, 75, 115, 115, 170, 17, 115, 123, 170, + 170, 47, 4, 170, 2, 47, 47, 177, 177, 47, + 134, 123, nil, nil, nil, 123, 123, 84, 84, 123, + 84, nil, 177, 128, 128, nil, nil, 128, nil, 85, + 85, nil, 84, nil, nil, 177, nil, nil, 128, 177, + 177, nil, nil, 177, 85, 84, nil, nil, nil, 84, + 84, 128, nil, 84, nil, 128, 128, 85, nil, 128, + nil, 85, 85, 159, 159, 85, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, 159, 136, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 147, 180, nil, nil, 139, 180, 180, nil, 147, 180, - 147, 147, nil, 147, 147, 139, 147, nil, 147, 146, - 147, nil, 147, 139, nil, 139, 139, nil, 139, 139, - 146, 139, nil, 139, 194, 139, nil, 139, 146, nil, - 146, 146, nil, 146, 146, 194, 146, nil, 146, 120, - 146, nil, 146, 194, nil, 194, 194, nil, 194, 194, - 120, 194, nil, 194, 167, 194, nil, 194, 120, nil, - 120, 120, nil, 120, 120, 167, 120, nil, 120, 174, - 120, nil, 120, 167, nil, 167, 167, nil, 167, 167, - 174, 167, nil, 167, 192, 167, nil, 167, 174, nil, - 174, 174, nil, 174, 174, 192, 174, nil, 174, 109, - 174, nil, 174, 192, nil, 192, 192, nil, 192, 192, - 109, 192, nil, 192, 182, 192, nil, 192, 109, nil, - 109, 109, nil, 109, 109, 182, 109, nil, 109, nil, - 109, nil, 109, 182, nil, 182, 182, nil, 182, 182, - 84, 182, nil, 182, nil, 182, nil, 182, 84, nil, - 84, 84, nil, 84, 84, 190, 84, nil, 84, nil, - 84, nil, 84, 190, nil, 190, 190, nil, 190, 190, - 5, 190, nil, 190, nil, 190, nil, 190, 5, nil, - 5, 5, nil, 5, 5, 0, 5, nil, 5, nil, - 5, nil, 5, 0, nil, 0, 0, nil, 0, 0, + 136, 159, nil, nil, 143, 159, 159, nil, 136, 159, + nil, 136, nil, 136, 136, 143, 136, nil, 136, 164, + 136, nil, 136, 143, nil, nil, 143, nil, 143, 143, + 164, 143, nil, 143, 171, 143, nil, 143, 164, nil, + nil, 164, nil, 164, 164, 171, 164, nil, 164, 117, + 164, nil, 164, 171, nil, nil, 171, nil, 171, 171, + 117, 171, nil, 171, 179, 171, nil, 171, 117, nil, + nil, 117, nil, 117, 117, 179, 117, nil, 117, 106, + 117, nil, 117, 179, nil, nil, 179, nil, 179, 179, + 106, 179, nil, 179, 189, 179, nil, 179, 106, nil, + nil, 106, nil, 106, 106, 189, 106, nil, 106, 191, + 106, nil, 106, 189, nil, nil, 189, nil, 189, 189, + 191, 189, nil, 189, 144, 189, nil, 189, 191, nil, + nil, 191, nil, 191, 191, 144, 191, nil, 191, nil, + 191, nil, 191, 144, nil, nil, 144, nil, 144, 144, + 187, 144, nil, 144, nil, 144, nil, 144, 187, nil, + nil, 187, nil, 187, 187, 6, 187, nil, 187, nil, + 187, nil, 187, 6, nil, nil, 6, nil, 6, 6, + 81, 6, nil, 6, nil, 6, nil, 6, 81, nil, + nil, 81, nil, 81, 81, 0, 81, nil, 81, nil, + 81, nil, 81, 0, nil, nil, 0, nil, 0, 0, nil, 0, nil, 0, nil, 0, nil, 0 ] racc_action_pointer = [ - 457, nil, 203, 32, nil, 442, 196, nil, nil, 100, - nil, nil, 98, nil, 104, nil, 14, 3, nil, 158, - nil, -13, nil, nil, 169, nil, 145, nil, 176, nil, - 9, nil, nil, nil, nil, 135, nil, nil, nil, 0, - nil, nil, nil, nil, nil, 23, 146, nil, -2, nil, - 142, 134, 142, 127, nil, nil, nil, 13, nil, 107, - 102, 100, 105, nil, 160, 40, 112, nil, 132, 48, - 122, nil, 132, nil, 174, 34, 190, 177, nil, 17, - 65, nil, nil, 100, 412, 94, 4, 204, 194, nil, - 113, nil, 55, 56, nil, 152, nil, nil, 5, 12, - 28, 24, nil, 61, nil, 24, nil, 75, nil, 382, - nil, 85, 58, 110, nil, nil, nil, nil, nil, 54, - 322, 59, 119, nil, nil, 210, nil, nil, 118, nil, - nil, 170, nil, -6, nil, 135, 108, 10, 197, 277, - 133, 67, 146, nil, 147, nil, 292, 262, nil, nil, - nil, nil, nil, 140, nil, nil, 108, nil, 154, nil, - nil, 164, 216, nil, 165, nil, nil, 337, nil, nil, - -6, nil, 60, 148, 352, nil, nil, nil, 186, nil, - 250, nil, 397, nil, nil, nil, nil, nil, nil, nil, - 427, nil, 367, nil, 307, nil, nil ] + 457, nil, 194, 32, 186, nil, 427, nil, nil, 100, + nil, 98, nil, 104, 3, nil, nil, 150, nil, -13, + nil, nil, 167, nil, 141, nil, 176, 9, nil, nil, + nil, nil, 135, nil, nil, nil, 159, nil, nil, nil, + nil, nil, nil, 17, nil, 148, 140, 160, 149, nil, + 124, nil, nil, 13, nil, nil, 113, -15, 102, 75, + 86, 60, 32, 47, nil, 120, -2, 105, nil, 112, + 155, nil, 34, 166, nil, 172, 23, 65, nil, nil, + 100, 442, 94, 48, 204, 216, nil, 92, nil, 56, + 30, nil, nil, 105, -8, -2, -19, nil, 14, nil, + 25, nil, -6, nil, 55, nil, 352, nil, 54, 74, + 46, nil, nil, nil, nil, 148, nil, 322, 59, 114, + nil, nil, nil, 170, nil, 114, nil, nil, 210, nil, + -7, nil, 91, 10, 193, 135, 262, 126, 67, 140, + nil, 141, nil, 277, 397, nil, nil, nil, nil, nil, + 133, nil, nil, nil, 108, 4, nil, nil, 162, 250, + 160, nil, nil, nil, 292, nil, nil, 24, nil, 110, + 154, 307, nil, nil, nil, 175, nil, 194, nil, 337, + nil, nil, nil, nil, nil, nil, nil, 412, nil, 367, + nil, 382, nil, nil ] racc_action_default = [ - -98, -12, -118, -118, -13, -1, -118, -14, -2, -33, - -15, -3, -118, -5, -118, -6, -118, -118, -7, -118, - -34, -118, -8, -9, -118, -10, -118, -11, -118, -95, - -98, -96, -93, -97, -4, -42, -58, -33, -59, -17, - -18, -20, -21, -22, -110, -118, -51, -55, -118, -60, - -56, -50, -118, -33, -52, -85, -54, -49, -65, -53, - -118, -48, -118, -86, -42, -118, -98, -26, -118, -118, - -98, 197, -118, -108, -118, -118, -116, -118, -43, -118, - -118, -113, -46, -118, -118, -118, -118, -118, -118, -84, - -116, -83, -37, -33, -29, -118, -38, -40, -36, -39, - -35, -31, -27, -118, -99, -98, -41, -118, -109, -118, - -94, -118, -117, -118, -19, -16, -112, -114, -115, -118, - -118, -118, -118, -80, -79, -118, -82, -81, -118, -73, - -74, -118, -67, -118, -71, -118, -42, -32, -118, -118, - -118, -118, -105, -102, -107, -111, -118, -118, -92, -25, - -44, -45, -47, -63, -57, -61, -118, -76, -118, -68, - -66, -118, -118, -24, -116, -30, -23, -118, -88, -100, - -118, -101, -118, -118, -118, -90, -91, -62, -118, -75, - -118, -78, -118, -72, -28, -87, -103, -104, -106, -89, - -118, -77, -118, -70, -118, -69, -64 ] + -96, -12, -116, -116, -116, -13, -1, -14, -2, -32, + -3, -116, -5, -116, -116, -6, -7, -116, -33, -116, + -8, -9, -116, -10, -116, -11, -116, -96, -93, -91, + -94, -95, -41, -4, -57, -32, -16, -58, -17, -19, + -20, -21, -108, -116, -54, -55, -49, -116, -116, -59, + -32, -51, -53, -48, -84, -64, -52, -116, -47, -50, + -116, -41, -116, -96, -25, -116, -116, -96, 194, -116, + -116, -106, -116, -116, -42, -114, -116, -116, -111, -45, + -116, -116, -116, -116, -116, -116, -82, -36, -28, -32, + -116, -37, -39, -35, -38, -34, -30, -83, -114, -26, + -116, -97, -96, -40, -116, -107, -116, -92, -116, -116, + -115, -18, -15, -110, -112, -116, -113, -116, -116, -116, + -79, -78, -81, -116, -80, -116, -72, -73, -116, -66, + -116, -70, -41, -31, -116, -116, -116, -116, -116, -103, + -100, -105, -109, -116, -116, -90, -44, -24, -43, -46, + -62, -56, -60, -75, -116, -116, -67, -65, -116, -116, + -114, -29, -22, -23, -116, -86, -98, -116, -99, -116, + -116, -116, -88, -89, -61, -116, -74, -116, -77, -116, + -71, -27, -85, -101, -102, -104, -87, -116, -76, -116, + -69, -116, -68, -63 ] racc_goto_table = [ - 5, 76, 34, 43, 32, 8, 58, 42, 62, 111, - 63, 132, 39, 143, 150, 51, 52, 51, 130, 94, - 74, 128, 134, 135, 177, 96, 89, 119, 97, 131, - 90, 83, 138, 129, 101, 156, 103, 114, 30, 43, - 67, 141, 82, 42, 2, nil, nil, nil, 80, 89, - 89, 51, nil, nil, 159, nil, 157, nil, 100, 128, - 107, nil, 99, 106, nil, 134, nil, 92, nil, nil, - nil, 104, 51, 43, nil, nil, 110, 42, 186, 43, - 122, 127, 127, 42, 120, 126, 126, 89, 121, 51, - 123, 123, 165, 89, nil, nil, 183, 184, 96, 89, - 180, 97, 164, nil, nil, nil, nil, 151, nil, 147, - 140, 191, nil, 152, 128, nil, 51, 34, nil, 127, - nil, nil, 51, 126, 89, 127, nil, nil, 123, 126, - nil, 100, nil, 41, 123, 99, 57, nil, 57, 167, - 92, nil, 89, nil, 34, 68, 174, nil, nil, nil, - nil, nil, 181, nil, nil, nil, 127, nil, nil, nil, - 126, 51, nil, nil, 34, 123, 187, 188, nil, 41, - nil, 34, 57, 91, 127, 51, 51, nil, 126, nil, - nil, nil, 192, 123, nil, nil, nil, nil, 98, 34, - 194, 34, nil, 57, nil, nil, 91, 91, nil, nil, - nil, nil, nil, 41, nil, nil, nil, nil, nil, 41, - 57, 124, 124, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 142, - nil, nil, nil, nil, 91, nil, nil, 57, nil, nil, - 91, nil, nil, 57, nil, nil, 91, nil, nil, 124, - nil, nil, nil, nil, nil, 124, nil, nil, nil, nil, - nil, 98, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 91, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 57, nil, nil, nil, 124, nil, nil, 91, - nil, nil, nil, nil, 142, nil, 57, 57, nil, nil, - nil, nil, nil, nil, 124 ] + 6, 33, 41, 75, 97, 8, 127, 125, 131, 115, + 109, 148, 91, 40, 140, 70, 29, 48, 36, 129, + 174, 92, 128, 80, 88, 86, 134, 97, 97, 126, + 96, 154, 98, 135, 100, 111, 41, 27, 64, 138, + 2, nil, nil, nil, nil, 153, 125, 40, 86, 86, + nil, 131, 77, nil, 95, 104, nil, nil, 55, nil, + 60, nil, 156, nil, nil, 94, 97, nil, 101, 41, + nil, 97, nil, nil, nil, 41, 97, 124, 124, 183, + 40, 117, 180, 177, 91, 107, 40, 86, 122, 122, + nil, 118, 86, 92, 79, 181, 161, 86, nil, 188, + 125, nil, 97, 160, nil, nil, 144, 137, nil, nil, + nil, nil, 33, 103, nil, 39, 124, 53, nil, 53, + 97, 124, nil, 86, nil, 65, 95, 122, nil, nil, + 119, nil, 122, nil, nil, nil, 164, 94, nil, 33, + nil, 86, nil, 171, nil, nil, nil, nil, nil, 39, + nil, nil, 124, 53, nil, 146, nil, nil, nil, 33, + nil, nil, 149, 122, nil, nil, 33, 93, nil, nil, + 124, nil, 53, 46, nil, 46, nil, nil, nil, 189, + nil, 122, 39, nil, 33, nil, 33, 191, 39, 53, + 121, 121, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 178, nil, nil, nil, nil, nil, 139, 46, + nil, nil, nil, nil, 53, nil, 184, 185, nil, nil, + nil, 53, nil, 87, nil, nil, nil, nil, 46, 121, + nil, nil, nil, nil, 121, nil, nil, nil, nil, 93, + nil, nil, nil, nil, nil, 46, 120, 120, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 53, nil, nil, nil, 121, nil, nil, nil, nil, + 46, nil, nil, 139, nil, 53, 53, 46, nil, nil, + nil, nil, nil, 121, nil, 120, nil, nil, nil, nil, + 120, nil, nil, nil, nil, 87, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 46, nil, nil, + nil, 120, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 46, 46, nil, nil, nil, nil, nil, nil, 120 ] racc_goto_check = [ - 2, 23, 4, 20, 49, 3, 30, 19, 30, 24, - 20, 40, 16, 51, 31, 25, 37, 25, 44, 26, - 47, 42, 42, 24, 38, 28, 34, 33, 29, 39, - 23, 32, 22, 43, 21, 45, 46, 17, 48, 20, - 5, 50, 30, 19, 1, nil, nil, nil, 16, 34, - 34, 25, nil, nil, 40, nil, 44, nil, 20, 42, - 47, nil, 19, 30, nil, 42, nil, 25, nil, nil, - nil, 3, 25, 20, nil, nil, 49, 19, 51, 20, - 30, 20, 20, 19, 2, 19, 19, 34, 16, 25, - 25, 25, 26, 34, nil, nil, 42, 24, 28, 34, - 33, 29, 23, nil, nil, nil, nil, 30, nil, 2, - 3, 44, nil, 30, 42, nil, 25, 4, nil, 20, - nil, nil, 25, 19, 34, 20, nil, nil, 25, 19, - nil, 20, nil, 18, 25, 19, 18, nil, 18, 2, - 25, nil, 34, nil, 4, 18, 2, nil, nil, nil, - nil, nil, 30, nil, nil, nil, 20, nil, nil, nil, - 19, 25, nil, nil, 4, 25, 30, 30, nil, 18, - nil, 4, 18, 36, 20, 25, 25, nil, 19, nil, - nil, nil, 2, 25, nil, nil, nil, nil, 18, 4, - 2, 4, nil, 18, nil, nil, 36, 36, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, nil, 18, - 18, 18, 18, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 36, nil, nil, 18, nil, nil, - 36, nil, nil, 18, nil, nil, 36, nil, nil, 18, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 36, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, 18, nil, nil, 36, - nil, nil, nil, nil, 18, nil, 18, 18, nil, nil, - nil, nil, nil, nil, 18 ] + 2, 4, 19, 22, 33, 3, 43, 41, 41, 32, + 23, 30, 27, 18, 50, 46, 48, 36, 15, 39, + 37, 28, 38, 31, 25, 35, 21, 33, 33, 42, + 20, 44, 22, 23, 45, 16, 19, 47, 5, 49, + 1, nil, nil, nil, nil, 43, 41, 18, 35, 35, + nil, 41, 15, nil, 19, 46, nil, nil, 29, nil, + 29, nil, 39, nil, nil, 18, 33, nil, 3, 19, + nil, 33, nil, nil, nil, 19, 33, 19, 19, 50, + 18, 2, 41, 32, 27, 48, 18, 35, 18, 18, + nil, 15, 35, 28, 29, 23, 25, 35, nil, 43, + 41, nil, 33, 22, nil, nil, 2, 3, nil, nil, + nil, nil, 4, 29, nil, 17, 19, 17, nil, 17, + 33, 19, nil, 35, nil, 17, 19, 18, nil, nil, + 29, nil, 18, nil, nil, nil, 2, 18, nil, 4, + nil, 35, nil, 2, nil, nil, nil, nil, nil, 17, + nil, nil, 19, 17, nil, 29, nil, nil, nil, 4, + nil, nil, 29, 18, nil, nil, 4, 17, nil, nil, + 19, nil, 17, 24, nil, 24, nil, nil, nil, 2, + nil, 18, 17, nil, 4, nil, 4, 2, 17, 17, + 17, 17, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, 29, nil, nil, nil, nil, nil, 17, 24, + nil, nil, nil, nil, 17, nil, 29, 29, nil, nil, + nil, 17, nil, 24, nil, nil, nil, nil, 24, 17, + nil, nil, nil, nil, 17, nil, nil, nil, nil, 17, + nil, nil, nil, nil, nil, 24, 24, 24, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 17, nil, nil, nil, 17, nil, nil, nil, nil, + 24, nil, nil, 17, nil, 17, 17, 24, nil, nil, + nil, nil, nil, 17, nil, 24, nil, nil, nil, nil, + 24, nil, nil, nil, nil, 24, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, nil, nil, 24, nil, nil, + nil, 24, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 24, 24, nil, nil, nil, nil, nil, nil, 24 ] racc_goto_pointer = [ - nil, 44, 0, 5, -3, 19, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 3, -42, 124, -2, - -6, -30, -69, -34, -67, 3, -45, nil, -39, -36, - -6, -98, -17, -56, -38, nil, 109, 4, -129, -59, - -77, nil, -66, -54, -69, -90, -30, -10, 35, 1, - -64, -92, nil ] + nil, 40, 0, 5, -5, 19, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 9, -41, 106, 4, -7, + -31, -70, -29, -65, 162, -37, nil, -49, -40, 47, + -99, -24, -71, -57, nil, -36, 6, -130, -63, -66, + nil, -77, -55, -78, -92, -29, -12, 34, 13, -63, + -88, nil ] racc_goto_default = [ - nil, nil, nil, 73, 11, 13, 15, 18, 22, 23, - 25, 27, 1, 4, 7, 10, nil, 40, 17, 59, - 61, nil, nil, nil, nil, 6, nil, 95, 54, 56, - nil, 78, nil, nil, 46, 47, 50, nil, nil, nil, - nil, 133, 60, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 144 ] + nil, nil, nil, 71, 10, 12, 15, 16, 20, 21, + 23, 25, 1, 5, 7, nil, 38, 14, 56, 58, + nil, nil, nil, nil, 4, nil, 90, 51, 52, nil, + 74, nil, nil, 59, 44, 45, nil, nil, nil, nil, + 130, 57, nil, nil, nil, nil, nil, nil, nil, nil, + nil, 141 ] racc_token_table = { false => 0, @@ -653,7 +785,6 @@ Racc_token_to_s_table = [ 'assignment', 'casestatement', 'ifstatement', -'import', 'fstatement', 'definition', 'hostclass', @@ -750,10 +881,8 @@ module_eval <<'.,.,', 'grammar.ra', 35 # reduce 14 omitted - # reduce 15 omitted - module_eval <<'.,.,', 'grammar.ra', 56 - def _reduce_16( val, _values, result ) + def _reduce_15( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], @@ -764,7 +893,7 @@ module_eval <<'.,.,', 'grammar.ra', 56 .,., module_eval <<'.,.,', 'grammar.ra', 63 - def _reduce_17( val, _values, result ) + def _reduce_16( val, _values, result ) args = aryfy(val[1]) result = ast AST::Function, :name => val[0], @@ -774,10 +903,10 @@ module_eval <<'.,.,', 'grammar.ra', 63 end .,., - # reduce 18 omitted + # reduce 17 omitted module_eval <<'.,.,', 'grammar.ra', 82 - def _reduce_19( val, _values, result ) + def _reduce_18( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file @@ -785,14 +914,14 @@ module_eval <<'.,.,', 'grammar.ra', 82 end .,., + # reduce 19 omitted + # reduce 20 omitted # reduce 21 omitted - # reduce 22 omitted - module_eval <<'.,.,', 'grammar.ra', 111 - def _reduce_23( val, _values, result ) + def _reduce_22( val, _values, result ) if val[0].instance_of?(AST::ASTArray) raise Puppet::ParseError, "Invalid name" end @@ -819,7 +948,7 @@ module_eval <<'.,.,', 'grammar.ra', 111 .,., module_eval <<'.,.,', 'grammar.ra', 120 - def _reduce_24( val, _values, result ) + def _reduce_23( val, _values, result ) if val[0].instance_of?(AST::ASTArray) Puppet.notice "invalid name" raise Puppet::ParseError, "Invalid name" @@ -832,7 +961,7 @@ module_eval <<'.,.,', 'grammar.ra', 120 .,., module_eval <<'.,.,', 'grammar.ra', 126 - def _reduce_25( val, _values, result ) + def _reduce_24( val, _values, result ) # a template setting for a type if val[0].instance_of?(AST::ASTArray) raise Puppet::ParseError, "Invalid type" @@ -843,7 +972,7 @@ module_eval <<'.,.,', 'grammar.ra', 126 .,., module_eval <<'.,.,', 'grammar.ra', 149 - def _reduce_26( val, _values, result ) + def _reduce_25( val, _values, result ) unless Puppet[:storeconfigs] raise Puppet::ParseError, "You cannot collect without storeconfigs being set" end @@ -867,7 +996,7 @@ module_eval <<'.,.,', 'grammar.ra', 149 .,., module_eval <<'.,.,', 'grammar.ra', 158 - def _reduce_27( val, _values, result ) + def _reduce_26( val, _values, result ) unless Puppet[:storeconfigs] raise Puppet::ParseError, "You cannot collect without storeconfigs being set" end @@ -877,16 +1006,16 @@ module_eval <<'.,.,', 'grammar.ra', 158 .,., module_eval <<'.,.,', 'grammar.ra', 162 - def _reduce_28( val, _values, result ) + def _reduce_27( val, _values, result ) result = ast AST::ObjectInst, :children => [val[0],val[2]] result end .,., - # reduce 29 omitted + # reduce 28 omitted module_eval <<'.,.,', 'grammar.ra', 172 - def _reduce_30( val, _values, result ) + def _reduce_29( val, _values, result ) if val[0].instance_of?(AST::ObjectInst) result = ast AST::ASTArray, :children => [val[0],val[2]] else @@ -897,24 +1026,26 @@ module_eval <<'.,.,', 'grammar.ra', 172 end .,., - # reduce 31 omitted + # reduce 30 omitted - # reduce 32 omitted + # reduce 31 omitted module_eval <<'.,.,', 'grammar.ra', 179 - def _reduce_33( val, _values, result ) + def _reduce_32( val, _values, result ) result = ast AST::Name, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 183 - def _reduce_34( val, _values, result ) + def _reduce_33( val, _values, result ) result = ast AST::Type, :value => val[0] result end .,., + # reduce 34 omitted + # reduce 35 omitted # reduce 36 omitted @@ -925,10 +1056,8 @@ module_eval <<'.,.,', 'grammar.ra', 183 # reduce 39 omitted - # reduce 40 omitted - module_eval <<'.,.,', 'grammar.ra', 196 - def _reduce_41( val, _values, result ) + def _reduce_40( val, _values, result ) # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0].sub(/^\$/,'') result = ast AST::VarDef, :name => variable, :value => val[2] @@ -937,21 +1066,21 @@ module_eval <<'.,.,', 'grammar.ra', 196 .,., module_eval <<'.,.,', 'grammar.ra', 201 - def _reduce_42( val, _values, result ) + def _reduce_41( val, _values, result ) result = ast AST::ASTArray result end .,., module_eval <<'.,.,', 'grammar.ra', 201 - def _reduce_43( val, _values, result ) + def _reduce_42( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 210 - def _reduce_44( val, _values, result ) + def _reduce_43( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -963,17 +1092,17 @@ module_eval <<'.,.,', 'grammar.ra', 210 .,., module_eval <<'.,.,', 'grammar.ra', 215 - def _reduce_45( val, _values, result ) + def _reduce_44( val, _values, result ) leaf = ast AST::String, :value => val[0] result = ast AST::ObjectParam, :param => leaf, :value => val[2] result end .,., - # reduce 46 omitted + # reduce 45 omitted module_eval <<'.,.,', 'grammar.ra', 224 - def _reduce_47( val, _values, result ) + def _reduce_46( val, _values, result ) if val[0].instance_of?(AST::ASTArray) result = val[0].push(val[2]) else @@ -983,6 +1112,8 @@ module_eval <<'.,.,', 'grammar.ra', 224 end .,., + # reduce 47 omitted + # reduce 48 omitted # reduce 49 omitted @@ -999,10 +1130,8 @@ module_eval <<'.,.,', 'grammar.ra', 224 # reduce 55 omitted - # reduce 56 omitted - module_eval <<'.,.,', 'grammar.ra', 243 - def _reduce_57( val, _values, result ) + def _reduce_56( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], @@ -1013,35 +1142,35 @@ module_eval <<'.,.,', 'grammar.ra', 243 .,., module_eval <<'.,.,', 'grammar.ra', 247 - def _reduce_58( val, _values, result ) + def _reduce_57( val, _values, result ) result = ast AST::String, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 249 - def _reduce_59( val, _values, result ) + def _reduce_58( val, _values, result ) result = ast AST::FlatString, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 253 - def _reduce_60( val, _values, result ) + def _reduce_59( val, _values, result ) result = ast AST::Boolean, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 257 - def _reduce_61( val, _values, result ) + def _reduce_60( val, _values, result ) result = ast AST::ObjectRef, :type => val[0], :name => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 270 - def _reduce_62( val, _values, result ) + def _reduce_61( val, _values, result ) args = { :test => val[1], :statements => val[3] @@ -1056,19 +1185,19 @@ module_eval <<'.,.,', 'grammar.ra', 270 end .,., - # reduce 63 omitted + # reduce 62 omitted module_eval <<'.,.,', 'grammar.ra', 275 - def _reduce_64( val, _values, result ) + def _reduce_63( val, _values, result ) result = ast AST::Else, :statements => val[2] result end .,., - # reduce 65 omitted + # reduce 64 omitted module_eval <<'.,.,', 'grammar.ra', 287 - def _reduce_66( val, _values, result ) + def _reduce_65( val, _values, result ) options = val[3] unless options.instance_of?(AST::ASTArray) options = ast AST::ASTArray, :children => [val[3]] @@ -1078,10 +1207,10 @@ module_eval <<'.,.,', 'grammar.ra', 287 end .,., - # reduce 67 omitted + # reduce 66 omitted module_eval <<'.,.,', 'grammar.ra', 297 - def _reduce_68( val, _values, result ) + def _reduce_67( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push val[1] result = val[0] @@ -1093,14 +1222,14 @@ module_eval <<'.,.,', 'grammar.ra', 297 .,., module_eval <<'.,.,', 'grammar.ra', 301 - def _reduce_69( val, _values, result ) + def _reduce_68( val, _values, result ) result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., module_eval <<'.,.,', 'grammar.ra', 306 - def _reduce_70( val, _values, result ) + def _reduce_69( val, _values, result ) result = ast(AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) @@ -1109,10 +1238,10 @@ module_eval <<'.,.,', 'grammar.ra', 306 end .,., - # reduce 71 omitted + # reduce 70 omitted module_eval <<'.,.,', 'grammar.ra', 316 - def _reduce_72( val, _values, result ) + def _reduce_71( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1124,25 +1253,25 @@ module_eval <<'.,.,', 'grammar.ra', 316 .,., module_eval <<'.,.,', 'grammar.ra', 320 - def _reduce_73( val, _values, result ) + def _reduce_72( val, _values, result ) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., - # reduce 74 omitted + # reduce 73 omitted module_eval <<'.,.,', 'grammar.ra', 322 - def _reduce_75( val, _values, result ) + def _reduce_74( val, _values, result ) result = val[1] result end .,., - # reduce 76 omitted + # reduce 75 omitted module_eval <<'.,.,', 'grammar.ra', 333 - def _reduce_77( val, _values, result ) + def _reduce_76( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1154,12 +1283,14 @@ module_eval <<'.,.,', 'grammar.ra', 333 .,., module_eval <<'.,.,', 'grammar.ra', 337 - def _reduce_78( val, _values, result ) + def _reduce_77( val, _values, result ) result = ast AST::ObjectParam, :param => val[0], :value => val[2] result end .,., + # reduce 78 omitted + # reduce 79 omitted # reduce 80 omitted @@ -1170,77 +1301,15 @@ module_eval <<'.,.,', 'grammar.ra', 337 # reduce 83 omitted - # reduce 84 omitted - module_eval <<'.,.,', 'grammar.ra', 347 - def _reduce_85( val, _values, result ) + def _reduce_84( val, _values, result ) result = ast AST::Default, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 404 - def _reduce_86( val, _values, result ) - # importing files - # yuk, i hate keywords - # we'll probably have to have some kind of search path eventually - # but for now, just use a path relative to the file doing the importing - dir = @lexer.file.sub(%r{[^/]+$},'').sub(/\/$/, '') - if dir == "" - dir = "." - end - result = ast AST::ASTArray - - Dir.chdir(dir) { - # We can't interpolate at this point since we don't have any - # scopes set up. Warn the user if they use a variable reference - pat = val[1].value - if pat.index("$") - Puppet.warning( - "The import of #{pat} contains a variable reference;" + - " variables are not interpolated for imports " + - "in file #{@lexer.file} at line #{@lexer.line}" - ) - end - files = Dir.glob(pat) - if files.size == 0 - files = Dir.glob(pat + ".pp") - if files.size == 0 - raise Puppet::ImportError.new("No file(s) found for import " + - "of '#{pat}'") - end - end - - files.each { |file| - parser = Puppet::Parser::Parser.new() - parser.files = self.files - Puppet.debug("importing '%s'" % file) - - unless file =~ /^#{File::SEPARATOR}/ - file = File.join(dir, file) - end - begin - parser.file = file - rescue Puppet::ImportError - Puppet.warning( - "Importing %s would result in an import loop" % - File.join(dir, file) - ) - next - end - # push the results into the main result array - # We always return an array when we parse. - parser.parse.each do |child| - result.push child - end - } - } - result - end -.,., - -module_eval <<'.,.,', 'grammar.ra', 420 - def _reduce_87( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 367 + def _reduce_85( val, _values, result ) args = { :type => ast(AST::Name, :value => val[1]), :args => val[2], @@ -1256,8 +1325,8 @@ module_eval <<'.,.,', 'grammar.ra', 420 end .,., -module_eval <<'.,.,', 'grammar.ra', 432 - def _reduce_88( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 379 + def _reduce_86( val, _values, result ) args = { :type => ast(AST::Name, :value => val[1]), :args => val[2], @@ -1273,8 +1342,8 @@ module_eval <<'.,.,', 'grammar.ra', 432 end .,., -module_eval <<'.,.,', 'grammar.ra', 446 - def _reduce_89( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 393 + def _reduce_87( val, _values, result ) #:args => val[2], args = { :type => ast(AST::Name, :value => val[1]), @@ -1289,8 +1358,8 @@ module_eval <<'.,.,', 'grammar.ra', 446 end .,., -module_eval <<'.,.,', 'grammar.ra', 456 - def _reduce_90( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 403 + def _reduce_88( val, _values, result ) args = { :type => ast(AST::Name, :value => val[1]), :code => ast(AST::ASTArray, :children => []) @@ -1304,8 +1373,8 @@ module_eval <<'.,.,', 'grammar.ra', 456 end .,., -module_eval <<'.,.,', 'grammar.ra', 473 - def _reduce_91( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 420 + def _reduce_89( val, _values, result ) unless val[1].instance_of?(AST::ASTArray) val[1] = ast AST::ASTArray, :line => val[1].line, @@ -1324,8 +1393,8 @@ module_eval <<'.,.,', 'grammar.ra', 473 end .,., -module_eval <<'.,.,', 'grammar.ra', 488 - def _reduce_92( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 435 + def _reduce_90( val, _values, result ) unless val[1].instance_of?(AST::ASTArray) val[1] = ast AST::ASTArray, :line => val[1].line, @@ -1344,10 +1413,10 @@ module_eval <<'.,.,', 'grammar.ra', 488 end .,., - # reduce 93 omitted + # reduce 91 omitted -module_eval <<'.,.,', 'grammar.ra', 499 - def _reduce_94( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 446 + def _reduce_92( val, _values, result ) if val[0].instance_of?(AST::ASTArray) result = val[0] result.push val[2] @@ -1358,45 +1427,45 @@ module_eval <<'.,.,', 'grammar.ra', 499 end .,., -module_eval <<'.,.,', 'grammar.ra', 503 - def _reduce_95( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 450 + def _reduce_93( val, _values, result ) result = ast AST::HostName, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 505 - def _reduce_96( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 452 + def _reduce_94( val, _values, result ) result = ast AST::HostName, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 507 - def _reduce_97( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 454 + def _reduce_95( val, _values, result ) result = ast AST::Default, :value => val[0] result end .,., -module_eval <<'.,.,', 'grammar.ra', 511 - def _reduce_98( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 458 + def _reduce_96( val, _values, result ) result = ast AST::ASTArray, :children => [] result end .,., - # reduce 99 omitted + # reduce 97 omitted -module_eval <<'.,.,', 'grammar.ra', 516 - def _reduce_100( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 463 + def _reduce_98( val, _values, result ) result = val[1] result end .,., -module_eval <<'.,.,', 'grammar.ra', 523 - def _reduce_101( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 470 + def _reduce_99( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -1406,10 +1475,10 @@ module_eval <<'.,.,', 'grammar.ra', 523 end .,., - # reduce 102 omitted + # reduce 100 omitted -module_eval <<'.,.,', 'grammar.ra', 533 - def _reduce_103( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 480 + def _reduce_101( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] @@ -1420,8 +1489,8 @@ module_eval <<'.,.,', 'grammar.ra', 533 end .,., -module_eval <<'.,.,', 'grammar.ra', 541 - def _reduce_104( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 488 + def _reduce_102( val, _values, result ) msg = "Deprecation notice: #{val[0].value} must now include '$' in prototype" msg += " at line %s" % @lexer.line msg += " in file %s" % @lexer.file if @lexer.file @@ -1431,8 +1500,8 @@ module_eval <<'.,.,', 'grammar.ra', 541 end .,., -module_eval <<'.,.,', 'grammar.ra', 548 - def _reduce_105( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 495 + def _reduce_103( val, _values, result ) msg = "Deprecation notice: #{val[0].value} must now include '$' in prototype" msg += " at line %s" % @lexer.line msg += " in file %s" % @lexer.file if @lexer.file @@ -1442,46 +1511,46 @@ module_eval <<'.,.,', 'grammar.ra', 548 end .,., -module_eval <<'.,.,', 'grammar.ra', 550 - def _reduce_106( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 497 + def _reduce_104( val, _values, result ) result = ast AST::CompArgument, :children => [val[0],val[2]] result end .,., -module_eval <<'.,.,', 'grammar.ra', 552 - def _reduce_107( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 499 + def _reduce_105( val, _values, result ) result = ast AST::CompArgument, :children => [val[0]] result end .,., - # reduce 108 omitted + # reduce 106 omitted -module_eval <<'.,.,', 'grammar.ra', 557 - def _reduce_109( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 504 + def _reduce_107( val, _values, result ) result = ast AST::Name, :value => val[1] result end .,., -module_eval <<'.,.,', 'grammar.ra', 562 - def _reduce_110( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 509 + def _reduce_108( val, _values, result ) name = val[0].sub(/^\$/,'') result = ast AST::Variable, :value => name result end .,., -module_eval <<'.,.,', 'grammar.ra', 567 - def _reduce_111( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 514 + def _reduce_109( val, _values, result ) result = ast AST::Name, :value => val[0].sub(/^\$/,'') result end .,., -module_eval <<'.,.,', 'grammar.ra', 575 - def _reduce_112( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 522 + def _reduce_110( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else @@ -1491,21 +1560,21 @@ module_eval <<'.,.,', 'grammar.ra', 575 end .,., -module_eval <<'.,.,', 'grammar.ra', 577 - def _reduce_113( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 524 + def _reduce_111( val, _values, result ) result = ast AST::ASTArray result end .,., - # reduce 114 omitted + # reduce 112 omitted - # reduce 115 omitted + # reduce 113 omitted - # reduce 116 omitted + # reduce 114 omitted -module_eval <<'.,.,', 'grammar.ra', 582 - def _reduce_117( val, _values, result ) +module_eval <<'.,.,', 'grammar.ra', 529 + def _reduce_115( val, _values, result ) result = nil result end |