# # 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/parser/lexer' require 'puppet/parser/ast' #require 'puppet/parser/interpreter' module Puppet # this exception class already has a :stack accessor class ParseError < Puppet::Error attr_accessor :line, :file 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..ida89b5273aa', 'grammar.ra', 573 attr_writer :stack attr_reader :file def file=(file) if self.stack.include?(file) raise Puppet::ImportError.new("Import loop detected") else @lexer.file = file end end def initialize @lexer = Puppet::Parser::Lexer.new() if Puppet[:debug] @yydebut = 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 = "an error was found" if Puppet[:debug] puts stack.inspect puts stack 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.stack = caller 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 except.stack ||= except.stack raise except rescue Puppet::DevError => except except.line ||= @lexer.line except.file ||= @lexer.file except.stack ||= caller 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.stack = caller if Puppet[:debug] puts caller end raise error end end def stack if defined? @stack and ! @stack.nil? if @lexer.file return [@stack,@lexer.file].flatten else return @stack end else if @lexer.file return [@lexer.file] else return [] end end end def string=(string) @lexer.string = string end ..end grammar.ra modeval..ida89b5273aa ##### racc 1.4.4 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 38, :_reduce_1, 1, 39, :_reduce_none, 2, 39, :_reduce_3, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 1, 40, :_reduce_none, 5, 41, :_reduce_11, 5, 41, :_reduce_12, 5, 41, :_reduce_13, 3, 54, :_reduce_14, 1, 49, :_reduce_none, 3, 49, :_reduce_16, 0, 50, :_reduce_none, 1, 50, :_reduce_none, 1, 48, :_reduce_19, 1, 53, :_reduce_20, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 3, 42, :_reduce_26, 0, 51, :_reduce_27, 1, 51, :_reduce_28, 3, 51, :_reduce_29, 3, 60, :_reduce_30, 1, 61, :_reduce_none, 3, 61, :_reduce_32, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 59, :_reduce_none, 1, 56, :_reduce_42, 1, 63, :_reduce_43, 4, 64, :_reduce_44, 5, 44, :_reduce_45, 10, 44, :_reduce_46, 9, 44, :_reduce_47, 5, 66, :_reduce_48, 6, 66, :_reduce_49, 1, 65, :_reduce_none, 3, 65, :_reduce_51, 1, 67, :_reduce_none, 1, 67, :_reduce_none, 1, 67, :_reduce_none, 1, 67, :_reduce_none, 1, 67, :_reduce_none, 1, 67, :_reduce_none, 3, 43, :_reduce_58, 1, 68, :_reduce_none, 3, 68, :_reduce_60, 1, 70, :_reduce_none, 3, 70, :_reduce_62, 3, 69, :_reduce_63, 1, 71, :_reduce_none, 1, 71, :_reduce_none, 1, 71, :_reduce_none, 2, 45, :_reduce_67, 6, 46, :_reduce_68, 7, 47, :_reduce_69, 0, 74, :_reduce_70, 1, 72, :_reduce_none, 3, 72, :_reduce_72, 3, 72, :_reduce_73, 1, 75, :_reduce_none, 3, 75, :_reduce_75, 3, 76, :_reduce_76, 1, 76, :_reduce_77, 1, 73, :_reduce_none, 2, 73, :_reduce_79, 1, 57, :_reduce_80, 3, 58, :_reduce_81, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 0, 52, :_reduce_none, 1, 52, :_reduce_85 ] racc_reduce_n = 86 racc_shift_n = 153 racc_action_table = [ 22, 24, 22, 24, 1, 54, 5, 9, 39, 12, 14, 22, 24, 22, 24, 82, 3, 7, 116, 84, 85, 59, 22, 24, 115, 28, 126, 28, 96, 31, 108, 31, 3, 7, 3, 7, 28, 59, 28, 62, 31, 7, 31, 3, 7, 3, 7, 28, 22, 24, 89, 31, 56, 57, 3, 7, 97, 22, 24, 22, 24, 22, 24, 128, 22, 24, 129, 113, 56, 57, 22, 24, 114, 28, 98, 22, 24, 31, 59, 103, 3, 7, 28, 80, 28, 80, 28, 63, 31, 28, 7, 3, 7, 31, 69, 28, 3, 7, 133, 31, 28, 121, 3, 7, 31, 22, 24, 3, 7, 56, 57, 122, 136, 80, 1, 137, 5, 9, 124, 12, 14, 125, 111, 109, 84, 85, 3, 7, 102, 102, 28, 78, 63, 55, 31, 44, 134, 3, 7, 1, 140, 5, 9, 99, 12, 14, 98, 138, 37, 80, 37, 3, 7, 141, 152, 44, 1, 42, 5, 9, 144, 12, 14, 41, 146, 40, 39, 38, 3, 7, 1, 151, 5, 9, 37, 12, 14, 36, 7, nil, nil, nil, 3, 7, nil, 149, nil, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, 147, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, nil, nil, nil, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 1, nil, 5, 9, nil, 12, 14, nil, nil, nil, nil, nil, 3, 7, 48, 49, 50, 51, 52, 53 ] racc_action_check = [ 1, 1, 83, 83, 96, 27, 96, 96, 27, 96, 96, 89, 89, 54, 54, 46, 96, 96, 94, 46, 46, 112, 47, 47, 94, 1, 106, 83, 64, 1, 87, 83, 1, 1, 83, 83, 89, 37, 54, 37, 89, 63, 54, 89, 89, 54, 54, 47, 98, 98, 61, 47, 112, 112, 47, 47, 66, 99, 99, 129, 129, 39, 39, 109, 113, 113, 109, 92, 37, 37, 137, 137, 93, 98, 80, 22, 22, 98, 62, 79, 98, 98, 99, 97, 129, 44, 39, 42, 129, 113, 99, 129, 129, 113, 39, 137, 113, 113, 117, 137, 22, 100, 137, 137, 22, 40, 40, 22, 22, 62, 62, 101, 127, 102, 117, 127, 117, 117, 103, 117, 117, 104, 91, 88, 91, 91, 117, 117, 81, 74, 40, 41, 38, 34, 40, 33, 118, 40, 40, 88, 135, 88, 88, 73, 88, 88, 69, 128, 68, 134, 23, 88, 88, 136, 150, 18, 135, 14, 135, 135, 139, 135, 135, 13, 142, 12, 11, 9, 135, 135, 150, 148, 150, 150, 6, 150, 150, 5, 116, nil, nil, nil, 150, 150, nil, 145, nil, 148, nil, 148, 148, nil, 148, 148, nil, nil, nil, nil, nil, 148, 148, 145, 143, 145, 145, nil, 145, 145, nil, nil, nil, nil, nil, 145, 145, nil, nil, nil, 143, nil, 143, 143, nil, 143, 143, nil, nil, nil, nil, nil, 143, 143, 144, nil, 144, 144, nil, 144, 144, nil, nil, nil, nil, nil, 144, 144, 141, nil, 141, 141, nil, 141, 141, nil, nil, nil, nil, nil, 141, 141, 146, nil, 146, 146, nil, 146, 146, nil, nil, nil, nil, nil, 146, 146, 55, nil, 55, 55, nil, 55, 55, nil, nil, nil, nil, nil, 55, 55, 138, nil, 138, 138, nil, 138, 138, nil, nil, nil, nil, nil, 138, 138, 15, nil, 15, 15, nil, 15, 15, nil, nil, nil, nil, nil, 15, 15, 125, nil, 125, 125, nil, 125, 125, nil, nil, nil, nil, nil, 125, 125, 0, nil, 0, 0, nil, 0, 0, nil, nil, nil, nil, nil, 0, 0, 26, 26, 26, 26, 26, 26 ] racc_action_pointer = [ 308, -2, nil, nil, nil, 174, 161, nil, nil, 132, nil, 161, 153, 163, 122, 280, nil, nil, 150, nil, nil, nil, 73, 137, nil, nil, 328, 3, nil, nil, nil, nil, nil, 130, 128, nil, nil, 34, 118, 59, 103, 131, 73, nil, 50, nil, 11, 20, nil, nil, nil, nil, nil, nil, 11, 252, nil, nil, nil, nil, nil, 42, 75, 6, 23, nil, 23, nil, 135, 138, nil, nil, nil, 107, 120, nil, nil, nil, nil, 50, 66, 119, nil, 0, nil, nil, nil, 26, 117, 9, nil, 116, 55, 57, 9, nil, -18, 48, 46, 55, 95, 105, 78, 83, 116, nil, 20, nil, nil, 40, nil, nil, 18, 62, nil, nil, 143, 92, 127, nil, nil, nil, nil, nil, nil, 294, nil, 89, 142, 57, nil, nil, nil, nil, 114, 134, 148, 68, 266, 155, nil, 224, 159, 196, 210, 179, 238, nil, 165, nil, 148, nil, nil ] racc_action_default = [ -86, -86, -7, -20, -8, -86, -86, -19, -9, -86, -10, -86, -80, -86, -86, -1, -2, -4, -86, -5, -6, -33, -86, -39, -42, -40, -50, -34, -80, -38, -36, -43, -41, -35, -86, -37, -67, -86, -70, -27, -86, -86, -70, -3, -27, -31, -86, -86, -52, -53, -54, -55, -56, -57, -86, -86, -65, -64, -58, -66, -59, -86, -86, -70, -86, -71, -86, -21, -24, -19, -25, -22, -28, -17, -84, -23, -15, -26, 153, -70, -86, -84, -81, -86, -82, -83, -51, -86, -86, -86, -61, -86, -77, -86, -86, -74, -86, -27, -86, -18, -86, -86, -85, -86, -86, -78, -86, -32, -44, -45, -63, -60, -86, -86, -72, -73, -86, -86, -14, -30, -16, -11, -12, -29, -79, -86, -13, -86, -86, -86, -62, -76, -75, -68, -86, -86, -86, -86, -86, -86, -69, -86, -86, -86, -86, -86, -86, -47, -86, -46, -86, -48, -49 ] racc_goto_table = [ 15, 29, 76, 33, 60, 70, 23, 34, 67, 123, 93, 74, 83, 95, 45, 64, 81, 58, 101, 79, 47, 127, 29, 73, 33, 106, 105, 23, 91, 90, 100, 104, 77, 46, 43, 94, 13, nil, nil, 86, 29, 123, 33, nil, 68, 23, 87, 29, nil, 33, nil, nil, 23, nil, 29, 88, 33, 112, nil, 23, nil, nil, 120, 35, nil, 70, 132, nil, 67, 118, nil, nil, nil, nil, nil, 107, nil, nil, nil, 130, nil, 110, nil, 29, 35, 33, nil, nil, 23, 29, 119, 33, nil, nil, 23, nil, 117, nil, 29, nil, 33, 75, 35, 23, 68, 131, nil, 43, nil, 35, nil, nil, nil, 29, nil, 33, 35, nil, 23, 27, nil, nil, nil, nil, nil, 135, nil, nil, nil, 29, nil, 33, nil, nil, 23, 139, 43, 29, 143, 33, 27, 145, 23, 142, 148, 35, 150, nil, nil, nil, nil, 35, nil, nil, 43, nil, nil, 71, 27, nil, 35, 75, 43, nil, 43, 27, nil, 43, nil, 43, nil, nil, 27, nil, nil, 35, nil, nil, nil, nil, nil, 92, nil, nil, nil, nil, nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, nil, 35, nil, 27, nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, nil, 27, 71, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, 92, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, 27 ] racc_goto_check = [ 2, 4, 17, 16, 32, 21, 20, 28, 19, 23, 37, 14, 25, 39, 22, 35, 14, 31, 15, 35, 30, 29, 4, 12, 16, 15, 37, 20, 33, 32, 13, 36, 22, 24, 3, 38, 1, nil, nil, 22, 4, 23, 16, nil, 20, 20, 22, 4, nil, 16, nil, nil, 20, nil, 4, 2, 16, 25, nil, 20, nil, nil, 17, 6, nil, 21, 39, nil, 19, 14, nil, nil, nil, nil, nil, 22, nil, nil, nil, 32, nil, 22, nil, 4, 6, 16, nil, nil, 20, 4, 22, 16, nil, nil, 20, nil, 2, nil, 4, nil, 16, 6, 6, 20, 20, 22, nil, 3, nil, 6, nil, nil, nil, 4, nil, 16, 6, nil, 20, 11, nil, nil, nil, nil, nil, 2, nil, nil, nil, 4, nil, 16, nil, nil, 20, 28, 3, 4, 2, 16, 11, 2, 20, 28, 2, 6, 2, nil, nil, nil, nil, 6, nil, nil, 3, nil, nil, 11, 11, nil, 6, 6, 3, nil, 3, 11, nil, 3, nil, 3, nil, nil, 11, nil, nil, 6, nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, 6, nil, 11, nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, 11, 11, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 11, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, 11 ] racc_goto_pointer = [ nil, 36, 0, 19, 0, nil, 62, nil, nil, nil, nil, 118, -16, -43, -28, -56, 2, -37, nil, -31, 5, -34, -8, -93, 11, -34, nil, nil, 6, -88, -6, -20, -33, -34, nil, -23, -48, -53, -28, -50 ] racc_goto_default = [ nil, nil, nil, 16, 17, 19, 20, 2, 4, 8, 10, 11, nil, nil, nil, nil, 18, nil, 66, 21, 6, 25, 26, 72, nil, nil, 30, 32, nil, nil, nil, nil, nil, nil, 61, nil, nil, 65, 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 } racc_use_result_var = true racc_nt_base = 37 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', '$start', 'program', 'statements', 'statement', 'object', 'assignment', 'selector', 'iftest', 'import', 'definition', 'hostclass', 'name', 'objectinstances', 'endsemi', 'params', 'endcomma', 'type', 'objectinst', 'objectname', 'quotedtext', 'variable', 'array', 'rvalue', 'param', 'rvalues', 'comma', 'boolean', 'objectref', 'test', 'elsifs', 'testop', 'svalues', 'selectval', 'sintvalues', 'selectlhand', 'argumentlist', 'parent', 'nothing', 'arguments', 'argument'] Racc_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted module_eval <<'.,.,', 'grammar.ra', 40 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', 54 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 module_eval <<'.,.,', 'grammar.ra', 89 def _reduce_11( val, _values, result ) ary = val[2] if val[0].is_a?(AST::ASTArray) Puppet.notice "invalid name" raise Puppet::ParseError, "Invalid name" end if ary[0].is_a?(AST::Leaf) ary = [ary] end result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file ) ary.each { |instance| Puppet.debug "Adding %s with name %s" % [val[0].value, instance[0].value] 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', 113 def _reduce_12( 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 Puppet.debug "Adding %s" % val[0].value # make a unique name for bookkeeping purposes name = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => [val[0].value, "-", val[0].object_id].join('') ) result = AST::ObjectDef.new( :pin => "{}", :line => @lexer.line, :file => @lexer.file, :type => val[0], :name => name, :params => val[2] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 126 def _reduce_13( val, _values, result ) # a template setting for a type if val[0].is_a?(AST::ASTArray) Puppet.notice "invalid type" 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', 134 def _reduce_14( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., # reduce 15 omitted module_eval <<'.,.,', 'grammar.ra', 148 def _reduce_16( val, _values, result ) if val[0][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 .,., # reduce 17 omitted # reduce 18 omitted module_eval <<'.,.,', 'grammar.ra', 159 def _reduce_19( val, _values, result ) result = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 167 def _reduce_20( val, _values, result ) result = AST::Type.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., # reduce 21 omitted # reduce 22 omitted # reduce 23 omitted # reduce 24 omitted # reduce 25 omitted module_eval <<'.,.,', 'grammar.ra', 189 def _reduce_26( 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', 198 def _reduce_27( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 198 def _reduce_28( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 211 def _reduce_29( 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', 226 def _reduce_30( 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 31 omitted module_eval <<'.,.,', 'grammar.ra', 239 def _reduce_32( 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 33 omitted # reduce 34 omitted # reduce 35 omitted # reduce 36 omitted # reduce 37 omitted # reduce 38 omitted # reduce 39 omitted # reduce 40 omitted # reduce 41 omitted module_eval <<'.,.,', 'grammar.ra', 257 def _reduce_42( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 265 def _reduce_43( val, _values, result ) result = AST::Boolean.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 275 def _reduce_44( 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', 285 def _reduce_45( val, _values, result ) result = AST::If.new( :pin => "if", :test => val[1], :file => @lexer.file, :line => @lexer.line, :statements => val[3] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 307 def _reduce_46( val, _values, result ) # make sure our elsifs are an array, as it will save lots of # effort later unless val[5].is_a?(AST::ASTArray) val[5] = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[5]] ) end result = AST::If.new( :pin => "if", :test => val[1], :statements => val[3], :file => @lexer.file, :line => @lexer.line, :else => val[8], :elsif => val[5] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 318 def _reduce_47( val, _values, result ) result = AST::If.new( :pin => "if", :test => val[1], :statements => val[3], :file => @lexer.file, :line => @lexer.line, :else => val[7] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 328 def _reduce_48( val, _values, result ) result = AST::If.new( :pin => "elseif", :test => val[1], :file => @lexer.file, :statements => val[3], :line => @lexer.line ) result end .,., module_eval <<'.,.,', 'grammar.ra', 348 def _reduce_49( val, _values, result ) second = AST::If.new( :pin => "elsif", :test => val[2], :statements => val[4], :file => @lexer.file, :line => @lexer.line ) if val[0].is_a?(AST::ASTArray) val[0].push(second) result = val[0] else result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],second] ) end result end .,., # reduce 50 omitted module_eval <<'.,.,', 'grammar.ra', 359 def _reduce_51( val, _values, result ) result = AST::Test.new( :pin => val[1], :line => @lexer.line, :file => @lexer.file, :lhs => val[0], :rhs => val[2] ) result end .,., # reduce 52 omitted # reduce 53 omitted # reduce 54 omitted # reduce 55 omitted # reduce 56 omitted # reduce 57 omitted module_eval <<'.,.,', 'grammar.ra', 376 def _reduce_58( val, _values, result ) result = AST::Selector.new( :pin => "?", :line => @lexer.line, :file => @lexer.file, :param => val[0], :value => val[2] ) result end .,., # reduce 59 omitted module_eval <<'.,.,', 'grammar.ra', 378 def _reduce_60( val, _values, result ) result = val[1] result end .,., # reduce 61 omitted module_eval <<'.,.,', 'grammar.ra', 393 def _reduce_62( 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', 408 def _reduce_63( 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 64 omitted # reduce 65 omitted # reduce 66 omitted module_eval <<'.,.,', 'grammar.ra', 437 def _reduce_67( 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 path = @lexer.file.sub(%r{[^/]+$},val[1]) parser = Puppet::Parser::Parser.new() parser.stack = self.stack Puppet.debug("importing %s" % path) noimport = false begin parser.file = path rescue Puppet::ImportError Puppet.warning("Importing %s would result in an import loop" % path) result = AST::ASTArray.new( :file => @lexer.file, :line => @lexer.line ) noimport = true end unless noimport result = parser.parse end result end .,., module_eval <<'.,.,', 'grammar.ra', 447 def _reduce_68( 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, :code => val[4] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 458 def _reduce_69( val, _values, result ) result = AST::ClassDef.new( :name => AST::Name.new(:value => val[1], :line => @lexer.line), :args => val[2], :parentclass => val[3], :file => @lexer.file, :line => @lexer.line, :code => val[5] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 473 def _reduce_70( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., # reduce 71 omitted module_eval <<'.,.,', 'grammar.ra', 478 def _reduce_72( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 489 def _reduce_73( 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 74 omitted module_eval <<'.,.,', 'grammar.ra', 503 def _reduce_75( 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', 511 def _reduce_76( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 518 def _reduce_77( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) result end .,., # reduce 78 omitted module_eval <<'.,.,', 'grammar.ra', 527 def _reduce_79( val, _values, result ) result = AST::Name.new( :value => val[1], :file => @lexer.file, :line => @lexer.line ) result end .,., module_eval <<'.,.,', 'grammar.ra', 536 def _reduce_80( 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', 545 def _reduce_81( val, _values, result ) if val[1].is_a?(AST::ASTArray) result = val[1] else result = AST::ASTArray.new result.push val[1] end result end .,., # reduce 82 omitted # reduce 83 omitted # reduce 84 omitted module_eval <<'.,.,', 'grammar.ra', 550 def _reduce_85( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet