# # 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..ide506d3a623', 'grammar.ra', 621 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..ide506d3a623 ##### 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, 3, 67, :_reduce_20, 1, 68, :_reduce_none, 1, 68, :_reduce_none, 1, 68, :_reduce_none, 5, 55, :_reduce_24, 5, 55, :_reduce_25, 5, 55, :_reduce_26, 4, 66, :_reduce_27, 2, 56, :_reduce_28, 1, 77, :_reduce_29, 2, 77, :_reduce_30, 2, 57, :_reduce_31, 1, 78, :_reduce_none, 1, 78, :_reduce_none, 3, 79, :_reduce_34, 3, 79, :_reduce_35, 1, 80, :_reduce_none, 1, 80, :_reduce_none, 3, 80, :_reduce_38, 1, 81, :_reduce_none, 3, 81, :_reduce_40, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 3, 83, :_reduce_43, 3, 83, :_reduce_44, 1, 84, :_reduce_none, 1, 84, :_reduce_none, 4, 86, :_reduce_47, 1, 72, :_reduce_none, 3, 72, :_reduce_49, 0, 73, :_reduce_none, 1, 73, :_reduce_none, 1, 69, :_reduce_52, 1, 88, :_reduce_53, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 3, 58, :_reduce_60, 0, 74, :_reduce_61, 1, 74, :_reduce_62, 3, 74, :_reduce_63, 3, 92, :_reduce_64, 1, 93, :_reduce_none, 3, 93, :_reduce_66, 1, 85, :_reduce_none, 1, 85, :_reduce_none, 1, 85, :_reduce_none, 1, 85, :_reduce_none, 1, 85, :_reduce_none, 1, 85, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 4, 96, :_reduce_82, 1, 71, :_reduce_83, 1, 71, :_reduce_84, 1, 95, :_reduce_85, 4, 76, :_reduce_86, 4, 76, :_reduce_87, 6, 60, :_reduce_88, 0, 98, :_reduce_none, 4, 98, :_reduce_90, 1, 97, :_reduce_none, 5, 59, :_reduce_92, 1, 99, :_reduce_none, 2, 99, :_reduce_94, 5, 100, :_reduce_95, 4, 100, :_reduce_96, 1, 101, :_reduce_none, 3, 101, :_reduce_98, 3, 89, :_reduce_99, 1, 103, :_reduce_none, 3, 103, :_reduce_101, 1, 105, :_reduce_none, 3, 105, :_reduce_103, 3, 104, :_reduce_104, 1, 102, :_reduce_none, 1, 102, :_reduce_none, 1, 102, :_reduce_none, 1, 102, :_reduce_none, 1, 102, :_reduce_none, 1, 102, :_reduce_none, 1, 102, :_reduce_111, 2, 61, :_reduce_112, 6, 63, :_reduce_113, 5, 63, :_reduce_114, 6, 64, :_reduce_115, 5, 64, :_reduce_116, 6, 65, :_reduce_117, 5, 65, :_reduce_118, 1, 106, :_reduce_none, 1, 106, :_reduce_none, 1, 109, :_reduce_none, 3, 109, :_reduce_122, 1, 110, :_reduce_none, 1, 110, :_reduce_none, 1, 110, :_reduce_none, 0, 53, :_reduce_126, 0, 111, :_reduce_127, 1, 107, :_reduce_none, 3, 107, :_reduce_129, 3, 107, :_reduce_130, 1, 112, :_reduce_none, 3, 112, :_reduce_132, 3, 113, :_reduce_133, 1, 113, :_reduce_134, 3, 113, :_reduce_135, 1, 113, :_reduce_136, 1, 108, :_reduce_none, 2, 108, :_reduce_138, 1, 70, :_reduce_139, 3, 90, :_reduce_140, 2, 90, :_reduce_141, 1, 94, :_reduce_none, 1, 94, :_reduce_none, 0, 75, :_reduce_none, 1, 75, :_reduce_145 ] racc_reduce_n = 146 racc_shift_n = 240 racc_action_table = [ 59, 50, 52, 50, 52, 97, 59, 50, 52, 33, 146, 75, 59, 50, 52, 76, 69, -105, 59, 50, 52, 171, 111, 120, 59, 50, 52, 117, 69, 32, 84, 45, 38, 45, 69, 64, 67, 45, 54, 70, 69, 64, 108, 45, 146, 70, 137, 64, 67, 45, 150, 70, 121, 64, 67, 45, 39, 70, 178, 64, 67, 50, 52, 70, 59, 50, 52, 50, 52, 122, 59, 50, 52, 48, 134, 135, 59, 50, 52, 75, 69, 99, 59, 50, 52, -110, 69, 124, 59, 50, 52, 45, 69, 120, 143, 45, 54, 45, 69, 64, 67, 45, 54, 70, 69, 64, 67, 45, 126, 70, -107, 64, 67, 45, -108, 70, 139, 64, 67, 45, 183, 70, 87, 64, 67, 138, 99, 70, 59, 50, 52, -105, 173, 45, 59, 50, 52, 177, 54, 205, 59, 50, 52, 119, 69, 134, 135, 50, 52, 197, 69, 208, 173, 50, 52, 179, 111, 177, 180, 45, 41, 215, 111, 64, 67, 45, 198, 70, 111, 64, 67, 45, 41, 70, 214, 64, 163, 45, 124, 70, 124, 64, 163, 45, -106, 70, 210, 64, 163, 50, 52, 70, 35, 209, 42, 50, 52, 43, 202, 34, 35, 120, 50, 52, 111, 164, 42, 34, 99, 43, 111, 50, 52, 50, 52, 50, 52, 111, 150, 45, 50, 52, 147, 64, 163, 45, 111, 70, 111, 64, 163, -107, 45, 70, 152, 111, 64, 163, 154, 155, 70, 45, -108, 45, 211, 64, 163, 64, 163, 70, 45, 70, 212, 87, 64, 163, 87, 87, 70, 48, 50, 52, 213, 56, 45, 219, 140, 45, 45, 54, 134, 135, 54, 54, -105, 224, 17, 154, 155, 46, 216, 84, 206, 124, 76, -106, 14, -109, 20, 23, 45, 1, 5, 17, 9, 54, 12, -108, 16, 217, 24, -107, -110, 14, 56, 20, 23, 150, 1, 5, 17, 9, 82, 12, -106, 16, 220, 24, 225, 227, 14, 81, 20, 23, 145, 1, 5, 17, 9, 127, 12, 124, 16, 232, 24, 77, 141, 14, 234, 20, 23, 131, 1, 5, 17, 9, 132, 12, 30, 16, 235, 24, 151, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, 193, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, 238, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, 181, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, 239, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, nil, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, nil, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, nil, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, nil, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, 17, 9, nil, 12, nil, 16, nil, 24, nil, nil, 14, nil, 20, 23, nil, 1, 5, nil, 9, nil, 12, nil, 16, nil, 24 ] racc_action_check = [ 75, 75, 75, 46, 46, 44, 56, 56, 56, 2, 108, 17, 153, 153, 153, 17, 75, 187, 146, 146, 146, 123, 56, 108, 59, 59, 59, 59, 153, 2, 44, 75, 6, 46, 146, 75, 75, 56, 46, 75, 59, 56, 56, 153, 124, 56, 89, 153, 153, 146, 125, 153, 72, 146, 146, 59, 6, 146, 128, 59, 59, 99, 99, 59, 30, 30, 30, 120, 120, 74, 48, 48, 48, 67, 89, 89, 14, 14, 14, 69, 30, 98, 16, 16, 16, 68, 48, 76, 202, 202, 202, 99, 14, 67, 98, 30, 99, 120, 16, 30, 30, 48, 120, 30, 202, 48, 48, 14, 77, 48, 66, 14, 14, 16, 65, 14, 93, 16, 16, 202, 133, 16, 136, 202, 202, 93, 165, 202, 212, 212, 212, 63, 215, 136, 216, 216, 216, 215, 136, 165, 147, 147, 147, 61, 212, 133, 133, 167, 167, 148, 216, 167, 127, 210, 210, 130, 147, 127, 130, 212, 97, 175, 167, 212, 212, 216, 149, 212, 210, 216, 216, 147, 9, 216, 175, 147, 147, 167, 150, 147, 151, 167, 167, 210, 57, 167, 169, 210, 210, 223, 223, 210, 23, 169, 97, 122, 122, 97, 158, 23, 5, 163, 119, 119, 223, 119, 9, 5, 47, 9, 122, 139, 139, 138, 138, 20, 20, 119, 113, 223, 164, 164, 109, 223, 223, 122, 139, 223, 138, 122, 122, 107, 119, 122, 118, 164, 119, 119, 118, 118, 119, 139, 106, 138, 172, 139, 139, 138, 138, 139, 164, 138, 173, 87, 164, 164, 39, 38, 164, 12, 12, 12, 174, 12, 87, 182, 95, 39, 38, 87, 95, 95, 39, 38, 104, 204, 182, 204, 204, 12, 177, 36, 166, 180, 33, 185, 182, 71, 182, 182, 12, 182, 182, 166, 182, 12, 182, 188, 182, 178, 182, 189, 190, 166, 32, 166, 166, 200, 166, 166, 178, 166, 27, 166, 101, 166, 194, 166, 206, 209, 178, 24, 178, 178, 100, 178, 178, 194, 178, 80, 178, 82, 178, 218, 178, 19, 96, 194, 225, 194, 194, 84, 194, 194, 218, 194, 86, 194, 1, 194, 227, 194, 115, nil, 218, nil, 218, 218, nil, 218, 218, 227, 218, nil, 218, nil, 218, 141, 218, nil, nil, 227, nil, 227, 227, nil, 227, 227, 141, 227, nil, 227, nil, 227, 236, 227, nil, nil, 141, nil, 141, 141, nil, 141, 141, 236, 141, nil, 141, nil, 141, 132, 141, nil, nil, 236, nil, 236, 236, nil, 236, 236, 132, 236, nil, 236, nil, 236, 237, 236, nil, nil, 132, nil, 132, 132, nil, 132, 132, 237, 132, nil, 132, nil, 132, nil, 132, nil, nil, 237, nil, 237, 237, nil, 237, 237, 22, 237, nil, 237, nil, 237, nil, 237, nil, nil, 22, nil, 22, 22, nil, 22, 22, 234, 22, nil, 22, nil, 22, nil, 22, nil, nil, 234, nil, 234, 234, nil, 234, 234, 121, 234, nil, 234, nil, 234, nil, 234, nil, nil, 121, nil, 121, 121, nil, 121, 121, 0, 121, nil, 121, nil, 121, nil, 121, nil, nil, 0, nil, 0, 0, nil, 0, 0, nil, 0, nil, 0, nil, 0, nil, 0 ] racc_action_pointer = [ 479, 335, -9, nil, nil, 162, 13, nil, nil, 168, nil, nil, 257, nil, 74, nil, 80, 9, nil, 335, 212, nil, 428, 154, 279, nil, nil, 306, nil, nil, 62, nil, 298, 278, nil, nil, 246, nil, 235, 234, nil, nil, nil, nil, -5, nil, 0, 198, 68, nil, nil, nil, nil, nil, nil, nil, 4, 163, nil, 22, nil, 122, nil, 110, nil, 93, 89, 71, 64, 77, nil, 266, 46, nil, 63, -2, 49, 108, nil, nil, 307, nil, 293, nil, 303, nil, 340, 231, nil, 26, nil, nil, nil, 101, nil, 222, 330, 156, 71, 58, 319, 293, nil, nil, 253, nil, 221, 210, 1, 183, nil, nil, nil, 208, nil, 335, nil, nil, 229, 199, 64, 462, 192, 16, 35, 40, nil, 119, 52, nil, 148, nil, 394, 97, nil, nil, 100, nil, 210, 208, nil, 360, nil, nil, nil, nil, 16, 138, 142, 159, 140, 142, nil, 10, nil, nil, nil, nil, 189, nil, nil, nil, nil, 179, 217, 116, 275, 144, nil, 176, nil, nil, 237, 239, 239, 151, nil, 267, 292, nil, 245, nil, 258, nil, nil, 264, nil, -4, 276, 280, 281, nil, nil, nil, 309, nil, nil, nil, nil, nil, 297, nil, 86, nil, 268, nil, 289, nil, nil, 313, 150, nil, 126, nil, nil, 99, 132, nil, 326, nil, nil, nil, nil, 186, nil, 332, nil, 343, nil, nil, nil, nil, nil, nil, 445, nil, 377, 411, nil, nil ] racc_action_default = [ -126, -146, -146, -16, -5, -146, -146, -6, -7, -146, -8, -9, -33, -10, -146, -11, -146, -32, -12, -146, -146, -13, -1, -146, -29, -14, -2, -146, -15, -3, -146, -28, -146, -146, -120, -119, -126, -31, -126, -126, -121, -124, -123, -125, -126, -139, -146, -18, -146, -19, -83, -21, -84, -22, -52, -23, -61, -75, -77, -146, -79, -146, -91, -74, -85, -78, -73, -52, -76, -53, -111, -81, -146, -80, -146, -146, -61, -146, -112, -4, -126, -30, -61, -60, -146, -137, -146, -126, -46, -146, -45, -37, -39, -146, -36, -146, -146, -146, -146, -146, -146, -56, -57, -59, -55, -62, -58, -54, -52, -50, -110, -53, -109, -144, -48, -146, -65, -141, -146, -146, -146, -146, -146, -146, -146, -144, 240, -127, -146, -128, -146, -138, -146, -146, -42, -41, -146, -35, -146, -146, -34, -146, -122, -17, -20, -86, -146, -51, -146, -146, -145, -61, -140, -146, -142, -143, -106, -105, -146, -108, -99, -107, -100, -52, -146, -146, -146, -146, -93, -146, -97, -87, -146, -136, -146, -146, -131, -134, -146, -27, -146, -116, -146, -40, -38, -69, -71, -68, -72, -67, -70, -43, -44, -118, -146, -64, -49, -24, -25, -63, -144, -66, -146, -102, -146, -82, -89, -94, -92, -146, -146, -26, -146, -129, -130, -146, -146, -114, -146, -115, -117, -47, -104, -146, -101, -146, -88, -146, -98, -135, -132, -133, -113, -103, -146, -96, -146, -146, -95, -90 ] racc_goto_table = [ 22, 79, 51, 162, 102, 47, 113, 55, 62, 40, 74, 114, 103, 153, 158, 78, 176, 170, 109, 149, 168, 89, 95, 72, 83, 199, 125, 36, 88, 88, 86, 172, 130, 191, 192, 226, 51, 167, 96, 98, 26, 55, 100, 148, 144, 80, 104, 73, 203, 73, 160, 107, 31, 116, 204, 199, 53, 118, 128, 158, 37, 44, 170, 73, 184, 207, 174, 175, 19, 123, 133, nil, nil, nil, nil, nil, 85, 88, nil, nil, nil, 73, 90, 90, 85, nil, 186, 186, nil, 51, 53, nil, 73, nil, 55, 102, nil, 142, nil, 223, 106, 200, 196, 103, 230, 228, 221, 233, 73, 157, 51, 112, 157, 165, 161, 55, nil, 161, 158, nil, 129, 166, nil, nil, nil, nil, 88, nil, 187, 187, nil, 90, 182, 189, 189, nil, nil, 104, nil, nil, 195, 194, 107, 53, nil, 79, nil, 201, nil, nil, nil, nil, nil, nil, 157, nil, nil, 157, nil, 161, 110, 79, 161, 159, 53, 101, 159, nil, nil, nil, nil, nil, nil, 79, 112, nil, nil, 112, 218, 73, 90, nil, 188, 188, nil, nil, 73, nil, nil, nil, nil, 106, nil, 112, 112, nil, 222, 79, nil, nil, 157, nil, 112, nil, nil, 161, 229, nil, 159, nil, 231, 159, nil, 157, nil, 79, 79, nil, 161, 112, nil, nil, 112, 110, nil, nil, 110, 236, 156, nil, nil, 156, nil, nil, 237, 73, nil, nil, nil, nil, nil, nil, 190, 190, nil, 73, nil, 185, 185, 73, nil, 110, nil, nil, 159, nil, 101, nil, nil, nil, nil, nil, nil, nil, nil, 112, nil, 159, 110, nil, nil, 110, nil, 156, nil, nil, 156, nil, 112, 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, 110, nil, nil, nil, nil, 156, nil, nil, nil, nil, nil, nil, nil, 110, nil, nil, nil, nil, 156 ] racc_goto_check = [ 2, 4, 19, 54, 39, 17, 24, 21, 41, 60, 41, 36, 40, 44, 52, 21, 63, 52, 22, 25, 50, 30, 30, 47, 41, 42, 24, 56, 19, 19, 58, 25, 24, 35, 35, 48, 19, 49, 58, 17, 3, 21, 41, 23, 18, 56, 19, 26, 54, 26, 53, 21, 5, 41, 55, 42, 20, 43, 57, 52, 29, 59, 52, 26, 31, 50, 61, 62, 1, 41, 30, nil, nil, nil, nil, nil, 3, 19, nil, nil, nil, 26, 20, 20, 3, nil, 39, 39, nil, 19, 20, nil, 26, nil, 21, 39, nil, 60, nil, 44, 20, 24, 36, 40, 63, 52, 25, 54, 26, 19, 19, 46, 19, 17, 21, 21, nil, 21, 52, nil, 3, 2, nil, nil, nil, nil, 19, nil, 19, 19, nil, 20, 2, 21, 21, nil, nil, 19, nil, nil, 41, 2, 21, 20, nil, 4, nil, 41, nil, nil, nil, nil, nil, nil, 19, nil, nil, 19, nil, 21, 45, 4, 21, 20, 20, 38, 20, nil, nil, nil, nil, nil, nil, 4, 46, nil, nil, 46, 2, 26, 20, nil, 20, 20, nil, nil, 26, nil, nil, nil, nil, 20, nil, 46, 46, nil, 41, 4, nil, nil, 19, nil, 46, nil, nil, 21, 41, nil, 20, nil, 41, 20, nil, 19, nil, 4, 4, nil, 21, 46, nil, nil, 46, 45, nil, nil, 45, 2, 38, nil, nil, 38, nil, nil, 2, 26, nil, nil, nil, nil, nil, nil, 45, 45, nil, 26, nil, 38, 38, 26, nil, 45, nil, nil, 20, nil, 38, nil, nil, nil, nil, nil, nil, nil, nil, 46, nil, 20, 45, nil, nil, 45, nil, 38, nil, nil, 38, nil, 46, 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, 45, nil, nil, nil, nil, 38, nil, nil, nil, nil, nil, nil, nil, 45, nil, nil, nil, nil, 38 ] racc_goto_pointer = [ nil, 68, 0, 40, -21, 50, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, -7, -55, -10, 44, -5, -38, -66, -50, -94, 33, nil, nil, 54, -17, -72, nil, nil, nil, -105, -45, nil, 109, -52, -44, -6, -125, -2, -105, 104, 55, 9, -171, -85, -102, nil, -105, -69, -116, -110, 22, -22, -6, 52, 0, -61, -60, -111 ] racc_goto_default = [ nil, nil, nil, 94, 29, 4, 7, 8, 10, 11, 13, 15, 18, 21, 25, 28, 3, nil, 49, 63, 65, 66, nil, nil, nil, nil, 27, 2, 6, nil, nil, 91, 136, 92, 93, nil, nil, 115, 57, 58, 60, nil, 105, nil, nil, 68, 71, nil, nil, nil, nil, 169, 61, 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', 'namestrings', 'namestring', 'name', 'variable', 'quotedtext', 'resourceinstances', 'endsemi', 'params', 'endcomma', 'resourceref', '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', 'parent', 'hostnames', 'hostname', 'nothing', 'arguments', 'argument'] 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 module_eval <<'.,.,', 'grammar.ra', 85 def _reduce_20( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., # reduce 21 omitted # reduce 22 omitted # reduce 23 omitted module_eval <<'.,.,', 'grammar.ra', 113 def _reduce_24( 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', 116 def _reduce_25( val, _values, result ) # This is a deprecated syntax. error "All resource specifications require names" result end .,., module_eval <<'.,.,', 'grammar.ra', 122 def _reduce_26( 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', 127 def _reduce_27( val, _values, result ) result = ast AST::ResourceOverride, :object => val[0], :params => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 154 def _reduce_28( 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', 155 def _reduce_29( val, _values, result ) result = :virtual result end .,., module_eval <<'.,.,', 'grammar.ra', 156 def _reduce_30( val, _values, result ) result = :exported result end .,., module_eval <<'.,.,', 'grammar.ra', 179 def _reduce_31( 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 32 omitted # reduce 33 omitted module_eval <<'.,.,', 'grammar.ra', 190 def _reduce_34( val, _values, result ) if val[1] result = val[1] result.form = :virtual else result = :virtual end result end .,., module_eval <<'.,.,', 'grammar.ra', 198 def _reduce_35( val, _values, result ) if val[1] result = val[1] result.form = :exported else result = :exported end result end .,., # reduce 36 omitted # reduce 37 omitted module_eval <<'.,.,', 'grammar.ra', 206 def _reduce_38( val, _values, result ) result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2] result end .,., # reduce 39 omitted module_eval <<'.,.,', 'grammar.ra', 212 def _reduce_40( val, _values, result ) result = val[1] result.parens = true result end .,., # reduce 41 omitted # reduce 42 omitted module_eval <<'.,.,', 'grammar.ra', 220 def _reduce_43( 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', 225 def _reduce_44( 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 45 omitted # reduce 46 omitted module_eval <<'.,.,', 'grammar.ra', 232 def _reduce_47( val, _values, result ) result = ast AST::ResourceInst, :children => [val[0],val[2]] result end .,., # reduce 48 omitted module_eval <<'.,.,', 'grammar.ra', 242 def _reduce_49( 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 50 omitted # reduce 51 omitted module_eval <<'.,.,', 'grammar.ra', 249 def _reduce_52( val, _values, result ) result = ast AST::Name, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 253 def _reduce_53( val, _values, result ) result = ast AST::Type, :value => val[0] result end .,., # reduce 54 omitted # reduce 55 omitted # reduce 56 omitted # reduce 57 omitted # reduce 58 omitted # reduce 59 omitted module_eval <<'.,.,', 'grammar.ra', 266 def _reduce_60( 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', 271 def _reduce_61( val, _values, result ) result = ast AST::ASTArray result end .,., module_eval <<'.,.,', 'grammar.ra', 271 def _reduce_62( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 280 def _reduce_63( 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', 284 def _reduce_64( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., # reduce 65 omitted module_eval <<'.,.,', 'grammar.ra', 293 def _reduce_66( 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 67 omitted # reduce 68 omitted # reduce 69 omitted # reduce 70 omitted # 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 module_eval <<'.,.,', 'grammar.ra', 319 def _reduce_82( val, _values, result ) args = aryfy(val[2]) result = ast AST::Function, :name => val[0], :arguments => args, :ftype => :rvalue result end .,., module_eval <<'.,.,', 'grammar.ra', 323 def _reduce_83( val, _values, result ) result = ast AST::String, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 325 def _reduce_84( val, _values, result ) result = ast AST::FlatString, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 329 def _reduce_85( val, _values, result ) result = ast AST::Boolean, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 334 def _reduce_86( 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', 336 def _reduce_87( val, _values, result ) result = ast AST::ResourceRef, :type => val[0], :title => val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 349 def _reduce_88( 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 89 omitted module_eval <<'.,.,', 'grammar.ra', 354 def _reduce_90( val, _values, result ) result = ast AST::Else, :statements => val[2] result end .,., # reduce 91 omitted module_eval <<'.,.,', 'grammar.ra', 366 def _reduce_92( 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 93 omitted module_eval <<'.,.,', 'grammar.ra', 376 def _reduce_94( 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', 380 def _reduce_95( val, _values, result ) result = ast AST::CaseOpt, :value => val[0], :statements => val[3] result end .,., module_eval <<'.,.,', 'grammar.ra', 385 def _reduce_96( val, _values, result ) result = ast(AST::CaseOpt, :value => val[0], :statements => ast(AST::ASTArray) ) result end .,., # reduce 97 omitted module_eval <<'.,.,', 'grammar.ra', 395 def _reduce_98( 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', 399 def _reduce_99( val, _values, result ) result = ast AST::Selector, :param => val[0], :values => val[2] result end .,., # reduce 100 omitted module_eval <<'.,.,', 'grammar.ra', 401 def _reduce_101( val, _values, result ) result = val[1] result end .,., # reduce 102 omitted module_eval <<'.,.,', 'grammar.ra', 412 def _reduce_103( 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', 416 def _reduce_104( val, _values, result ) result = ast AST::ResourceParam, :param => val[0], :value => val[2] result end .,., # reduce 105 omitted # reduce 106 omitted # reduce 107 omitted # reduce 108 omitted # reduce 109 omitted # reduce 110 omitted module_eval <<'.,.,', 'grammar.ra', 426 def _reduce_111( val, _values, result ) result = ast AST::Default, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 488 def _reduce_112( 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 # push the results into the main result array # We always return an array when we parse. ast = parser.parse # Things that just get added to the classtable or whatever return nil if ast ast.each do |child| result.push child end end } } result end .,., module_eval <<'.,.,', 'grammar.ra', 498 def _reduce_113( 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', 502 def _reduce_114( val, _values, result ) interp.newdefine fqname(val[1]), :arguments => val[2] @lexer.indefine = false result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 510 def _reduce_115( 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', 515 def _reduce_116( 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', 520 def _reduce_117( val, _values, result ) interp.newnode val[1], :parent => val[2], :code => val[4] result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 523 def _reduce_118( val, _values, result ) interp.newnode val[1], :parent => val[2] result = nil result end .,., # reduce 119 omitted # reduce 120 omitted # reduce 121 omitted module_eval <<'.,.,', 'grammar.ra', 535 def _reduce_122( val, _values, result ) result = val[0] result = [result] unless result.is_a?(Array) result << val[2] result end .,., # reduce 123 omitted # reduce 124 omitted # reduce 125 omitted module_eval <<'.,.,', 'grammar.ra', 543 def _reduce_126( val, _values, result ) result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 547 def _reduce_127( val, _values, result ) result = ast AST::ASTArray, :children => [] result end .,., # reduce 128 omitted module_eval <<'.,.,', 'grammar.ra', 552 def _reduce_129( val, _values, result ) result = nil result end .,., module_eval <<'.,.,', 'grammar.ra', 556 def _reduce_130( val, _values, result ) result = val[1] result = [result] unless result[0].is_a?(Array) result end .,., # reduce 131 omitted module_eval <<'.,.,', 'grammar.ra', 563 def _reduce_132( val, _values, result ) result = val[0] result = [result] unless result[0].is_a?(Array) result << val[2] result end .,., module_eval <<'.,.,', 'grammar.ra', 568 def _reduce_133( val, _values, result ) Puppet.warning addcontext("Deprecation notice: #{val[0].value} must now include '$' in prototype") result = [val[0], val[2]] result end .,., module_eval <<'.,.,', 'grammar.ra', 572 def _reduce_134( val, _values, result ) Puppet.warning addcontext("Deprecation notice: #{val[0].value} must now include '$' in prototype") result = [val[0]] result end .,., module_eval <<'.,.,', 'grammar.ra', 574 def _reduce_135( val, _values, result ) result = [val[0], val[2]] result end .,., module_eval <<'.,.,', 'grammar.ra', 576 def _reduce_136( val, _values, result ) result = [val[0]] result end .,., # reduce 137 omitted module_eval <<'.,.,', 'grammar.ra', 581 def _reduce_138( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 585 def _reduce_139( val, _values, result ) result = ast AST::Variable, :value => val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 593 def _reduce_140( 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', 595 def _reduce_141( val, _values, result ) result = ast AST::ASTArray result end .,., # reduce 142 omitted # reduce 143 omitted # reduce 144 omitted module_eval <<'.,.,', 'grammar.ra', 600 def _reduce_145( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet