# # 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..idea8fcb8472', 'grammar.ra', 606 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 = "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.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 #if Puppet[:debug] # puts except.stack #end 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..idea8fcb8472 ##### racc 1.4.4 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 40, :_reduce_1, 1, 41, :_reduce_none, 2, 41, :_reduce_3, 1, 42, :_reduce_none, 1, 42, :_reduce_none, 1, 42, :_reduce_none, 1, 42, :_reduce_none, 1, 42, :_reduce_none, 1, 42, :_reduce_none, 1, 42, :_reduce_none, 5, 43, :_reduce_11, 5, 43, :_reduce_12, 5, 43, :_reduce_13, 3, 56, :_reduce_14, 1, 51, :_reduce_none, 3, 51, :_reduce_16, 0, 52, :_reduce_none, 1, 52, :_reduce_none, 1, 50, :_reduce_19, 1, 55, :_reduce_20, 1, 57, :_reduce_none, 1, 57, :_reduce_none, 1, 57, :_reduce_none, 1, 57, :_reduce_none, 1, 57, :_reduce_none, 1, 57, :_reduce_none, 3, 44, :_reduce_27, 0, 53, :_reduce_28, 1, 53, :_reduce_29, 3, 53, :_reduce_30, 3, 63, :_reduce_31, 1, 64, :_reduce_none, 3, 64, :_reduce_33, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 62, :_reduce_none, 1, 58, :_reduce_43, 1, 66, :_reduce_44, 4, 67, :_reduce_45, 5, 45, :_reduce_46, 1, 68, :_reduce_none, 2, 68, :_reduce_48, 5, 69, :_reduce_49, 1, 70, :_reduce_none, 3, 70, :_reduce_51, 3, 59, :_reduce_52, 1, 72, :_reduce_none, 3, 72, :_reduce_54, 1, 74, :_reduce_none, 3, 74, :_reduce_56, 3, 73, :_reduce_57, 1, 71, :_reduce_58, 1, 71, :_reduce_59, 1, 71, :_reduce_60, 1, 71, :_reduce_61, 1, 71, :_reduce_none, 2, 46, :_reduce_63, 6, 47, :_reduce_64, 6, 48, :_reduce_65, 5, 49, :_reduce_66, 1, 77, :_reduce_none, 2, 77, :_reduce_68, 0, 78, :_reduce_69, 1, 75, :_reduce_none, 3, 75, :_reduce_71, 3, 75, :_reduce_72, 1, 79, :_reduce_none, 3, 79, :_reduce_74, 3, 80, :_reduce_75, 1, 80, :_reduce_76, 1, 76, :_reduce_none, 2, 76, :_reduce_78, 1, 60, :_reduce_79, 3, 61, :_reduce_80, 1, 65, :_reduce_none, 1, 65, :_reduce_none, 0, 54, :_reduce_none, 1, 54, :_reduce_84 ] racc_reduce_n = 85 racc_shift_n = 143 racc_action_table = [ 89, 123, 89, 112, 134, 119, 83, 84, 89, 111, 89, 54, 92, 74, 40, 102, 89, 75, 89, 121, 103, 75, 72, 74, 71, 122, 45, 109, 36, 110, 36, 87, 88, 87, 88, 90, 36, 90, 36, 87, 88, 87, 88, 90, 36, 90, 36, 87, 88, 87, 88, 90, 6, 90, 27, 28, 27, 28, 82, 100, 113, 58, 83, 84, 55, 27, 28, 27, 28, 116, 27, 28, 6, 101, 53, 21, 27, 28, 49, 31, 45, 31, 45, 36, 127, 36, 3, 6, 3, 6, 31, 128, 31, 6, 36, 31, 36, 3, 6, 3, 6, 31, 3, 6, 6, 36, 27, 28, 3, 6, 41, 27, 28, 40, 39, 81, 27, 28, 136, 38, 23, 27, 28, 139, 22, 21, 45, 53, nil, nil, nil, 31, nil, nil, nil, 36, 31, 132, 3, 6, nil, 31, nil, 3, 62, 36, 31, nil, 3, 6, 36, 138, nil, 3, 6, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, 129, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, 142, 10, nil, nil, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10, 5, 8, nil, 12, 14, nil, 17, nil, nil, nil, 3, 6, nil, 10 ] racc_action_check = [ 92, 98, 55, 78, 118, 95, 118, 118, 135, 78, 53, 34, 53, 62, 34, 63, 96, 47, 123, 96, 69, 70, 42, 45, 41, 98, 75, 76, 92, 77, 55, 92, 92, 55, 55, 92, 135, 55, 53, 135, 135, 53, 53, 135, 96, 53, 123, 96, 96, 123, 123, 96, 42, 123, 54, 54, 116, 116, 52, 58, 80, 39, 52, 52, 35, 113, 113, 10, 10, 91, 103, 103, 49, 59, 32, 25, 85, 85, 23, 54, 102, 116, 21, 54, 104, 116, 54, 54, 116, 116, 113, 105, 10, 17, 113, 103, 10, 113, 113, 10, 10, 85, 103, 103, 112, 85, 74, 74, 85, 85, 16, 40, 40, 15, 14, 50, 27, 27, 122, 12, 8, 38, 38, 125, 5, 1, 139, 66, nil, nil, nil, 74, nil, nil, nil, 74, 40, 114, 74, 74, nil, 27, nil, 40, 40, 27, 38, nil, 27, 27, 38, 124, nil, 38, 38, 114, 114, nil, 114, 114, nil, 114, nil, nil, nil, 114, 114, 106, 114, 124, 124, nil, 124, 124, nil, 124, nil, nil, nil, 124, 124, 141, 124, nil, nil, 106, 106, nil, 106, 106, nil, 106, nil, nil, nil, 106, 106, nil, 106, 141, 141, nil, 141, 141, nil, 141, nil, nil, nil, 141, 141, nil, 141, 72, 72, nil, 72, 72, nil, 72, nil, nil, nil, 72, 72, nil, 72, 101, 101, nil, 101, 101, nil, 101, nil, nil, nil, 101, 101, nil, 101, 18, 18, nil, 18, 18, nil, 18, nil, nil, nil, 18, 18, nil, 18, 136, 136, nil, 136, 136, nil, 136, nil, nil, nil, 136, 136, nil, 136, 81, 81, nil, 81, 81, nil, 81, nil, nil, nil, 81, 81, nil, 81, 0, 0, nil, 0, 0, nil, 0, nil, nil, nil, 0, 0, nil, 0 ] racc_action_pointer = [ 259, 120, nil, nil, nil, 121, nil, nil, 85, nil, 65, nil, 107, nil, 79, 108, 110, 58, 217, nil, nil, 47, nil, 64, nil, 70, nil, 114, nil, nil, nil, nil, 61, nil, 9, 59, nil, nil, 119, 32, 109, 24, 17, nil, nil, 15, nil, 8, nil, 37, 110, nil, 54, 7, 52, -1, nil, nil, 24, 68, nil, nil, 5, -18, nil, nil, 114, nil, nil, -16, 12, nil, 189, nil, 104, -9, 21, 14, -6, nil, 48, 245, nil, nil, nil, 74, nil, nil, nil, nil, nil, 61, -3, nil, nil, 1, 13, nil, -8, nil, nil, 203, 45, 68, 78, 85, 161, nil, nil, nil, nil, nil, 69, 63, 131, nil, 54, nil, -2, nil, nil, nil, 113, 15, 145, 114, nil, nil, nil, nil, nil, nil, nil, nil, nil, 5, 231, nil, nil, 91, nil, 175, nil ] racc_action_default = [ -85, -85, -5, -20, -6, -85, -19, -7, -85, -8, -85, -9, -85, -10, -85, -85, -85, -85, -1, -2, -4, -28, -63, -69, -37, -36, -42, -85, -43, -34, -38, -79, -40, -41, -35, -85, -44, -39, -85, -69, -28, -85, -85, -67, -3, -85, -29, -83, -70, -69, -85, -32, -85, -85, -85, -85, -27, -77, -85, -85, -23, -15, -19, -85, -21, -24, -25, -26, -22, -17, -83, 143, -85, -68, -85, -84, -85, -85, -85, -73, -76, -85, -80, -81, -82, -85, -62, -59, -58, -60, -61, -85, -85, -52, -53, -85, -85, -47, -85, -50, -78, -85, -28, -18, -85, -85, -85, -31, -30, -13, -71, -72, -85, -85, -85, -33, -85, -55, -85, -45, -48, -46, -85, -85, -85, -14, -16, -11, -12, -66, -74, -75, -64, -57, -54, -85, -85, -51, -65, -85, -56, -85, -49 ] racc_goto_table = [ 18, 44, 37, 25, 94, 108, 86, 35, 86, 34, 47, 99, 67, 97, 85, 76, 43, 118, 48, 37, 25, 104, 66, 93, 51, 69, 34, 65, 96, 70, 37, 25, 61, 60, 57, 56, 64, 34, 105, 68, 79, 73, 50, 117, 77, 86, 37, 25, 80, 86, 59, 95, 99, 34, 120, 42, 52, 78, 16, nil, nil, nil, nil, nil, nil, nil, 37, 25, nil, 108, nil, 107, 106, 34, nil, 67, 86, 37, 25, 137, 135, 114, 115, nil, 34, 66, 140, nil, 86, 44, 65, 125, nil, nil, nil, 126, 60, 44, nil, 64, nil, 124, 68, 130, nil, 37, 25, 44, 37, 25, 131, 80, 34, 133, nil, 34, nil, nil, nil, nil, nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 141 ] racc_goto_check = [ 2, 3, 4, 16, 34, 24, 27, 23, 27, 11, 14, 32, 22, 30, 26, 15, 11, 35, 39, 4, 16, 13, 21, 33, 23, 12, 11, 20, 29, 14, 4, 16, 17, 16, 39, 23, 19, 11, 15, 11, 41, 11, 36, 34, 39, 27, 4, 16, 11, 27, 37, 23, 32, 11, 30, 38, 25, 40, 1, nil, nil, nil, nil, nil, nil, nil, 4, 16, nil, 24, nil, 23, 2, 11, nil, 22, 27, 4, 16, 32, 26, 2, 23, nil, 11, 21, 34, nil, 27, 3, 20, 14, nil, nil, nil, 17, 16, 3, nil, 19, nil, 2, 11, 41, nil, 4, 16, 3, 4, 16, 23, 11, 11, 23, nil, 11, nil, nil, nil, nil, nil, nil, nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 2 ] racc_goto_pointer = [ nil, 58, 0, -17, -8, nil, nil, nil, nil, nil, nil, -1, -15, -48, -11, -32, -7, -8, nil, -4, -13, -18, -28, -3, -70, 29, -38, -47, nil, -27, -42, nil, -44, -30, -49, -75, 19, 11, 38, -5, 8, -9 ] racc_goto_default = [ nil, nil, nil, 19, 20, 2, 4, 7, 9, 11, 13, 15, nil, nil, nil, nil, 1, nil, 63, 29, 30, 32, 33, nil, 46, nil, nil, 24, 26, nil, nil, 98, 91, nil, nil, nil, nil, nil, nil, nil, 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 } racc_use_result_var = true racc_nt_base = 39 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', '$start', 'program', 'statements', 'statement', 'object', 'assignment', 'casestatement', 'import', 'definition', 'hostclass', 'nodedef', 'name', 'objectinstances', 'endsemi', 'params', 'endcomma', 'type', 'objectinst', 'objectname', 'quotedtext', 'selector', 'variable', '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', 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', 94 def _reduce_11( 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', 117 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 # 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', 129 def _reduce_13( 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', 137 def _reduce_14( val, _values, result ) result = AST::ObjectInst.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., # reduce 15 omitted module_eval <<'.,.,', 'grammar.ra', 151 def _reduce_16( 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 17 omitted # reduce 18 omitted module_eval <<'.,.,', 'grammar.ra', 162 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', 170 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 # reduce 26 omitted module_eval <<'.,.,', 'grammar.ra', 193 def _reduce_27( 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', 202 def _reduce_28( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 202 def _reduce_29( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 215 def _reduce_30( 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', 230 def _reduce_31( 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 32 omitted module_eval <<'.,.,', 'grammar.ra', 243 def _reduce_33( 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 34 omitted # reduce 35 omitted # reduce 36 omitted # reduce 37 omitted # reduce 38 omitted # reduce 39 omitted # reduce 40 omitted # reduce 41 omitted # reduce 42 omitted module_eval <<'.,.,', 'grammar.ra', 261 def _reduce_43( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 269 def _reduce_44( val, _values, result ) result = AST::Boolean.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 279 def _reduce_45( 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', 296 def _reduce_46( 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 => val[3], :file => @lexer.file, :line => @lexer.line ) result end .,., # reduce 47 omitted module_eval <<'.,.,', 'grammar.ra', 310 def _reduce_48( 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', 320 def _reduce_49( val, _values, result ) result = AST::CaseOpt.new( :pin => ":", :value => val[0], :file => @lexer.file, :line => @lexer.line, :statements => val[3] ) result end .,., # reduce 50 omitted module_eval <<'.,.,', 'grammar.ra', 334 def _reduce_51( 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', 344 def _reduce_52( val, _values, result ) result = AST::Selector.new( :pin => "?", :line => @lexer.line, :file => @lexer.file, :param => val[0], :values => val[2] ) result end .,., # reduce 53 omitted module_eval <<'.,.,', 'grammar.ra', 346 def _reduce_54( val, _values, result ) result = val[1] result end .,., # reduce 55 omitted module_eval <<'.,.,', 'grammar.ra', 361 def _reduce_56( 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', 371 def _reduce_57( 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', 379 def _reduce_58( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 386 def _reduce_59( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 393 def _reduce_60( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 400 def _reduce_61( val, _values, result ) result = AST::Default.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., # reduce 62 omitted module_eval <<'.,.,', 'grammar.ra', 438 def _reduce_63( 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.stack = self.stack Puppet.debug("importing '%s'" % file) begin parser.file = 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', 448 def _reduce_64( 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', 464 def _reduce_65( val, _values, result ) #:args => val[2], args = { :name => AST::Name.new(:value => val[1], :line => @lexer.line), :file => @lexer.file, :line => @lexer.line, :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', 484 def _reduce_66( 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], :code => val[4] } #if val[3].is_a?(AST::Name) # args[:parentclass] = val[2] #end result = AST::NodeDef.new(args) result end .,., # reduce 67 omitted module_eval <<'.,.,', 'grammar.ra', 498 def _reduce_68( 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', 506 def _reduce_69( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., # reduce 70 omitted module_eval <<'.,.,', 'grammar.ra', 511 def _reduce_71( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 522 def _reduce_72( 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 73 omitted module_eval <<'.,.,', 'grammar.ra', 536 def _reduce_74( 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', 544 def _reduce_75( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 551 def _reduce_76( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) result end .,., # reduce 77 omitted module_eval <<'.,.,', 'grammar.ra', 560 def _reduce_78( val, _values, result ) result = AST::Name.new( :value => val[1], :file => @lexer.file, :line => @lexer.line ) result end .,., module_eval <<'.,.,', 'grammar.ra', 569 def _reduce_79( 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', 578 def _reduce_80( 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 81 omitted # reduce 82 omitted # reduce 83 omitted module_eval <<'.,.,', 'grammar.ra', 583 def _reduce_84( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet