# # 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/parsedfile' 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..idf44fc81fef', 'grammar.ra', 815 require 'puppet/parser/functions' attr_reader :file attr_accessor :files # 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::ASTArray.new( :children => args ) end return result 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::ParsedFile.new(file) @lexer.file = file end end def initialize @lexer = Puppet::Parser::Lexer.new() @files = [] #if Puppet[:debug] # @yydebug = true #end 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] #if Puppet[:debug] #puts stack.inspect #puts stack.class #end #if @lexer.file # error += (" in '%s'" % @lexer.file) #end 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 begin yyparse(@lexer,:scan) rescue Racc::ParseError => except error = Puppet::ParseError.new(except) error.line = @lexer.line error.file = @lexer.file error.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 #if Puppet[:debug] # puts except.stack #end raise except rescue Puppet::DevError => except except.line ||= @lexer.line except.file ||= @lexer.file #if Puppet[:debug] # puts except.stack #end raise except rescue => except error = Puppet::DevError.new(except.message) error.line = @lexer.line error.file = @lexer.file error.backtrace = except.backtrace #if Puppet[:debug] # puts caller #end raise error end end def reparse? @files.detect { |file| file.changed? } end def string=(string) @lexer.string = string end # Make emacs happy # Local Variables: # mode: ruby # End: # $Id$ ..end grammar.ra modeval..idf44fc81fef ##### racc 1.4.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 44, :_reduce_1, 1, 44, :_reduce_none, 1, 45, :_reduce_none, 2, 45, :_reduce_4, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 1, 47, :_reduce_none, 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, 5, 48, :_reduce_22, 5, 48, :_reduce_23, 5, 48, :_reduce_24, 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, 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, 5, 52, :_reduce_61, 1, 79, :_reduce_none, 2, 79, :_reduce_63, 5, 80, :_reduce_64, 4, 80, :_reduce_65, 1, 81, :_reduce_none, 3, 81, :_reduce_67, 3, 70, :_reduce_68, 1, 83, :_reduce_none, 3, 83, :_reduce_70, 1, 85, :_reduce_none, 3, 85, :_reduce_72, 3, 84, :_reduce_73, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 1, 82, :_reduce_none, 1, 82, :_reduce_80, 2, 53, :_reduce_81, 6, 55, :_reduce_82, 5, 55, :_reduce_83, 6, 56, :_reduce_84, 5, 56, :_reduce_85, 6, 57, :_reduce_86, 5, 57, :_reduce_87, 1, 88, :_reduce_none, 3, 88, :_reduce_89, 1, 89, :_reduce_90, 1, 89, :_reduce_91, 1, 89, :_reduce_92, 0, 46, :_reduce_93, 1, 86, :_reduce_none, 3, 86, :_reduce_95, 3, 86, :_reduce_96, 1, 90, :_reduce_none, 3, 90, :_reduce_98, 3, 91, :_reduce_99, 1, 91, :_reduce_100, 3, 91, :_reduce_101, 1, 91, :_reduce_102, 1, 87, :_reduce_none, 2, 87, :_reduce_104, 1, 61, :_reduce_105, 1, 92, :_reduce_106, 3, 71, :_reduce_107, 2, 71, :_reduce_108, 1, 75, :_reduce_none, 1, 75, :_reduce_none, 0, 66, :_reduce_none, 1, 66, :_reduce_112 ] racc_reduce_n = 113 racc_shift_n = 185 racc_action_table = [ 47, 34, 37, 59, 155, 18, 47, 34, 37, 70, 148, 154, 47, 34, 37, 77, 18, 34, 37, 138, 34, 37, 18, 35, 35, 129, 34, 37, 18, 42, 82, -74, 68, 48, 49, 42, 30, 54, 60, 48, 49, 42, 30, 54, 75, 48, 49, -74, 42, 54, 47, 34, 37, 35, 42, 147, 47, 34, 37, 35, -77, -76, 47, 34, 37, 160, 18, 130, 29, 75, 106, 31, 18, 108, 29, -79, 161, 31, 18, 42, 110, 80, 139, 48, 49, 42, 140, 54, -76, 48, 49, 42, -77, 54, 144, 48, 87, 34, 37, 54, 47, 34, 37, 34, 37, 111, 47, 34, 37, 112, 114, 72, 47, 34, 37, 83, 18, 97, 138, -75, 43, 81, 18, 35, 171, 42, 112, 114, 18, 42, 35, 42, 151, 48, 49, 42, 35, 54, 80, 48, 49, 42, 99, 54, 72, 48, 49, -75, 158, 54, 47, 34, 37, 159, 59, 162, 47, 34, 37, 163, 164, -78, 75, 34, 37, 72, 18, 67, 68, 173, 66, 108, 18, 34, 37, 108, 65, 106, 18, 42, 62, 105, 32, 48, 49, 42, 26, 54, 18, 48, 49, 42, 103, 54, nil, 48, 49, 34, 37, 54, 120, 42, nil, 34, 37, 48, 49, nil, nil, 54, nil, nil, 18, 34, 37, nil, nil, 153, 18, 34, 37, nil, nil, nil, nil, 42, nil, nil, 18, 48, 49, 42, 166, 54, 18, 48, 49, nil, nil, 54, nil, 42, nil, 18, nil, 48, 49, 42, nil, 54, nil, 48, 49, 15, 17, 54, 22, 24, 168, 3, nil, 9, nil, 12, nil, 19, nil, nil, nil, 18, nil, nil, nil, 169, nil, nil, nil, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, 179, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, 142, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, 183, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, 184, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, 180, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, nil, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, nil, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, 18, 3, nil, 9, nil, 12, nil, 19, nil, nil, 15, 17, nil, 22, 24, nil, 3, nil, 9, nil, 12, nil, 19 ] racc_action_check = [ 130, 130, 130, 13, 127, 19, 65, 65, 65, 27, 118, 127, 47, 47, 47, 47, 130, 15, 15, 160, 43, 43, 65, 19, 160, 88, 75, 75, 47, 130, 53, 91, 27, 130, 130, 65, 70, 130, 13, 65, 65, 47, 3, 65, 115, 47, 47, 53, 43, 47, 113, 113, 113, 43, 75, 115, 82, 82, 82, 75, 92, 93, 59, 59, 59, 133, 113, 94, 70, 76, 87, 70, 82, 96, 3, 58, 133, 3, 59, 113, 76, 87, 100, 113, 113, 82, 102, 113, 57, 82, 82, 59, 56, 82, 107, 59, 59, 80, 80, 59, 12, 12, 12, 9, 9, 79, 148, 148, 148, 79, 79, 108, 163, 163, 163, 55, 12, 60, 99, 85, 9, 51, 148, 99, 150, 80, 150, 150, 163, 12, 80, 9, 124, 12, 12, 148, 9, 12, 49, 148, 148, 163, 62, 148, 129, 163, 163, 46, 131, 163, 106, 106, 106, 132, 64, 134, 164, 164, 164, 136, 137, 45, 36, 83, 83, 32, 106, 26, 66, 154, 24, 156, 164, 155, 155, 74, 22, 72, 83, 106, 17, 71, 4, 106, 106, 164, 2, 106, 155, 164, 164, 83, 68, 164, nil, 83, 83, 81, 81, 83, 81, 155, nil, 172, 172, 155, 155, nil, nil, 155, nil, nil, 81, 125, 125, nil, nil, 125, 172, 120, 120, nil, nil, nil, nil, 81, nil, nil, 125, 81, 81, 172, 139, 81, 120, 172, 172, nil, nil, 172, nil, 125, nil, 139, nil, 125, 125, 120, nil, 125, nil, 120, 120, 139, 139, 120, 139, 139, 140, 139, nil, 139, nil, 139, nil, 139, nil, nil, nil, 140, nil, nil, nil, 141, nil, nil, nil, nil, nil, 140, 140, nil, 140, 140, 141, 140, nil, 140, 165, 140, nil, 140, nil, nil, 141, 141, nil, 141, 141, 165, 141, nil, 141, 105, 141, nil, 141, nil, nil, 165, 165, nil, 165, 165, 105, 165, nil, 165, 173, 165, nil, 165, nil, nil, 105, 105, nil, 105, 105, 173, 105, nil, 105, 182, 105, nil, 105, nil, nil, 173, 173, nil, 173, 173, 182, 173, nil, 173, 167, 173, nil, 173, nil, nil, 182, 182, nil, 182, 182, 167, 182, nil, 182, nil, 182, nil, 182, nil, nil, 167, 167, nil, 167, 167, 6, 167, nil, 167, nil, 167, nil, 167, nil, nil, 6, 6, nil, 6, 6, 0, 6, nil, 6, nil, 6, nil, 6, nil, nil, 0, 0, nil, 0, 0, nil, 0, nil, 0, nil, 0, nil, 0 ] racc_action_pointer = [ 371, nil, 186, 38, 176, nil, 356, nil, nil, 100, nil, nil, 98, -3, nil, 14, nil, 144, nil, -13, nil, nil, 163, nil, 134, nil, 167, -1, nil, nil, nil, nil, 129, nil, nil, nil, 152, nil, nil, nil, nil, nil, nil, 17, nil, 142, 128, 10, nil, 118, nil, 102, nil, 28, nil, 109, 73, 69, 56, 60, 75, nil, 122, nil, 148, 4, 135, nil, 156, nil, 32, 175, 168, nil, 165, 23, 59, nil, nil, 100, 94, 194, 54, 160, nil, 100, nil, 61, 8, nil, nil, 12, 41, 42, 30, nil, 63, nil, nil, 87, 76, nil, 80, nil, nil, 296, 148, 87, 75, nil, nil, nil, nil, 48, nil, 34, nil, nil, 1, nil, 216, nil, nil, nil, 127, 210, nil, -6, nil, 108, -2, 141, 146, 55, 134, nil, 146, 147, nil, 225, 251, 266, nil, nil, nil, nil, nil, nil, 104, nil, 117, nil, nil, nil, 163, 170, 161, nil, nil, nil, -12, nil, nil, 110, 154, 281, nil, 341, nil, nil, nil, nil, 200, 311, nil, nil, nil, nil, nil, nil, nil, nil, 326, nil, nil ] racc_action_default = [ -93, -12, -113, -113, -113, -13, -1, -14, -2, -32, -3, -5, -113, -113, -6, -113, -7, -113, -33, -113, -8, -9, -113, -10, -113, -11, -113, -93, -88, -90, -91, -92, -41, -4, -57, -32, -16, -58, -17, -19, -20, -21, -105, -113, -54, -55, -49, -113, -59, -32, -51, -113, -53, -48, -80, -113, -52, -47, -50, -41, -113, -81, -93, -25, -113, -113, -93, 185, -113, -103, -113, -113, -113, -42, -111, -113, -113, -108, -45, -113, -113, -113, -113, -113, -78, -36, -28, -32, -113, -37, -39, -35, -38, -34, -30, -79, -111, -26, -94, -93, -113, -40, -113, -104, -89, -113, -113, -113, -112, -18, -15, -107, -109, -113, -110, -113, -75, -74, -113, -77, -113, -68, -76, -69, -113, -113, -62, -113, -66, -41, -31, -113, -113, -113, -113, -97, -102, -100, -106, -113, -113, -113, -87, -44, -24, -43, -46, -56, -113, -71, -113, -60, -63, -61, -113, -113, -111, -29, -22, -23, -113, -96, -95, -113, -113, -113, -83, -113, -85, -86, -73, -70, -113, -113, -67, -27, -98, -101, -99, -82, -84, -72, -113, -65, -64 ] racc_goto_table = [ 33, 6, 8, 39, 28, 109, 53, 74, 89, 86, 36, 135, 123, 64, 126, 71, 40, 107, 125, 79, 94, 113, 121, 41, 118, 84, 128, 131, 150, 61, 100, 145, 55, 27, 96, 63, 133, 39, 90, 132, 2, 53, nil, nil, 76, nil, nil, 84, nil, 84, 40, 149, nil, 91, 102, nil, 152, 41, nil, 53, nil, nil, nil, 118, 98, nil, 92, 78, 128, 39, nil, 104, 176, 93, 39, 117, 53, 117, nil, 89, 157, 115, 40, nil, nil, 101, 84, 40, 119, 41, 119, 84, 172, 137, 41, 122, 84, 122, 174, 175, 53, 134, 124, 181, 156, nil, 141, 53, nil, 90, nil, nil, nil, nil, 117, 118, nil, nil, 46, 117, nil, 84, nil, nil, 91, nil, 143, 119, nil, nil, nil, nil, 119, 146, 122, 33, nil, 92, 84, 122, 165, 167, 53, nil, 93, nil, nil, nil, nil, 117, nil, nil, nil, 46, 137, nil, nil, 53, 53, 33, nil, 33, 119, nil, nil, 85, 117, nil, 170, 122, nil, 46, 95, nil, 182, nil, 33, nil, nil, 119, nil, nil, nil, 177, 178, nil, 122, 116, 46, 116, nil, nil, nil, nil, 95, nil, 95, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 46, nil, nil, nil, nil, nil, nil, 46, nil, nil, nil, nil, nil, nil, 116, nil, nil, nil, nil, 116, nil, 95, nil, nil, 85, nil, 95, nil, nil, nil, nil, 95, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 46, nil, nil, nil, nil, nil, nil, 116, nil, nil, nil, nil, nil, nil, 95, 46, 46, nil, nil, nil, nil, nil, nil, nil, 116, nil, nil, nil, nil, nil, nil, 95 ] racc_goto_check = [ 4, 2, 3, 17, 46, 16, 17, 22, 27, 25, 15, 48, 41, 17, 37, 44, 18, 23, 36, 31, 20, 32, 40, 19, 39, 35, 39, 21, 42, 19, 43, 30, 29, 45, 22, 5, 47, 17, 28, 23, 1, 17, nil, nil, 15, nil, nil, 35, nil, 35, 18, 41, nil, 17, 44, nil, 37, 19, nil, 17, nil, nil, nil, 39, 3, nil, 18, 29, 39, 17, nil, 46, 48, 19, 17, 17, 17, 17, nil, 27, 25, 15, 18, nil, nil, 29, 35, 18, 18, 19, 18, 35, 32, 17, 19, 19, 35, 19, 39, 23, 17, 3, 29, 41, 22, nil, 2, 17, nil, 28, nil, nil, nil, nil, 17, 39, nil, nil, 24, 17, nil, 35, nil, nil, 17, nil, 29, 18, nil, nil, nil, nil, 18, 29, 19, 4, nil, 18, 35, 19, 2, 2, 17, nil, 19, nil, nil, nil, nil, 17, nil, nil, nil, 24, 17, nil, nil, 17, 17, 4, nil, 4, 18, nil, nil, 24, 17, nil, 29, 19, nil, 24, 33, nil, 2, nil, 4, nil, nil, 18, nil, nil, nil, 29, 29, nil, 19, 24, 24, 24, nil, nil, nil, nil, 33, nil, 33, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, 24, nil, 33, nil, nil, 24, nil, 33, nil, nil, nil, nil, 33, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, 33, 24, 24, nil, nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, 33 ] racc_goto_pointer = [ nil, 40, 1, 2, -6, 16, nil, nil, nil, nil, nil, nil, nil, nil, nil, 1, -70, -6, 7, 14, -39, -67, -25, -57, 106, -50, nil, -51, -21, 20, -77, -28, -58, 113, nil, -34, -65, -69, nil, -57, -59, -69, -92, -32, -12, 30, 1, -63, -88, nil ] racc_goto_default = [ nil, nil, nil, 69, 10, 11, 14, 16, 20, 21, 23, 25, 1, 5, 7, nil, 38, 13, 56, 57, nil, nil, nil, nil, 4, nil, 88, 50, 52, nil, 73, nil, nil, 58, 44, 45, nil, nil, 127, 51, nil, nil, nil, nil, nil, nil, nil, nil, nil, 136 ] 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, :QMARK => 19, :LPAREN => 20, :RPAREN => 21, :ISEQUAL => 22, :GREATEREQUAL => 23, :GREATERTHAN => 24, :LESSTHAN => 25, :IF => 26, :ELSE => 27, :IMPORT => 28, :DEFINE => 29, :ELSIF => 30, :VARIABLE => 31, :CLASS => 32, :INHERITS => 33, :NODE => 34, :BOOLEAN => 35, :NAME => 36, :SEMIC => 37, :CASE => 38, :DEFAULT => 39, :AT => 40, :LCOLLECT => 41, :RCOLLECT => 42 } racc_use_result_var = true racc_nt_base = 43 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', 'QMARK', 'LPAREN', 'RPAREN', 'ISEQUAL', 'GREATEREQUAL', 'GREATERTHAN', 'LESSTHAN', 'IF', 'ELSE', 'IMPORT', 'DEFINE', 'ELSIF', 'VARIABLE', 'CLASS', 'INHERITS', 'NODE', 'BOOLEAN', 'NAME', 'SEMIC', 'CASE', 'DEFAULT', 'AT', 'LCOLLECT', 'RCOLLECT', '$start', 'program', 'statements', 'nothing', 'statement', 'object', 'collectable', 'collection', 'assignment', 'casestatement', 'import', 'fstatement', 'definition', 'hostclass', 'nodedef', 'classnames', 'classname', 'name', 'variable', 'quotedtext', 'objectinstances', 'endsemi', 'params', 'endcomma', 'type', 'objectinst', 'objectname', 'selector', 'array', 'rvalue', 'param', 'rvalues', 'comma', 'boolean', 'objectref', 'funcrvalue', 'caseopts', 'caseopt', 'casevalues', 'selectlhand', 'svalues', 'selectval', 'sintvalues', 'argumentlist', 'parent', 'hostnames', 'hostname', 'arguments', 'argument', 'lvariable'] Racc_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted module_eval <<'.,.,', 'grammar.ra', 26 def _reduce_1( val, _values, result ) if val[0].is_a?(AST::ASTArray) result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :children => [val[0]] ) end result end .,., # reduce 2 omitted # reduce 3 omitted module_eval <<'.,.,', 'grammar.ra', 41 def _reduce_4( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[1]) result = val[0] else result = AST::ASTArray.new( :file => @lexer.file, :line => @lexer.line, :children => [val[0],val[1]] ) 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 module_eval <<'.,.,', 'grammar.ra', 64 def _reduce_15( val, _values, result ) args = aryfy(val[2]) result = AST::Function.new( :line => @lexer.line, :file => @lexer.file, :name => val[0], :arguments => args, :ftype => :statement ) result end .,., module_eval <<'.,.,', 'grammar.ra', 74 def _reduce_16( val, _values, result ) args = aryfy(val[1]) result = AST::Function.new( :line => @lexer.line, :file => @lexer.file, :name => val[0], :arguments => args, :ftype => :statement ) result end .,., # reduce 17 omitted module_eval <<'.,.,', 'grammar.ra', 93 def _reduce_18( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., # reduce 19 omitted # reduce 20 omitted # reduce 21 omitted module_eval <<'.,.,', 'grammar.ra', 128 def _reduce_22( val, _values, result ) if val[0].instance_of?(AST::ASTArray) raise Puppet::ParseError, "Invalid name" end array = val[2] if array.instance_of?(AST::ObjectInst) array = [array] end result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file ) # this iterates across each specified objectinstance array.each { |instance| unless instance.instance_of?(AST::ObjectInst) 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::ObjectDef.new( :pin => "{}", :line => @lexer.line, :file => @lexer.file, :type => val[0], :name => instance[0], :params => instance[1] ) } result end .,., module_eval <<'.,.,', 'grammar.ra', 142 def _reduce_23( val, _values, result ) if val[0].instance_of?(AST::ASTArray) Puppet.notice "invalid name" raise Puppet::ParseError, "Invalid name" end # an object but without a name # this cannot be an instance of a library type result = AST::ObjectDef.new( :pin => "{}", :line => @lexer.line, :file => @lexer.file, :type => val[0], :params => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 154 def _reduce_24( val, _values, result ) # a template setting for a type if val[0].instance_of?(AST::ASTArray) raise Puppet::ParseError, "Invalid type" end result = AST::TypeDefaults.new( :pin => "{}", :line => @lexer.line, :file => @lexer.file, :type => val[0], :params => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 177 def _reduce_25( val, _values, result ) unless Puppet[:storeconfigs] raise Puppet::ParseError, "You cannot collect without storeconfigs being set" end if val[1].is_a? AST::TypeDefaults raise Puppet::ParseError, "Defaults are not collectable" end # Just mark our objects as collectable and pass them through. if val[1].instance_of?(AST::ASTArray) val[1].each do |obj| obj.collectable = true end else val[1].collectable = true end result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 190 def _reduce_26( val, _values, result ) unless Puppet[:storeconfigs] raise Puppet::ParseError, "You cannot collect without storeconfigs being set" end result = AST::Collection.new( :line => @lexer.line, :file => @lexer.file, :type => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 198 def _reduce_27( val, _values, result ) result = AST::ObjectInst.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., # reduce 28 omitted module_eval <<'.,.,', 'grammar.ra', 212 def _reduce_29( val, _values, result ) if val[0].instance_of?(AST::ObjectInst) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) else val[0].push val[2] result = val[0] end result end .,., # reduce 30 omitted # reduce 31 omitted module_eval <<'.,.,', 'grammar.ra', 223 def _reduce_32( val, _values, result ) result = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 231 def _reduce_33( val, _values, result ) result = AST::Type.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., # reduce 34 omitted # reduce 35 omitted # reduce 36 omitted # reduce 37 omitted # reduce 38 omitted # reduce 39 omitted module_eval <<'.,.,', 'grammar.ra', 254 def _reduce_40( val, _values, result ) # this is distinct from referencing a variable variable = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => val[0].sub(/^\$/,'') ) result = AST::VarDef.new( :pin => "=", :line => @lexer.line, :file => @lexer.file, :name => variable, :value => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 263 def _reduce_41( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 263 def _reduce_42( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 276 def _reduce_43( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 291 def _reduce_44( val, _values, result ) leaf = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result = AST::ObjectParam.new( :pin => "=>", :line => @lexer.line, :file => @lexer.file, :param => leaf, :value => val[2] ) result end .,., # reduce 45 omitted module_eval <<'.,.,', 'grammar.ra', 304 def _reduce_46( val, _values, result ) if val[0].instance_of?(AST::ASTArray) result = val[0].push(val[2]) else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) end result end .,., # reduce 47 omitted # reduce 48 omitted # reduce 49 omitted # reduce 50 omitted # reduce 51 omitted # reduce 52 omitted # reduce 53 omitted # reduce 54 omitted # reduce 55 omitted module_eval <<'.,.,', 'grammar.ra', 326 def _reduce_56( val, _values, result ) args = aryfy(val[2]) result = AST::Function.new( :line => @lexer.line, :file => @lexer.file, :name => val[0], :arguments => args, :ftype => :rvalue ) result end .,., module_eval <<'.,.,', 'grammar.ra', 334 def _reduce_57( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 340 def _reduce_58( val, _values, result ) result = AST::FlatString.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 348 def _reduce_59( val, _values, result ) result = AST::Boolean.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 358 def _reduce_60( val, _values, result ) result = AST::ObjectRef.new( :pin => '[]', :line => @lexer.line, :file => @lexer.file, :type => val[0], :name => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 375 def _reduce_61( val, _values, result ) options = val[3] unless options.instance_of?(AST::ASTArray) options = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[3]] ) end result = AST::CaseStatement.new( :test => val[1], :options => options, :file => @lexer.file, :line => @lexer.line ) result end .,., # reduce 62 omitted module_eval <<'.,.,', 'grammar.ra', 389 def _reduce_63( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push val[1] result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0], val[1]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 399 def _reduce_64( val, _values, result ) result = AST::CaseOpt.new( :pin => ":", :value => val[0], :file => @lexer.file, :line => @lexer.line, :statements => val[3] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 411 def _reduce_65( val, _values, result ) result = AST::CaseOpt.new( :pin => ":", :value => val[0], :file => @lexer.file, :line => @lexer.line, :statements => AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) ) result end .,., # reduce 66 omitted module_eval <<'.,.,', 'grammar.ra', 425 def _reduce_67( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 435 def _reduce_68( val, _values, result ) result = AST::Selector.new( :pin => "?", :line => @lexer.line, :file => @lexer.file, :param => val[0], :values => val[2] ) result end .,., # reduce 69 omitted module_eval <<'.,.,', 'grammar.ra', 437 def _reduce_70( val, _values, result ) result = val[1] result end .,., # reduce 71 omitted module_eval <<'.,.,', 'grammar.ra', 452 def _reduce_72( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 462 def _reduce_73( val, _values, result ) result = AST::ObjectParam.new( :pin => "=>", :line => @lexer.line, :file => @lexer.file, :param => val[0], :value => val[2] ) result end .,., # reduce 74 omitted # reduce 75 omitted # reduce 76 omitted # reduce 77 omitted # reduce 78 omitted # reduce 79 omitted module_eval <<'.,.,', 'grammar.ra', 476 def _reduce_80( val, _values, result ) result = AST::Default.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 535 def _reduce_81( 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::ASTArray.new( :file => @lexer.file, :line => @lexer.line ) 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 parser.parse.each do |child| result.push child end } } result end .,., module_eval <<'.,.,', 'grammar.ra', 546 def _reduce_82( val, _values, result ) result = AST::CompDef.new( :type => AST::Name.new(:value => val[1], :line => @lexer.line), :args => val[2], :file => @lexer.file, :line => @lexer.line, :keyword => val[0], :code => val[4] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 559 def _reduce_83( val, _values, result ) result = AST::CompDef.new( :type => AST::Name.new(:value => val[1], :line => @lexer.line), :args => val[2], :file => @lexer.file, :line => @lexer.line, :keyword => val[0], :code => AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) ) result end .,., module_eval <<'.,.,', 'grammar.ra', 576 def _reduce_84( val, _values, result ) #:args => val[2], args = { :type => AST::Name.new(:value => val[1], :line => @lexer.line), :file => @lexer.file, :line => @lexer.line, :keyword => val[0], :code => val[4] } # It'll be an ASTArray if we didn't get a parent if val[2].instance_of?(AST::Name) args[:parentclass] = val[2] end result = AST::ClassDef.new(args) result end .,., module_eval <<'.,.,', 'grammar.ra', 593 def _reduce_85( val, _values, result ) args = { :type => AST::Name.new(:value => val[1], :line => @lexer.line), :file => @lexer.file, :line => @lexer.line, :keyword => val[0], :code => AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) } # It'll be an ASTArray if we didn't get a parent if val[2].instance_of?(AST::Name) args[:parentclass] = val[2] end result = AST::ClassDef.new(args) result end .,., module_eval <<'.,.,', 'grammar.ra', 614 def _reduce_86( val, _values, result ) unless val[1].instance_of?(AST::ASTArray) val[1] = AST::ASTArray.new( :line => val[1].line, :file => val[1].file, :children => [val[1]] ) end args = { :file => @lexer.file, :line => @lexer.line, :names => val[1], :keyword => val[0], :code => val[4] } if val[2].instance_of?(AST::Name) args[:parentclass] = val[2] end result = AST::NodeDef.new(args) result end .,., module_eval <<'.,.,', 'grammar.ra', 637 def _reduce_87( val, _values, result ) unless val[1].instance_of?(AST::ASTArray) val[1] = AST::ASTArray.new( :line => val[1].line, :file => val[1].file, :children => [val[1]] ) end args = { :file => @lexer.file, :line => @lexer.line, :keyword => val[0], :names => val[1], :code => AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) } if val[2].instance_of?(AST::Name) args[:parentclass] = val[2] end result = AST::NodeDef.new(args) result end .,., # reduce 88 omitted module_eval <<'.,.,', 'grammar.ra', 652 def _reduce_89( val, _values, result ) if val[0].instance_of?(AST::ASTArray) result = val[0] result.push val[2] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0], val[2]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 660 def _reduce_90( val, _values, result ) result = AST::HostName.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 666 def _reduce_91( val, _values, result ) result = AST::HostName.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 672 def _reduce_92( val, _values, result ) result = AST::Default.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 680 def _reduce_93( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., # reduce 94 omitted module_eval <<'.,.,', 'grammar.ra', 685 def _reduce_95( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 696 def _reduce_96( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[1]] ) end result end .,., # reduce 97 omitted module_eval <<'.,.,', 'grammar.ra', 710 def _reduce_98( val, _values, result ) if val[0].instance_of?(AST::ASTArray) val[0].push(val[2]) result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 722 def _reduce_99( val, _values, result ) msg = "Deprecation notice: Variables must now include '$' in prototypes" msg += " at line %s" % @lexer.line msg += " in file %s" % @lexer.file if @lexer.file Puppet.warning msg result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 733 def _reduce_100( val, _values, result ) msg = "Deprecation notice: Variables must now include '$' in prototypes" msg += " at line %s" % @lexer.line msg += " in file %s" % @lexer.file if @lexer.file Puppet.warning msg result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 739 def _reduce_101( val, _values, result ) result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 745 def _reduce_102( val, _values, result ) result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) result end .,., # reduce 103 omitted module_eval <<'.,.,', 'grammar.ra', 754 def _reduce_104( val, _values, result ) result = AST::Name.new( :value => val[1], :file => @lexer.file, :line => @lexer.line ) result end .,., module_eval <<'.,.,', 'grammar.ra', 763 def _reduce_105( val, _values, result ) name = val[0].sub(/^\$/,'') result = AST::Variable.new( :line => @lexer.line, :file => @lexer.file, :value => name ) result end .,., module_eval <<'.,.,', 'grammar.ra', 771 def _reduce_106( val, _values, result ) result = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => val[0].sub(/^\$/,'') ) result end .,., module_eval <<'.,.,', 'grammar.ra', 783 def _reduce_107( val, _values, result ) if val[1].instance_of?(AST::ASTArray) result = val[1] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[1]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 789 def _reduce_108( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., # reduce 109 omitted # reduce 110 omitted # reduce 111 omitted module_eval <<'.,.,', 'grammar.ra', 794 def _reduce_112( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet