# # DO NOT MODIFY!!!! # This file is automatically generated by racc 1.4.4 # 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..id3b98377f5e', 'grammar.ra', 703 attr_reader :file attr_accessor :files # Create an AST array out of all of the args def aryfy(*args) if args[0].is_a?(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) raise Puppet::Error, "Could not find file %s" % file end if @files.detect { |f| f.file == file } raise Puppet::ImportError.new("Import loop detected") else @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 # $Id$ ..end grammar.ra modeval..id3b98377f5e ##### racc 1.4.4 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 41, :_reduce_1, 1, 42, :_reduce_none, 2, 42, :_reduce_3, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 1, 43, :_reduce_none, 2, 48, :_reduce_12, 1, 52, :_reduce_none, 3, 52, :_reduce_14, 1, 53, :_reduce_none, 1, 53, :_reduce_none, 5, 44, :_reduce_17, 5, 44, :_reduce_18, 5, 44, :_reduce_19, 3, 61, :_reduce_20, 1, 56, :_reduce_none, 3, 56, :_reduce_22, 0, 57, :_reduce_none, 1, 57, :_reduce_none, 1, 54, :_reduce_25, 1, 60, :_reduce_26, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 3, 45, :_reduce_33, 0, 58, :_reduce_34, 1, 58, :_reduce_35, 3, 58, :_reduce_36, 3, 67, :_reduce_37, 1, 68, :_reduce_none, 3, 68, :_reduce_39, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 66, :_reduce_none, 1, 63, :_reduce_49, 1, 70, :_reduce_50, 4, 71, :_reduce_51, 5, 46, :_reduce_52, 1, 72, :_reduce_none, 2, 72, :_reduce_54, 5, 73, :_reduce_55, 4, 73, :_reduce_56, 1, 74, :_reduce_none, 3, 74, :_reduce_58, 3, 64, :_reduce_59, 1, 76, :_reduce_none, 3, 76, :_reduce_61, 1, 78, :_reduce_none, 3, 78, :_reduce_63, 3, 77, :_reduce_64, 1, 75, :_reduce_65, 1, 75, :_reduce_66, 1, 75, :_reduce_67, 1, 75, :_reduce_68, 1, 75, :_reduce_none, 2, 47, :_reduce_70, 6, 49, :_reduce_71, 5, 49, :_reduce_72, 6, 50, :_reduce_73, 5, 50, :_reduce_74, 6, 51, :_reduce_75, 5, 51, :_reduce_76, 1, 81, :_reduce_none, 2, 81, :_reduce_78, 0, 82, :_reduce_79, 1, 79, :_reduce_none, 3, 79, :_reduce_81, 3, 79, :_reduce_82, 1, 83, :_reduce_none, 3, 83, :_reduce_84, 3, 84, :_reduce_85, 1, 84, :_reduce_86, 1, 80, :_reduce_none, 2, 80, :_reduce_88, 1, 55, :_reduce_89, 3, 65, :_reduce_90, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 0, 59, :_reduce_none, 1, 59, :_reduce_94 ] racc_reduce_n = 95 racc_shift_n = 156 racc_action_table = [ 88, 124, 88, 65, 147, 127, 101, 102, 88, 5, 96, 4, 7, 88, 11, 14, 121, 18, 88, 31, 107, 2, 5, 88, 9, 123, 15, 5, 35, 110, 35, 86, 87, 86, 87, 90, 35, 90, 135, 86, 87, 35, 55, 90, 86, 87, 35, 112, 90, 86, 87, 35, 104, 90, 86, 87, 4, 7, 90, 11, 14, 149, 18, 106, 119, 114, 2, 5, 31, 9, 118, 15, 28, 29, 58, 61, 5, 50, 117, 4, 7, 106, 11, 14, 120, 18, 104, 65, 141, 2, 5, 40, 9, 108, 15, 28, 29, 31, 28, 29, 55, 35, 129, 54, 2, 5, 4, 7, 131, 11, 14, 61, 18, 28, 29, 52, 2, 5, 50, 9, 31, 15, 137, 31, 66, 139, 61, 2, 5, 133, 2, 72, 48, 5, 28, 29, 28, 29, 31, 100, 5, 144, 35, 101, 102, 2, 5, 4, 7, 5, 11, 14, 81, 18, 28, 29, 41, 2, 5, 31, 9, 31, 15, 35, 40, 35, 2, 5, 2, 5, 150, 39, 151, 24, 23, 28, 29, 28, 29, 31, 61, 69, nil, 35, nil, nil, 2, 5, 4, 7, nil, 11, 14, 115, 18, nil, nil, nil, 2, 5, 31, 9, 31, 15, 35, nil, 35, 2, 5, 2, 5, 4, 7, 152, 11, 14, nil, 18, nil, nil, nil, 2, 5, nil, 9, nil, 15, nil, nil, 155, nil, 4, 7, nil, 11, 14, nil, 18, 28, 29, nil, 2, 5, nil, 9, nil, 15, 4, 7, nil, 11, 14, nil, 18, nil, nil, nil, 2, 5, nil, 9, nil, 15, 31, nil, nil, nil, 35, nil, nil, 2, 5, 4, 7, nil, 11, 14, nil, 18, nil, nil, nil, 2, 5, nil, 9, nil, 15 ] racc_action_check = [ 54, 93, 146, 46, 126, 97, 126, 126, 55, 46, 55, 0, 0, 91, 0, 0, 91, 0, 96, 15, 63, 0, 0, 124, 0, 93, 0, 15, 54, 67, 146, 54, 54, 146, 146, 54, 55, 146, 110, 55, 55, 91, 70, 55, 91, 91, 96, 71, 91, 96, 96, 124, 72, 96, 124, 124, 110, 110, 124, 110, 110, 134, 110, 73, 83, 76, 110, 110, 66, 110, 83, 110, 120, 120, 38, 40, 66, 38, 82, 134, 134, 62, 134, 134, 85, 134, 61, 41, 116, 134, 134, 33, 134, 65, 134, 112, 112, 120, 50, 50, 26, 120, 103, 25, 120, 120, 116, 116, 105, 116, 116, 106, 116, 127, 127, 24, 116, 116, 21, 116, 112, 116, 111, 50, 43, 113, 114, 112, 112, 107, 50, 50, 19, 119, 104, 104, 99, 99, 127, 57, 18, 123, 127, 57, 57, 127, 127, 107, 107, 52, 107, 107, 51, 107, 28, 28, 14, 107, 107, 104, 107, 99, 107, 104, 12, 99, 104, 104, 99, 99, 136, 11, 140, 7, 4, 9, 9, 58, 58, 28, 151, 48, nil, 28, nil, nil, 28, 28, 136, 136, nil, 136, 136, 81, 136, nil, nil, nil, 136, 136, 9, 136, 58, 136, 9, nil, 58, 9, 9, 58, 58, 81, 81, 144, 81, 81, nil, 81, nil, nil, nil, 81, 81, nil, 81, nil, 81, nil, nil, 153, nil, 144, 144, nil, 144, 144, nil, 144, 39, 39, nil, 144, 144, nil, 144, nil, 144, 153, 153, nil, 153, 153, nil, 153, nil, nil, nil, 153, 153, nil, 153, nil, 153, 39, nil, nil, nil, 39, nil, nil, 39, 39, 20, 20, nil, 20, 20, nil, 20, nil, nil, nil, 20, 20, nil, 20, nil, 20 ] racc_action_pointer = [ -13, nil, nil, nil, 171, nil, nil, 138, nil, 173, nil, 159, 159, nil, 121, -8, nil, nil, 105, 132, 248, 113, nil, nil, 101, 98, 87, nil, 152, nil, nil, nil, nil, 86, nil, nil, nil, nil, 72, 236, 40, 58, nil, 115, nil, nil, -26, nil, 181, nil, 96, 147, 114, nil, -3, 5, nil, 135, 175, nil, nil, 78, 72, 15, nil, 58, 41, 24, nil, nil, 29, 11, 44, 54, nil, nil, 32, nil, nil, nil, nil, 187, 63, 55, nil, 72, nil, nil, nil, nil, nil, 10, nil, -8, nil, nil, 15, -3, nil, 134, nil, nil, nil, 98, 132, 102, 76, 123, nil, nil, 32, 116, 93, 119, 91, nil, 82, nil, nil, 98, 70, nil, nil, 136, 20, nil, -2, 111, nil, nil, nil, nil, nil, nil, 55, nil, 164, nil, nil, nil, 163, nil, nil, nil, 207, nil, -1, nil, nil, nil, nil, 145, nil, 223, nil, nil ] racc_action_default = [ -95, -4, -26, -5, -95, -25, -6, -95, -7, -95, -8, -95, -95, -9, -95, -95, -10, -11, -95, -95, -1, -95, -2, -70, -79, -95, -46, -45, -95, -49, -43, -89, -48, -42, -40, -50, -44, -47, -41, -95, -34, -79, -16, -12, -13, -15, -79, -77, -95, -3, -34, -95, -79, -80, -95, -95, -38, -95, -95, -33, -35, -95, -93, -95, -87, -95, -95, -95, -78, 156, -31, -23, -25, -93, -29, -21, -95, -27, -30, -32, -28, -95, -95, -95, -83, -86, -66, -65, -67, -69, -68, -95, -53, -95, -57, -60, -95, -95, -59, -95, -90, -91, -92, -95, -95, -95, -94, -95, -88, -14, -95, -95, -24, -95, -34, -72, -95, -81, -82, -95, -95, -52, -54, -95, -95, -62, -95, -95, -39, -51, -37, -19, -36, -74, -95, -76, -95, -17, -22, -18, -20, -71, -84, -85, -95, -58, -95, -61, -64, -73, -75, -95, -56, -95, -63, -55 ] racc_goto_table = [ 20, 49, 99, 38, 42, 27, 62, 84, 95, 45, 75, 77, 47, 25, 94, 78, 73, 79, 44, 132, 92, 126, 38, 105, 27, 53, 89, 89, 111, 98, 43, 63, 56, 38, 113, 27, 67, 33, 57, 70, 68, 51, 91, 59, 80, 46, 85, 71, 83, 125, 19, 94, 38, 82, 27, 42, 33, 122, nil, nil, 45, nil, 103, 89, 132, nil, nil, 33, 89, 109, nil, 146, 138, 77, 142, nil, nil, 78, 74, 79, 140, 116, nil, nil, 145, nil, 33, nil, nil, nil, nil, nil, nil, 38, nil, 27, 89, 49, 38, 154, 27, 70, nil, 128, nil, nil, 80, 134, 130, nil, 136, nil, nil, 85, 38, 49, 27, 49, 89, nil, nil, 38, nil, 27, 143, nil, nil, 33, nil, nil, nil, 148, 33, nil, 49, nil, nil, nil, nil, nil, 74, nil, nil, nil, 153, nil, nil, nil, 33, nil, nil, nil, nil, nil, nil, 33 ] racc_goto_check = [ 2, 3, 29, 14, 15, 4, 18, 44, 37, 14, 21, 23, 14, 26, 35, 24, 18, 25, 13, 27, 33, 38, 14, 19, 4, 42, 30, 30, 17, 36, 12, 40, 26, 14, 19, 4, 40, 20, 28, 15, 14, 39, 32, 26, 14, 41, 14, 16, 43, 37, 1, 35, 14, 42, 4, 15, 20, 33, nil, nil, 14, nil, 26, 30, 27, nil, nil, 20, 30, 13, nil, 29, 21, 23, 44, nil, nil, 24, 20, 25, 18, 2, nil, nil, 35, nil, 20, nil, nil, nil, nil, nil, nil, 14, nil, 4, 30, 3, 14, 37, 4, 15, nil, 26, nil, nil, 14, 2, 26, nil, 2, nil, nil, 14, 14, 3, 4, 3, 30, nil, nil, 14, nil, 4, 26, nil, nil, 20, nil, nil, nil, 26, 20, nil, 3, nil, nil, nil, nil, nil, 20, nil, nil, nil, 2, nil, nil, nil, 20, nil, nil, nil, nil, nil, nil, 20 ] racc_goto_pointer = [ nil, 50, 0, -19, -4, nil, nil, nil, nil, nil, nil, nil, 15, 3, -6, -11, -3, -43, -34, -39, 28, -40, nil, -39, -35, -33, 4, -87, 10, -55, -28, nil, -12, -34, nil, -40, -26, -47, -75, 17, -10, 27, 1, -4, -45 ] racc_goto_default = [ nil, nil, nil, 22, 1, 3, 6, 8, 10, 13, 16, 17, nil, nil, 21, 26, nil, nil, nil, nil, 12, nil, 76, 34, 36, 37, nil, 60, nil, nil, 30, 32, nil, nil, 93, 97, nil, nil, nil, nil, nil, nil, 64, nil, nil ] racc_token_table = { false => 0, Object.new => 1, :LBRACK => 2, :QTEXT => 3, :RBRACK => 4, :LBRACE => 5, :RBRACE => 6, :SYMBOL => 7, :FARROW => 8, :COMMA => 9, :TRUE => 10, :FALSE => 11, :EQUALS => 12, :QMARK => 13, :LPAREN => 14, :RPAREN => 15, :ISEQUAL => 16, :GREATEREQUAL => 17, :GREATERTHAN => 18, :LESSTHAN => 19, :LESSEQUAL => 20, :NOTEQUAL => 21, :IF => 22, :ELSE => 23, :IMPORT => 24, :DEFINE => 25, :ELSIF => 26, :VARIABLE => 27, :CLASS => 28, :INHERITS => 29, :NODE => 30, :BOOLEAN => 31, :DOT => 32, :COLON => 33, :TYPE => 34, :NAME => 35, :SEMIC => 36, :CASE => 37, :DEFAULT => 38, :INCLUDE => 39 } racc_use_result_var = true racc_nt_base = 40 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', 'QTEXT', 'RBRACK', 'LBRACE', 'RBRACE', 'SYMBOL', 'FARROW', 'COMMA', 'TRUE', 'FALSE', 'EQUALS', 'QMARK', 'LPAREN', 'RPAREN', 'ISEQUAL', 'GREATEREQUAL', 'GREATERTHAN', 'LESSTHAN', 'LESSEQUAL', 'NOTEQUAL', 'IF', 'ELSE', 'IMPORT', 'DEFINE', 'ELSIF', 'VARIABLE', 'CLASS', 'INHERITS', 'NODE', 'BOOLEAN', 'DOT', 'COLON', 'TYPE', 'NAME', 'SEMIC', 'CASE', 'DEFAULT', 'INCLUDE', '$start', 'program', 'statements', 'statement', 'object', 'assignment', 'casestatement', 'import', 'include', 'definition', 'hostclass', 'nodedef', 'classnames', 'classname', 'name', 'variable', 'objectinstances', 'endsemi', 'params', 'endcomma', 'type', 'objectinst', 'objectname', 'quotedtext', 'selector', 'array', 'rvalue', 'param', 'rvalues', 'comma', 'boolean', 'objectref', 'caseopts', 'caseopt', 'casevalues', 'selectlhand', 'svalues', 'selectval', 'sintvalues', 'argumentlist', 'parent', 'names', 'nothing', 'arguments', 'argument'] Racc_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted module_eval <<'.,.,', 'grammar.ra', 37 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 # this is mainly so we can test the parser separately from the # interpreter # if Puppet[:parseonly] # begin # if Puppet[:debug] # puts result.tree(0) # end # rescue NoMethodError => detail # Puppet.err detail # #exit(78) # end # #require 'puppet/parser/interpreter' # #result = Puppet::Server.new(result) # end result end .,., # reduce 2 omitted module_eval <<'.,.,', 'grammar.ra', 51 def _reduce_3( val, _values, result ) if val[0].is_a?(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 4 omitted # reduce 5 omitted # reduce 6 omitted # reduce 7 omitted # reduce 8 omitted # reduce 9 omitted # reduce 10 omitted # reduce 11 omitted module_eval <<'.,.,', 'grammar.ra', 88 def _reduce_12( val, _values, result ) classnames = aryfy(val[1]) klasses = [] # Now just iterate over each of the class names and create a new # object instance. FIXME This should probably eventually include # some kind of checking that the asked-for class is a defined class. classnames.each { |classname| emptyary = AST::ASTArray.new(:children => []) klasses << AST::ObjectDef.new( :pin => "{}", :line => @lexer.line, :file => @lexer.file, :type => classname, :params => emptyary ) } result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => klasses ) result end .,., # reduce 13 omitted module_eval <<'.,.,', 'grammar.ra', 95 def _reduce_14( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., # reduce 15 omitted # reduce 16 omitted module_eval <<'.,.,', 'grammar.ra', 129 def _reduce_17( val, _values, result ) if val[0].is_a?(AST::ASTArray) raise Puppet::ParseError, "Invalid name" end array = val[2] if array.is_a?(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.is_a?(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', 145 def _reduce_18( val, _values, result ) if val[0].is_a?(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 # the objects will autogenerate a name if we don't provide one result = AST::ObjectDef.new( :pin => "{}", :line => @lexer.line, :file => @lexer.file, :type => val[0], :params => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 157 def _reduce_19( val, _values, result ) # a template setting for a type if val[0].is_a?(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', 165 def _reduce_20( val, _values, result ) result = AST::ObjectInst.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., # reduce 21 omitted module_eval <<'.,.,', 'grammar.ra', 179 def _reduce_22( val, _values, result ) if val[0].is_a?(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 23 omitted # reduce 24 omitted module_eval <<'.,.,', 'grammar.ra', 190 def _reduce_25( val, _values, result ) result = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 198 def _reduce_26( val, _values, result ) result = AST::Type.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., # reduce 27 omitted # reduce 28 omitted # reduce 29 omitted # reduce 30 omitted # reduce 31 omitted # reduce 32 omitted module_eval <<'.,.,', 'grammar.ra', 221 def _reduce_33( 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', 230 def _reduce_34( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 230 def _reduce_35( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 243 def _reduce_36( val, _values, result ) if val[0].is_a?(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', 258 def _reduce_37( 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 38 omitted module_eval <<'.,.,', 'grammar.ra', 271 def _reduce_39( val, _values, result ) if val[0].is_a?(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 40 omitted # reduce 41 omitted # reduce 42 omitted # reduce 43 omitted # reduce 44 omitted # reduce 45 omitted # reduce 46 omitted # reduce 47 omitted # reduce 48 omitted module_eval <<'.,.,', 'grammar.ra', 289 def _reduce_49( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 297 def _reduce_50( val, _values, result ) result = AST::Boolean.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 307 def _reduce_51( 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', 324 def _reduce_52( val, _values, result ) options = val[3] unless options.is_a?(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 53 omitted module_eval <<'.,.,', 'grammar.ra', 338 def _reduce_54( val, _values, result ) if val[0].is_a?(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', 348 def _reduce_55( 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', 360 def _reduce_56( 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 57 omitted module_eval <<'.,.,', 'grammar.ra', 374 def _reduce_58( val, _values, result ) if val[0].is_a?(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', 384 def _reduce_59( val, _values, result ) result = AST::Selector.new( :pin => "?", :line => @lexer.line, :file => @lexer.file, :param => val[0], :values => val[2] ) result end .,., # reduce 60 omitted module_eval <<'.,.,', 'grammar.ra', 386 def _reduce_61( val, _values, result ) result = val[1] result end .,., # reduce 62 omitted module_eval <<'.,.,', 'grammar.ra', 401 def _reduce_63( val, _values, result ) if val[0].is_a?(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', 411 def _reduce_64( val, _values, result ) result = AST::ObjectParam.new( :pin => "=>", :line => @lexer.line, :file => @lexer.file, :param => val[0], :value => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 419 def _reduce_65( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 426 def _reduce_66( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 433 def _reduce_67( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 440 def _reduce_68( val, _values, result ) result = AST::Default.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., # reduce 69 omitted module_eval <<'.,.,', 'grammar.ra', 478 def _reduce_70( 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) { Dir.glob(val[1]).each { |file| parser = Puppet::Parser::Parser.new() parser.files = self.files Puppet.debug("importing '%s'" % file) begin parser.file = File.join(dir, file) rescue Puppet::ImportError Puppet.warning( "Importing %s would result in an import loop" % File.join(dir, file) ) result = AST::ASTArray.new( :file => @lexer.file, :line => @lexer.line ) next end # push the results into the main result array result.push parser.parse } } result end .,., module_eval <<'.,.,', 'grammar.ra', 489 def _reduce_71( val, _values, result ) result = AST::CompDef.new( :name => 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', 502 def _reduce_72( val, _values, result ) result = AST::CompDef.new( :name => 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', 519 def _reduce_73( val, _values, result ) #:args => val[2], args = { :name => 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].is_a?(AST::Name) args[:parentclass] = val[2] end result = AST::ClassDef.new(args) result end .,., module_eval <<'.,.,', 'grammar.ra', 536 def _reduce_74( val, _values, result ) args = { :name => 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].is_a?(AST::Name) args[:parentclass] = val[2] end result = AST::ClassDef.new(args) result end .,., module_eval <<'.,.,', 'grammar.ra', 557 def _reduce_75( val, _values, result ) unless val[1].is_a?(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].is_a?(AST::Name) args[:parentclass] = val[2] end result = AST::NodeDef.new(args) result end .,., module_eval <<'.,.,', 'grammar.ra', 580 def _reduce_76( val, _values, result ) unless val[1].is_a?(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].is_a?(AST::Name) args[:parentclass] = val[2] end result = AST::NodeDef.new(args) result end .,., # reduce 77 omitted module_eval <<'.,.,', 'grammar.ra', 594 def _reduce_78( val, _values, result ) if val[0].is_a?(AST::ASTArray) result = val[0] result.push val[1] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0], val[1]] ) end result end .,., module_eval <<'.,.,', 'grammar.ra', 602 def _reduce_79( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., # reduce 80 omitted module_eval <<'.,.,', 'grammar.ra', 607 def _reduce_81( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 618 def _reduce_82( val, _values, result ) if val[1].is_a?(AST::ASTArray) result = val[1] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) end result end .,., # reduce 83 omitted module_eval <<'.,.,', 'grammar.ra', 632 def _reduce_84( 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', 640 def _reduce_85( val, _values, result ) result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 647 def _reduce_86( val, _values, result ) result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) result end .,., # reduce 87 omitted module_eval <<'.,.,', 'grammar.ra', 656 def _reduce_88( val, _values, result ) result = AST::Name.new( :value => val[1], :file => @lexer.file, :line => @lexer.line ) result end .,., module_eval <<'.,.,', 'grammar.ra', 665 def _reduce_89( 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', 677 def _reduce_90( val, _values, result ) if val[1].is_a?(AST::ASTArray) result = val[1] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[1]] ) end result end .,., # reduce 91 omitted # reduce 92 omitted # reduce 93 omitted module_eval <<'.,.,', 'grammar.ra', 682 def _reduce_94( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet