# # DO NOT MODIFY!!!! # This file is automatically generated by racc 1.4.5 # from racc grammer file "grammar.ra". # require 'racc/parser' require 'puppet' require 'puppet/loadedfile' require 'puppet/parser/lexer' require 'puppet/parser/ast' #require 'puppet/parser/interpreter' module Puppet class ParseError < Puppet::Error; end class ImportError < Racc::ParseError; end end Puppet[:typecheck] = true Puppet[:paramcheck] = true module Puppet module Parser class Parser < Racc::Parser module_eval <<'..end grammar.ra modeval..iddf5e17e6fb', 'grammar.ra', 636 require 'puppet/parser/functions' attr_reader :file, :interp attr_accessor :files # Add context to a message; useful for error messages and such. def addcontext(message, obj = nil) obj ||= @lexer message += " on line %s" % obj.line if file = obj.file message += " in file %s" % file end return message end # Create an AST array out of all of the args def aryfy(*args) if args[0].instance_of?(AST::ASTArray) result = args.shift args.each { |arg| result.push arg } else result = ast AST::ASTArray, :children => args end return result end # Create an AST object, and automatically add the file and line information if # available. def ast(klass, hash = nil) hash ||= {} unless hash[:line] hash[:line] = @lexer.line end unless hash[:file] if file = @lexer.file hash[:file] = file end end return klass.new(hash) end # Raise a Parse error. def error(message) except = Puppet::ParseError.new(message) except.line = @lexer.line if @lexer.file except.file = @lexer.file end raise except end 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 end if @files.detect { |f| f.file == file } raise Puppet::ImportError.new("Import loop detected") else @files << Puppet::LoadedFile.new(file) @lexer.file = file end end def initialize(interpreter) @interp = interpreter initvars() end # Initialize or reset all of our variables. def initvars @lexer = Puppet::Parser::Lexer.new() @files = [] end # The fully qualifed name, with the full namespace. def fqname(name) [@lexer.namespace, name].join("::").sub(/^::/, '') end def on_error(token,value,stack) #on '%s' at '%s' in\n'%s'" % [token,value,stack] #error = "line %s: parse error after '%s'" % # [@lexer.line,@lexer.last] error = "Syntax error at '%s'" % [value] except = Puppet::ParseError.new(error) except.line = @lexer.line if @lexer.file except.file = @lexer.file end raise except end # how should I do error handling here? def parse(string = nil) if string self.string = string end begin main = yyparse(@lexer,:scan) rescue Racc::ParseError => except error = Puppet::ParseError.new(except) error.line = @lexer.line error.file = @lexer.file error.set_backtrace except.backtrace raise error rescue Puppet::ParseError => except except.line ||= @lexer.line except.file ||= @lexer.file raise except rescue Puppet::Error => except # and this is a framework error except.line ||= @lexer.line except.file ||= @lexer.file raise except rescue Puppet::DevError => except except.line ||= @lexer.line except.file ||= @lexer.file raise except rescue => except error = Puppet::DevError.new(except.message) error.line = @lexer.line error.file = @lexer.file error.set_backtrace except.backtrace raise error end if main # Store the results as the top-level class. interp.newclass("", :code => main) return main end ensure @lexer.clear end # See if any of the files have changed. def reparse? if file = @files.detect { |file| file.changed? } return file.stamp else return false end end def string=(string) @lexer.string = string end # Make emacs happy # Local Variables: # mode: ruby # End: # $Id$ ..end grammar.ra modeval..iddf5e17e6fb ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 51, :_reduce_1, 1, 51, :_reduce_none, 1, 52, :_reduce_none, 2, 52, :_reduce_4, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 1, 54, :_reduce_none, 4, 62, :_reduce_17, 2, 62, :_reduce_18, 1, 67, :_reduce_none, 1, 67, :_reduce_none, 1, 68, :_reduce_none, 3, 68, :_reduce_22, 1, 70, :_reduce_none, 1, 70, :_reduce_none, 1, 70, :_reduce_none, 1, 69, :_reduce_none, 3, 69, :_reduce_27, 5, 55, :_reduce_28, 5, 55, :_reduce_29, 5, 55, :_reduce_30, 5, 66, :_reduce_31, 2, 56, :_reduce_32, 1, 79, :_reduce_33, 2, 79, :_reduce_34, 2, 57, :_reduce_35, 1, 80, :_reduce_none, 1, 80, :_reduce_none, 3, 81, :_reduce_38, 3, 81, :_reduce_39, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 3, 82, :_reduce_42, 1, 83, :_reduce_none, 3, 83, :_reduce_44, 1, 84, :_reduce_none, 1, 84, :_reduce_none, 3, 85, :_reduce_47, 3, 85, :_reduce_48, 1, 86, :_reduce_none, 1, 86, :_reduce_none, 4, 88, :_reduce_51, 1, 75, :_reduce_none, 3, 75, :_reduce_53, 0, 76, :_reduce_none, 1, 76, :_reduce_none, 1, 71, :_reduce_56, 1, 90, :_reduce_57, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 1, 89, :_reduce_none, 3, 58, :_reduce_64, 0, 77, :_reduce_65, 1, 77, :_reduce_66, 3, 77, :_reduce_67, 3, 94, :_reduce_68, 1, 95, :_reduce_none, 3, 95, :_reduce_70, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 1, 93, :_reduce_none, 4, 98, :_reduce_86, 1, 73, :_reduce_87, 1, 73, :_reduce_88, 1, 97, :_reduce_89, 4, 74, :_reduce_90, 4, 74, :_reduce_91, 6, 60, :_reduce_92, 0, 100, :_reduce_none, 4, 100, :_reduce_94, 1, 99, :_reduce_none, 5, 59, :_reduce_96, 1, 101, :_reduce_none, 2, 101, :_reduce_98, 5, 102, :_reduce_99, 4, 102, :_reduce_100, 1, 103, :_reduce_none, 3, 103, :_reduce_102, 3, 91, :_reduce_103, 1, 105, :_reduce_none, 3, 105, :_reduce_105, 1, 107, :_reduce_none, 3, 107, :_reduce_107, 3, 106, :_reduce_108, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_none, 1, 104, :_reduce_115, 2, 61, :_reduce_116, 6, 63, :_reduce_117, 5, 63, :_reduce_118, 6, 64, :_reduce_119, 5, 64, :_reduce_120, 6, 65, :_reduce_121, 5, 65, :_reduce_122, 1, 108, :_reduce_none, 1, 108, :_reduce_none, 1, 111, :_reduce_none, 3, 111, :_reduce_126, 1, 113, :_reduce_none, 1, 113, :_reduce_none, 1, 113, :_reduce_none, 0, 53, :_reduce_130, 0, 114, :_reduce_131, 1, 109, :_reduce_none, 3, 109, :_reduce_133, 3, 109, :_reduce_134, 1, 115, :_reduce_none, 3, 115, :_reduce_136, 3, 116, :_reduce_137, 1, 116, :_reduce_138, 3, 116, :_reduce_139, 1, 116, :_reduce_140, 1, 112, :_reduce_none, 2, 112, :_reduce_142, 1, 110, :_reduce_none, 2, 110, :_reduce_144, 1, 117, :_reduce_none, 1, 117, :_reduce_none, 1, 118, :_reduce_none, 1, 118, :_reduce_none, 1, 72, :_reduce_149, 3, 92, :_reduce_150, 2, 92, :_reduce_151, 1, 96, :_reduce_none, 1, 96, :_reduce_none, 0, 78, :_reduce_none, 1, 78, :_reduce_155 ] racc_reduce_n = 156 racc_shift_n = 255 racc_action_table = [ 62, 50, 52, 50, 52, 94, 62, 50, 52, 58, 164, 79, 62, 50, 52, 80, 73, 89, 62, 50, 52, 165, 73, 129, 62, 50, 52, 79, 73, 159, 91, 45, 43, 45, 120, 65, 70, 45, 96, 74, 120, 65, 70, 45, -111, 74, 152, 65, 70, 45, -112, 74, 186, 65, 175, 45, 44, 74, 162, 65, 116, 50, 52, 74, 62, 50, 52, 48, 199, 164, 62, 50, 52, 162, 149, 150, 62, 50, 52, -111, 73, 194, 62, 50, 52, -113, 73, 129, 62, 50, 52, 45, 73, 149, 150, 45, 96, 231, 73, 65, 70, 45, 36, 74, 73, 65, 70, 45, -109, 74, 230, 65, 70, 45, 128, 74, 154, 65, 70, 45, 107, 74, 35, 65, 70, 153, -109, 74, 62, 50, 52, 125, 32, 220, 62, 50, 52, -110, 224, 31, 62, 50, 52, 143, 73, 223, 145, 50, 52, 124, 73, 32, 189, 50, 52, 48, 73, 191, 31, 45, 39, 209, 120, 65, 70, 45, 39, 74, 120, 65, 70, 45, 133, 74, 133, 65, 70, 45, 79, 74, 48, 65, 175, 45, 214, 74, 108, 65, 175, 50, 52, 74, 107, 189, 40, 50, 52, 41, 191, 217, 40, 50, 52, 41, 120, 240, 32, 170, 171, 140, 120, 50, 52, 31, 177, 129, 120, 50, 52, 45, -110, 222, 163, 65, 175, 45, 120, 74, 162, 65, 175, 45, 120, 74, 130, 65, 175, 95, 225, 74, 226, 45, 50, 52, 227, 65, 175, 45, 45, 74, 228, 65, 175, 96, 95, 74, 229, 120, 48, 50, 52, 157, 56, 80, 254, 45, 50, 52, 95, 56, 96, -114, 45, -110, 58, 17, 65, 175, 46, 45, 74, 58, 50, 52, 96, 14, -109, 20, 24, 45, 1, 4, 215, 8, 54, 12, 45, 16, -112, 25, 155, 54, -111, 17, 149, 150, 95, 168, -114, 253, 162, 170, 171, 14, 238, 20, 24, 45, 1, 4, 17, 8, 96, 12, 86, 16, 232, 25, 156, 242, 14, 133, 20, 24, 83, 1, 4, 17, 8, 134, 12, 146, 16, 234, 25, 81, 248, 14, 133, 20, 24, 139, 1, 4, 17, 8, 136, 12, 30, 16, 235, 25, -112, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, 247, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, 250, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, 195, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, 197, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, nil, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, nil, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, nil, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, nil, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, 17, 8, nil, 12, nil, 16, nil, 25, nil, nil, 14, nil, 20, 24, nil, 1, 4, nil, 8, nil, 12, nil, 16, nil, 25 ] racc_action_check = [ 48, 48, 48, 107, 107, 37, 79, 79, 79, 108, 116, 17, 169, 169, 169, 17, 48, 33, 165, 165, 165, 122, 79, 116, 56, 56, 56, 73, 169, 108, 37, 48, 9, 107, 165, 48, 48, 79, 107, 48, 56, 79, 79, 169, 72, 79, 98, 169, 169, 165, 71, 169, 131, 165, 165, 56, 9, 165, 132, 56, 56, 129, 129, 56, 164, 164, 164, 70, 148, 133, 30, 30, 30, 135, 98, 98, 14, 14, 14, 119, 164, 138, 16, 16, 16, 77, 30, 70, 217, 217, 217, 129, 14, 148, 148, 164, 129, 192, 16, 164, 164, 30, 6, 164, 217, 30, 30, 14, 69, 30, 192, 14, 14, 16, 67, 14, 102, 16, 16, 217, 181, 16, 6, 217, 217, 102, 115, 217, 62, 62, 62, 62, 24, 181, 229, 229, 229, 63, 184, 24, 227, 227, 227, 91, 62, 184, 91, 153, 153, 61, 229, 4, 231, 224, 224, 159, 227, 231, 4, 62, 8, 161, 153, 62, 62, 229, 94, 62, 224, 229, 229, 227, 162, 229, 163, 227, 227, 153, 58, 227, 54, 153, 153, 224, 166, 153, 51, 224, 224, 241, 241, 224, 49, 136, 8, 177, 177, 8, 136, 174, 94, 154, 154, 94, 241, 219, 89, 219, 219, 89, 177, 128, 128, 89, 128, 175, 154, 182, 182, 241, 112, 182, 111, 241, 241, 177, 128, 241, 110, 177, 177, 154, 182, 177, 78, 154, 154, 44, 187, 154, 188, 128, 130, 130, 189, 128, 128, 182, 44, 128, 190, 182, 182, 44, 151, 182, 191, 130, 12, 12, 12, 106, 12, 36, 252, 151, 46, 46, 43, 35, 151, 76, 130, 201, 12, 252, 130, 130, 12, 43, 130, 46, 20, 20, 43, 252, 203, 252, 252, 12, 252, 252, 167, 252, 12, 252, 46, 252, 204, 252, 104, 46, 205, 167, 104, 104, 95, 127, 206, 251, 211, 127, 127, 167, 215, 167, 167, 95, 167, 167, 251, 167, 95, 167, 25, 167, 194, 167, 105, 223, 251, 80, 251, 251, 21, 251, 251, 194, 251, 81, 251, 92, 251, 196, 251, 19, 238, 194, 83, 194, 194, 88, 194, 194, 196, 194, 85, 194, 1, 194, 198, 194, 118, nil, 196, nil, 196, 196, nil, 196, 196, 198, 196, nil, 196, nil, 196, 233, 196, nil, nil, 198, nil, 198, 198, nil, 198, 198, 233, 198, nil, 198, nil, 198, 242, 198, nil, nil, 233, nil, 233, 233, nil, 233, 233, 242, 233, nil, 233, nil, 233, 139, 233, nil, nil, 242, nil, 242, 242, nil, 242, 242, 139, 242, nil, 242, nil, 242, 146, 242, nil, nil, 139, nil, 139, 139, nil, 139, 139, 146, 139, nil, 139, nil, 139, nil, 139, nil, nil, 146, nil, 146, 146, nil, 146, 146, 248, 146, nil, 146, nil, 146, nil, 146, nil, nil, 248, nil, 248, 248, nil, 248, 248, 23, 248, nil, 248, nil, 248, nil, 248, nil, nil, 23, nil, 23, 23, nil, 23, 23, 124, 23, nil, 23, nil, 23, nil, 23, nil, nil, 124, nil, 124, 124, nil, 124, 124, 0, 124, nil, 124, nil, 124, nil, 124, nil, nil, 0, nil, 0, 0, nil, 0, 0, nil, 0, nil, 0, nil, 0, nil, 0 ] racc_action_pointer = [ 489, 345, nil, nil, 113, nil, 84, nil, 156, 13, nil, nil, 256, nil, 74, nil, 80, 9, nil, 345, 279, 328, nil, 455, 94, 282, nil, nil, nil, nil, 68, nil, nil, -18, nil, 263, 257, -5, nil, nil, nil, nil, nil, 246, 215, nil, 263, nil, -2, 182, nil, 176, nil, nil, 178, nil, 22, nil, 176, nil, nil, 143, 126, 116, nil, nil, nil, 93, nil, 87, 65, 29, 23, 25, nil, nil, 250, 64, 228, 4, 293, 339, nil, 310, nil, 334, nil, nil, 345, 168, nil, 105, 335, nil, 162, 284, nil, nil, 26, nil, nil, nil, 101, nil, 256, 305, 256, 0, -9, nil, 218, 205, 199, nil, nil, 105, 1, nil, 341, 58, nil, nil, -18, nil, 472, nil, nil, 302, 208, 58, 239, 47, 48, 60, nil, 63, 160, nil, 75, 404, nil, nil, nil, nil, nil, nil, 421, nil, 45, nil, nil, 232, nil, 144, 198, nil, nil, nil, nil, 153, nil, 154, 134, 136, 62, 16, 177, 285, nil, 10, nil, nil, nil, nil, 190, 193, nil, 192, nil, nil, nil, 110, 214, nil, 128, nil, nil, 231, 233, 231, 227, 243, 87, nil, 319, nil, 336, nil, 353, nil, nil, 252, nil, 265, 277, 281, 287, nil, nil, nil, nil, 300, nil, nil, nil, 285, nil, 86, nil, 198, nil, nil, nil, 323, 150, nil, nil, 138, nil, 132, nil, 119, nil, 370, nil, nil, nil, nil, 340, nil, nil, 186, 387, nil, nil, nil, nil, nil, 438, nil, nil, 302, 257, nil, nil ] racc_action_default = [ -130, -156, -16, -5, -156, -6, -156, -7, -156, -156, -8, -9, -37, -10, -156, -11, -156, -36, -12, -156, -156, -156, -13, -1, -156, -33, -14, -2, -15, -3, -156, -124, -123, -130, -32, -156, -156, -130, -125, -128, -127, -129, -35, -130, -130, -149, -156, -18, -156, -19, -87, -20, -88, -21, -56, -23, -65, -24, -156, -25, -26, -156, -156, -79, -81, -89, -83, -156, -95, -78, -56, -82, -77, -57, -115, -84, -80, -85, -156, -156, -65, -156, -116, -65, -4, -130, -34, -64, -156, -156, -143, -156, -156, -141, -156, -130, -56, -50, -156, -49, -41, -43, -156, -40, -156, -156, -156, -156, -156, -52, -154, -156, -60, -61, -63, -59, -56, -66, -62, -58, -57, -114, -54, -113, -156, -151, -69, -156, -156, -156, -156, -156, -154, -156, 255, -154, -131, -132, -156, -156, -148, -144, -147, -145, -142, -146, -156, -126, -156, -46, -45, -156, -39, -156, -156, -38, -17, -90, -22, -156, -27, -156, -155, -65, -156, -55, -156, -156, -150, -156, -152, -153, -110, -109, -156, -56, -112, -156, -103, -111, -104, -156, -156, -97, -156, -101, -91, -156, -156, -140, -156, -138, -156, -135, -156, -120, -156, -122, -156, -44, -42, -73, -75, -72, -76, -71, -74, -47, -48, -29, -67, -154, -68, -53, -28, -93, -70, -156, -106, -156, -86, -98, -96, -156, -156, -30, -31, -156, -133, -156, -134, -156, -118, -156, -119, -121, -51, -92, -156, -108, -105, -156, -156, -102, -139, -137, -136, -117, -156, -107, -100, -156, -156, -99, -94 ] racc_goto_table = [ 23, 57, 110, 109, 113, 84, 114, 38, 180, 59, 174, 169, 185, 193, 19, 183, 55, 82, 210, 161, 60, 47, 75, 127, 75, 200, 132, 98, 104, 135, 207, 208, 99, 99, 61, 57, 237, 182, 75, 42, 166, 187, 178, 59, 188, 118, 33, 97, 97, 68, 55, 78, 27, 119, 60, 105, 75, 218, 122, 174, 115, 219, 158, 138, 185, 87, 85, 221, 88, 37, 75, 92, 181, 190, 192, 34, 144, 141, nil, 148, nil, nil, nil, 106, 99, 90, nil, 75, nil, 93, nil, 123, nil, 147, nil, nil, 57, 126, nil, 97, nil, 202, 202, 241, 59, nil, 243, nil, 246, 211, 112, 55, 213, 113, 131, 114, 160, 176, 57, 176, 236, 249, nil, 174, 167, 179, 59, 179, nil, nil, nil, 142, 173, 55, 173, nil, nil, 137, nil, 196, 99, nil, 204, 204, nil, nil, 198, nil, nil, 84, 205, 205, nil, nil, 118, 97, nil, 203, 203, nil, nil, nil, 119, 123, nil, 123, 176, nil, nil, 115, nil, 176, 75, nil, 179, 121, nil, 75, 84, 179, 84, 173, 172, nil, 172, nil, 173, nil, 123, 123, nil, nil, nil, nil, 233, nil, nil, nil, nil, 212, 123, nil, nil, nil, 216, nil, nil, 201, 201, nil, nil, nil, 123, 176, nil, 84, nil, 123, nil, 112, nil, 179, nil, nil, nil, 75, nil, nil, 173, nil, 176, 172, nil, 84, 84, 75, 172, 75, 179, nil, nil, nil, 251, nil, nil, 173, nil, 121, 252, 121, nil, nil, 239, nil, nil, nil, nil, nil, nil, 123, nil, nil, 244, nil, 245, nil, nil, nil, nil, nil, nil, nil, 206, 206, nil, nil, 123, nil, 172, nil, nil, nil, nil, nil, 121, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 172, 121, nil, nil, nil, nil, 121, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 121, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 121 ] racc_goto_check = [ 2, 22, 27, 38, 41, 4, 42, 63, 56, 23, 54, 46, 54, 66, 1, 52, 21, 23, 44, 28, 24, 17, 24, 45, 24, 33, 27, 32, 32, 27, 37, 37, 22, 22, 49, 22, 50, 51, 24, 31, 26, 28, 55, 23, 28, 22, 58, 21, 21, 43, 21, 43, 3, 23, 24, 17, 24, 56, 25, 54, 21, 57, 20, 59, 54, 43, 58, 52, 60, 61, 24, 62, 18, 64, 65, 5, 67, 68, nil, 32, nil, nil, nil, 43, 22, 3, nil, 24, nil, 3, nil, 48, nil, 63, nil, nil, 22, 43, nil, 21, nil, 41, 41, 46, 23, nil, 54, nil, 66, 27, 40, 21, 38, 41, 43, 42, 24, 22, 22, 22, 28, 56, nil, 54, 2, 23, 23, 23, nil, nil, nil, 58, 21, 21, 21, nil, nil, 3, nil, 2, 22, nil, 22, 22, nil, nil, 2, nil, nil, 4, 23, 23, nil, nil, 22, 21, nil, 21, 21, nil, nil, nil, 23, 48, nil, 48, 22, nil, nil, 21, nil, 22, 24, nil, 23, 47, nil, 24, 4, 23, 4, 21, 40, nil, 40, nil, 21, nil, 48, 48, nil, nil, nil, nil, 2, nil, nil, nil, nil, 43, 48, nil, nil, nil, 43, nil, nil, 40, 40, nil, nil, nil, 48, 22, nil, 4, nil, 48, nil, 40, nil, 23, nil, nil, nil, 24, nil, nil, 21, nil, 22, 40, nil, 4, 4, 24, 40, 24, 23, nil, nil, nil, 2, nil, nil, 21, nil, 47, 2, 47, nil, nil, 43, nil, nil, nil, nil, nil, nil, 48, nil, nil, 43, nil, 43, nil, nil, nil, nil, nil, nil, nil, 47, 47, nil, nil, 48, nil, 40, nil, nil, nil, nil, nil, 47, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 40, 47, nil, nil, nil, nil, 47, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 47, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 47 ] racc_goto_pointer = [ nil, 14, 0, 52, -18, 69, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 9, -57, nil, -45, 4, -11, -3, 8, 2, -82, -54, -91, nil, nil, 30, -16, -126, nil, nil, nil, -123, -53, nil, 54, -52, -50, 35, -144, -39, -116, 119, 35, 20, -179, -93, -115, nil, -118, -86, -120, -116, 42, -22, 35, 61, 34, -1, -63, -62, -123, -15, -12 ] racc_goto_default = [ nil, nil, nil, 103, 29, 3, 5, 7, 10, 11, 13, 15, 18, 22, 26, 28, 2, nil, 49, 51, 53, 69, 71, 72, 21, nil, nil, nil, nil, 6, 9, nil, nil, 100, 151, 101, 102, nil, nil, 111, 63, 64, 66, nil, 117, nil, nil, 76, 77, nil, nil, nil, nil, 184, 67, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ] racc_token_table = { false => 0, Object.new => 1, :LBRACK => 2, :DQTEXT => 3, :SQTEXT => 4, :RBRACK => 5, :LBRACE => 6, :RBRACE => 7, :SYMBOL => 8, :FARROW => 9, :COMMA => 10, :TRUE => 11, :FALSE => 12, :EQUALS => 13, :LESSEQUAL => 14, :NOTEQUAL => 15, :DOT => 16, :COLON => 17, :TYPE => 18, :LLCOLLECT => 19, :RRCOLLECT => 20, :QMARK => 21, :LPAREN => 22, :RPAREN => 23, :ISEQUAL => 24, :GREATEREQUAL => 25, :GREATERTHAN => 26, :LESSTHAN => 27, :IF => 28, :ELSE => 29, :IMPORT => 30, :DEFINE => 31, :ELSIF => 32, :VARIABLE => 33, :CLASS => 34, :INHERITS => 35, :NODE => 36, :BOOLEAN => 37, :NAME => 38, :SEMIC => 39, :CASE => 40, :DEFAULT => 41, :AT => 42, :LCOLLECT => 43, :RCOLLECT => 44, :CLASSNAME => 45, :CLASSREF => 46, :NOT => 47, :OR => 48, :AND => 49 } racc_use_result_var = true racc_nt_base = 50 Racc_arg = [ racc_action_table, racc_action_check, racc_action_default, racc_action_pointer, racc_goto_table, racc_goto_check, racc_goto_default, racc_goto_pointer, racc_nt_base, racc_reduce_table, racc_token_table, racc_shift_n, racc_reduce_n, racc_use_result_var ] Racc_token_to_s_table = [ '$end', 'error', 'LBRACK', 'DQTEXT', 'SQTEXT', 'RBRACK', 'LBRACE', 'RBRACE', 'SYMBOL', 'FARROW', 'COMMA', 'TRUE', 'FALSE', 'EQUALS', 'LESSEQUAL', 'NOTEQUAL', 'DOT', 'COLON', 'TYPE', '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', '$start', 'program', 'statements', 'nil', 'statement', 'resource', 'virtualresource', 'collection', 'assignment', 'casestatement', 'ifstatement', 'import', 'fstatement', 'definition', 'hostclass', 'nodedef', 'resourceoverride', 'funcvalues', 'namestrings', 'resourcerefs', 'namestring', 'name', 'variable', 'quotedtext', 'resourceref', 'resourceinstances', 'endsemi', 'params', 'endcomma', 'at', 'collectname', 'collectrhand', 'collstatements', 'collstatement', 'colljoin', 'collexpr', 'colllval', 'simplervalue', 'resourceinst', 'resourcename', 'type', 'selector', 'array', 'rvalue', 'param', 'rvalues', 'comma', 'boolean', 'funcrvalue', 'iftest', 'else', 'caseopts', 'caseopt', 'casevalues', 'selectlhand', 'svalues', 'selectval', 'sintvalues', 'fqname', 'argumentlist', 'classparent', 'hostnames', 'nodeparent', 'hostname', 'nothing', 'arguments', 'argument', 'nameordefault', 'fqnameordefault'] Racc_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted module_eval <<'.,.,', 'grammar.ra', 33 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', 49 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 module_eval <<'.,.,', 'grammar.ra', 71 def _reduce_17( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement result end .,., module_eval <<'.,.,', 'grammar.ra', 78 def _reduce_18( val, _values, result ) args = aryfy(val[1]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :statement result end .,., # reduce 19 omitted # reduce 20 omitted # reduce 21 omitted module_eval <<'.,.,', 'grammar.ra', 88 def _reduce_22( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., # reduce 23 omitted # reduce 24 omitted # reduce 25 omitted # reduce 26 omitted module_eval <<'.,.,', 'grammar.ra', 103 def _reduce_27( 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 .,., module_eval <<'.,.,', 'grammar.ra', 127 def _reduce_28( val, _values, result ) if val[0].instance_of?(AST::ASTArray) error "Invalid name" end array = val[2] if array.instance_of?(AST::ResourceInst) array = [array] end result = ast AST::ASTArray # this iterates across each specified resourceinstance array.each { |instance| unless instance.instance_of?(AST::ResourceInst) raise Puppet::Dev, "Got something that isn't an instance" end # now, i need to somehow differentiate between those things with # arrays in their names, and normal things result.push ast(AST::ResourceDef, :type => val[0], :title => instance[0], :params => instance[1]) } result end .,., module_eval <<'.,.,', 'grammar.ra', 130 def _reduce_29( val, _values, result ) # This is a deprecated syntax. error "All resource specifications require names" result end .,., module_eval <<'.,.,', 'grammar.ra', 136 def _reduce_30( val, _values, result ) # a template setting for a type if val[0].instance_of?(AST::ASTArray) error "Invalid type" end result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2]) result end .,., module_eval <<'.,.,', 'grammar.ra', 141 def _reduce_31( val, _values, result ) result = ast AST::ResourceOverride, :object => val[0], :params => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 168 def _reduce_32( val, _values, result ) type = val[0] if type == :exported and ! Puppet[:storeconfigs] error "You cannot collect without storeconfigs being set" end if val[1].is_a? AST::ResourceDefaults error "Defaults are not virtualizable" end method = type.to_s + "=" # Just mark our resources as exported and pass them through. if val[1].instance_of?(AST::ASTArray) val[1].each do |obj| obj.send(method, true) end else val[1].send(method, true) end result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 169 def _reduce_33( val, _values, result ) result = :virtual result end .,., module_eval <<'.,.,', 'grammar.ra', 170 def _reduce_34( val, _values, result ) result = :exported result end .,., module_eval <<'.,.,', 'grammar.ra', 193 def _reduce_35( 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] error "You cannot collect exported resources without storeconfigs being set" end result = ast AST::Collection, args result end .,., # reduce 36 omitted # reduce 37 omitted module_eval <<'.,.,', 'grammar.ra', 204 def _reduce_38( val, _values, result ) if val[1] result = val[1] result.form = :virtual else result = :virtual end result end .,., module_eval <<'.,.,', 'grammar.ra', 212 def _reduce_39( val, _values, result ) if val[1] result = val[1] result.form = :exported else result = :exported end result end .,., # reduce 40 omitted # reduce 41 omitted module_eval <<'.,.,', 'grammar.ra', 220 def _reduce_42( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] result end .,., # reduce 43 omitted module_eval <<'.,.,', 'grammar.ra', 226 def _reduce_44( val, _values, result ) result = val[1] result.parens = true result end .,., # reduce 45 omitted # reduce 46 omitted module_eval <<'.,.,', 'grammar.ra', 234 def _reduce_47( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr #result.push *val result end .,., module_eval <<'.,.,', 'grammar.ra', 239 def _reduce_48( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] #result = ast AST::CollExpr #result.push *val result end .,., # reduce 49 omitted # reduce 50 omitted module_eval <<'.,.,', 'grammar.ra', 246 def _reduce_51( val, _values, result ) result = ast AST::ResourceInst, :children => [val[0],val[2]] result end .,., # reduce 52 omitted module_eval <<'.,.,', 'grammar.ra', 256 def _reduce_53( val, _values, result ) if val[0].instance_of?(AST::ResourceInst) result = ast AST::ASTArray, :children => [val[0],val[2]] else val[0].push val[2] result = val[0] end result end .,., # reduce 54 omitted # reduce 55 omitted module_eval <<'.,.,', 'grammar.ra', 263 def _reduce_56( val, _values, result ) result = ast AST::Name, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 267 def _reduce_57( val, _values, result ) result = ast AST::Type, :value => val[0] result end .,., # reduce 58 omitted # reduce 59 omitted # reduce 60 omitted # reduce 61 omitted # reduce 62 omitted # reduce 63 omitted module_eval <<'.,.,', 'grammar.ra', 280 def _reduce_64( val, _values, result ) # this is distinct from referencing a variable variable = ast AST::Name, :value => val[0] result = ast AST::VarDef, :name => variable, :value => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 285 def _reduce_65( val, _values, result ) result = ast AST::ASTArray result end .,., module_eval <<'.,.,', 'grammar.ra', 285 def _reduce_66( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 294 def _reduce_67( 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', 298 def _reduce_68( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., # reduce 69 omitted module_eval <<'.,.,', 'grammar.ra', 307 def _reduce_70( 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 71 omitted # reduce 72 omitted # reduce 73 omitted # reduce 74 omitted # reduce 75 omitted # reduce 76 omitted # reduce 77 omitted # reduce 78 omitted # reduce 79 omitted # reduce 80 omitted # reduce 81 omitted # reduce 82 omitted # reduce 83 omitted # reduce 84 omitted # reduce 85 omitted module_eval <<'.,.,', 'grammar.ra', 333 def _reduce_86( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :rvalue result end .,., module_eval <<'.,.,', 'grammar.ra', 337 def _reduce_87( val, _values, result ) result = ast AST::String, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 339 def _reduce_88( val, _values, result ) result = ast AST::FlatString, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 343 def _reduce_89( val, _values, result ) result = ast AST::Boolean, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 348 def _reduce_90( val, _values, result ) Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized") result = ast AST::ResourceRef, :type => val[0], :title => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 350 def _reduce_91( val, _values, result ) result = ast AST::ResourceRef, :type => val[0], :title => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 363 def _reduce_92( val, _values, result ) args = { :test => val[1], :statements => val[3] } if val[5] args[:else] = val[5] end result = ast AST::IfStatement, args result end .,., # reduce 93 omitted module_eval <<'.,.,', 'grammar.ra', 368 def _reduce_94( val, _values, result ) result = ast AST::Else, :statements => val[2] result end .,., # reduce 95 omitted module_eval <<'.,.,', 'grammar.ra', 380 def _reduce_96( val, _values, result ) options = val[3] unless options.instance_of?(AST::ASTArray) options = ast AST::ASTArray, :children => [val[3]] end result = ast AST::CaseStatement, :test => val[1], :options => options result end .,., # reduce 97 omitted module_eval <<'.,.,', 'grammar.ra', 390 def _reduce_98( 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', 394 def _reduce_99( val, _values, result ) result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., module_eval <<'.,.,', 'grammar.ra', 399 def _reduce_100( val, _values, result ) result = ast(AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) ) result end .,., # reduce 101 omitted module_eval <<'.,.,', 'grammar.ra', 409 def _reduce_102( 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', 413 def _reduce_103( val, _values, result ) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., # reduce 104 omitted module_eval <<'.,.,', 'grammar.ra', 415 def _reduce_105( val, _values, result ) result = val[1] result end .,., # reduce 106 omitted module_eval <<'.,.,', 'grammar.ra', 426 def _reduce_107( 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', 430 def _reduce_108( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., # reduce 109 omitted # reduce 110 omitted # reduce 111 omitted # reduce 112 omitted # reduce 113 omitted # reduce 114 omitted module_eval <<'.,.,', 'grammar.ra', 440 def _reduce_115( val, _values, result ) result = ast AST::Default, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 495 def _reduce_116( 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(interp) 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 # This will normally add code to the 'main' class. parser.parse } } result end .,., module_eval <<'.,.,', 'grammar.ra', 505 def _reduce_117( val, _values, result ) interp.newdefine fqname(val[1]), :arguments => val[2], :code => val[4] @lexer.indefine = false result = nil #} | DEFINE NAME argumentlist parent LBRACE RBRACE { result end .,., module_eval <<'.,.,', 'grammar.ra', 509 def _reduce_118( val, _values, result ) interp.newdefine fqname(val[1]), :arguments => val[2] @lexer.indefine = false result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 517 def _reduce_119( val, _values, result ) # Our class gets defined in the parent namespace, not our own. @lexer.namepop interp.newclass fqname(val[1]), :code => val[4], :parent => val[2] result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 522 def _reduce_120( val, _values, result ) # Our class gets defined in the parent namespace, not our own. @lexer.namepop interp.newclass fqname(val[1]), :parent => val[2] result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 527 def _reduce_121( val, _values, result ) interp.newnode val[1], :parent => val[2], :code => val[4] result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 530 def _reduce_122( val, _values, result ) interp.newnode val[1], :parent => val[2] result = nil result end .,., # reduce 123 omitted # reduce 124 omitted # reduce 125 omitted module_eval <<'.,.,', 'grammar.ra', 542 def _reduce_126( val, _values, result ) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] result end .,., # reduce 127 omitted # reduce 128 omitted # reduce 129 omitted module_eval <<'.,.,', 'grammar.ra', 550 def _reduce_130( val, _values, result ) result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 554 def _reduce_131( val, _values, result ) result = ast AST::ASTArray, :children => [] result end .,., # reduce 132 omitted module_eval <<'.,.,', 'grammar.ra', 559 def _reduce_133( val, _values, result ) result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 563 def _reduce_134( val, _values, result ) result = val[1] result = [result] unless result[0].is_a?(Array) result end .,., # reduce 135 omitted module_eval <<'.,.,', 'grammar.ra', 570 def _reduce_136( val, _values, result ) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 575 def _reduce_137( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0], val[2]] result end .,., module_eval <<'.,.,', 'grammar.ra', 579 def _reduce_138( val, _values, result ) Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype") result = [val[0]] result end .,., module_eval <<'.,.,', 'grammar.ra', 581 def _reduce_139( val, _values, result ) result = [val[0], val[2]] result end .,., module_eval <<'.,.,', 'grammar.ra', 583 def _reduce_140( val, _values, result ) result = [val[0]] result end .,., # reduce 141 omitted module_eval <<'.,.,', 'grammar.ra', 588 def _reduce_142( val, _values, result ) result = val[1] result end .,., # reduce 143 omitted module_eval <<'.,.,', 'grammar.ra', 593 def _reduce_144( val, _values, result ) result = val[1] result end .,., # reduce 145 omitted # reduce 146 omitted # reduce 147 omitted # reduce 148 omitted module_eval <<'.,.,', 'grammar.ra', 600 def _reduce_149( val, _values, result ) result = ast AST::Variable, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 608 def _reduce_150( 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', 610 def _reduce_151( val, _values, result ) result = ast AST::ASTArray result end .,., # reduce 152 omitted # reduce 153 omitted # reduce 154 omitted module_eval <<'.,.,', 'grammar.ra', 615 def _reduce_155( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet