# # 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..id4642cdeefd', 'grammar.ra', 757 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) file = file + ".pp" 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..id4642cdeefd ##### racc 1.4.4 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 43, :_reduce_1, 1, 44, :_reduce_none, 2, 44, :_reduce_3, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 1, 45, :_reduce_none, 4, 51, :_reduce_13, 2, 51, :_reduce_14, 1, 55, :_reduce_none, 3, 55, :_reduce_16, 1, 56, :_reduce_none, 1, 56, :_reduce_none, 5, 46, :_reduce_19, 5, 46, :_reduce_20, 5, 46, :_reduce_21, 2, 47, :_reduce_22, 4, 64, :_reduce_23, 1, 59, :_reduce_none, 3, 59, :_reduce_25, 0, 60, :_reduce_none, 1, 60, :_reduce_none, 1, 57, :_reduce_28, 1, 63, :_reduce_29, 1, 65, :_reduce_none, 1, 65, :_reduce_none, 1, 65, :_reduce_none, 1, 65, :_reduce_none, 1, 65, :_reduce_none, 1, 65, :_reduce_none, 3, 48, :_reduce_36, 0, 61, :_reduce_37, 1, 61, :_reduce_38, 3, 61, :_reduce_39, 3, 70, :_reduce_40, 1, 71, :_reduce_none, 3, 71, :_reduce_42, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 4, 75, :_reduce_53, 1, 66, :_reduce_54, 1, 66, :_reduce_55, 1, 73, :_reduce_56, 4, 74, :_reduce_57, 5, 49, :_reduce_58, 1, 76, :_reduce_none, 2, 76, :_reduce_60, 5, 77, :_reduce_61, 4, 77, :_reduce_62, 1, 78, :_reduce_none, 3, 78, :_reduce_64, 3, 67, :_reduce_65, 1, 80, :_reduce_none, 3, 80, :_reduce_67, 1, 82, :_reduce_none, 3, 82, :_reduce_69, 3, 81, :_reduce_70, 1, 79, :_reduce_none, 1, 79, :_reduce_none, 1, 79, :_reduce_none, 1, 79, :_reduce_none, 1, 79, :_reduce_none, 1, 79, :_reduce_none, 1, 79, :_reduce_77, 2, 50, :_reduce_78, 6, 52, :_reduce_79, 5, 52, :_reduce_80, 6, 53, :_reduce_81, 5, 53, :_reduce_82, 6, 54, :_reduce_83, 5, 54, :_reduce_84, 1, 85, :_reduce_none, 2, 85, :_reduce_86, 1, 86, :_reduce_87, 1, 86, :_reduce_88, 0, 87, :_reduce_89, 1, 83, :_reduce_none, 3, 83, :_reduce_91, 3, 83, :_reduce_92, 1, 88, :_reduce_none, 3, 88, :_reduce_94, 3, 89, :_reduce_95, 1, 89, :_reduce_96, 1, 84, :_reduce_none, 2, 84, :_reduce_98, 1, 58, :_reduce_99, 3, 68, :_reduce_100, 1, 72, :_reduce_none, 1, 72, :_reduce_none, 0, 62, :_reduce_none, 1, 62, :_reduce_104 ] racc_reduce_n = 105 racc_shift_n = 173 racc_action_table = [ 33, 28, 29, 58, 149, 40, 33, 28, 29, 140, 58, 56, 40, 7, -76, 33, 28, 29, 89, -72, 7, 33, 28, 29, 128, 138, 40, 84, 148, 87, 47, 137, 40, 3, 7, 57, 47, 41, 42, 3, 7, 40, 57, 41, 42, 47, -74, 40, 3, 67, 54, 47, 41, 42, 3, 7, 40, 100, 41, 42, 33, 28, 29, 40, 7, 107, 33, 28, 29, 109, 110, 7, 89, 28, 29, 33, 28, 29, 152, 3, 7, 33, 28, 29, 125, 164, 40, 109, 110, 126, 47, 97, 40, 3, 7, 96, 47, 41, 42, 3, 7, 40, 96, 41, 42, 47, 100, 40, 3, 7, 130, 47, 41, 42, 3, 7, 83, -74, 41, 42, 33, 28, 29, 133, 134, 91, 33, 28, 29, 82, 91, -71, 139, 26, -72, 81, 28, 29, -73, 144, 76, -71, 28, 29, 147, -73, 40, 61, 95, 91, 47, 155, 40, 3, 7, 56, 47, 41, 42, 3, 7, 40, 100, 41, 42, 47, 7, 40, 3, 7, 106, 47, 41, 42, 3, 7, 28, 29, 41, 42, 151, 89, 28, 29, 49, 7, 165, 48, 30, 101, 26, 28, 29, 87, -75, nil, nil, 28, 29, nil, 117, 40, nil, nil, nil, 47, nil, 40, 3, 7, nil, 47, 41, 42, 3, 7, 40, 157, 41, 42, 47, nil, 40, 3, 7, nil, 47, 41, 42, 3, 7, nil, nil, 41, 42, 6, 9, 142, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, nil, nil, 161, 6, 9, nil, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, 6, 9, 167, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, nil, nil, 168, 6, 9, nil, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, 6, 9, 171, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, nil, nil, 154, 6, 9, nil, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, 6, 9, 172, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, nil, nil, nil, 6, 9, nil, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, 6, 9, nil, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18, 6, 9, nil, 13, 15, nil, 21, nil, nil, nil, 3, 7, nil, 11, nil, 16, 18 ] racc_action_check = [ 48, 48, 48, 59, 121, 54, 82, 82, 82, 105, 21, 45, 84, 54, 43, 26, 26, 26, 90, 45, 84, 108, 108, 108, 90, 102, 48, 42, 121, 59, 48, 102, 82, 48, 48, 59, 82, 48, 48, 82, 82, 26, 21, 82, 82, 26, 39, 108, 26, 26, 16, 108, 26, 26, 108, 108, 89, 70, 108, 108, 96, 96, 96, 16, 89, 80, 11, 11, 11, 80, 80, 16, 124, 6, 6, 33, 33, 33, 124, 18, 18, 139, 139, 139, 86, 146, 96, 146, 146, 87, 96, 69, 11, 96, 96, 67, 11, 96, 96, 11, 11, 33, 91, 11, 11, 33, 92, 139, 33, 33, 93, 139, 33, 33, 139, 139, 38, 66, 139, 139, 97, 97, 97, 98, 99, 100, 144, 144, 144, 37, 101, 65, 104, 37, 72, 34, 149, 149, 31, 113, 30, 37, 83, 83, 119, 62, 97, 24, 61, 56, 97, 129, 144, 97, 97, 19, 144, 97, 97, 144, 144, 149, 136, 144, 144, 149, 138, 83, 149, 149, 77, 83, 149, 149, 83, 83, 123, 123, 83, 83, 123, 50, 163, 163, 15, 76, 148, 13, 9, 75, 4, 117, 117, 49, 46, nil, nil, 81, 81, nil, 81, 123, nil, nil, nil, 123, nil, 163, 123, 123, nil, 163, 123, 123, 163, 163, 117, 130, 163, 163, 117, nil, 81, 117, 117, nil, 81, 117, 117, 81, 81, nil, nil, 81, 81, 130, 130, 106, 130, 130, nil, 130, nil, nil, nil, 130, 130, nil, 130, nil, 130, 130, nil, nil, 141, 106, 106, nil, 106, 106, nil, 106, nil, nil, nil, 106, 106, nil, 106, nil, 106, 106, 141, 141, 153, 141, 141, nil, 141, nil, nil, nil, 141, 141, nil, 141, nil, 141, 141, nil, nil, 156, 153, 153, nil, 153, 153, nil, 153, nil, nil, nil, 153, 153, nil, 153, nil, 153, 153, 156, 156, 165, 156, 156, nil, 156, nil, nil, nil, 156, 156, nil, 156, nil, 156, 156, nil, nil, 125, 165, 165, nil, 165, 165, nil, 165, nil, nil, nil, 165, 165, nil, 165, nil, 165, 165, 125, 125, 170, 125, 125, nil, 125, nil, nil, nil, 125, 125, nil, 125, nil, 125, 125, nil, nil, nil, 170, 170, nil, 170, 170, nil, 170, nil, nil, nil, 170, 170, nil, 170, nil, 170, 170, 0, 0, nil, 0, 0, nil, 0, nil, nil, nil, 0, 0, nil, 0, nil, 0, 0, 1, 1, nil, 1, 1, nil, 1, nil, nil, nil, 1, 1, nil, 1, nil, 1, 1 ] racc_action_pointer = [ 358, 375, nil, nil, 184, nil, 70, nil, nil, 152, nil, 64, nil, 174, nil, 148, 35, nil, 44, 149, nil, 6, nil, nil, 147, nil, 13, nil, nil, nil, 125, 124, nil, 73, 121, nil, nil, 127, 110, 32, nil, nil, 12, 0, nil, 5, 180, nil, -2, 163, 171, nil, nil, nil, -23, nil, 113, nil, nil, -1, nil, 148, 131, nil, nil, 117, 103, 86, nil, 54, 47, nil, 120, nil, nil, 155, 149, 164, nil, nil, 60, 194, 4, 139, -16, nil, 78, 53, nil, 28, 8, 93, 96, 104, nil, nil, 58, 118, 116, 117, 89, 94, 15, nil, 119, -7, 230, nil, 19, nil, nil, nil, nil, 130, nil, nil, nil, 188, nil, 139, nil, -6, nil, 173, 62, 321, nil, nil, nil, 144, 210, nil, nil, nil, nil, nil, 152, nil, 130, 79, nil, 247, nil, nil, 124, nil, 78, nil, 180, 133, nil, nil, nil, 267, nil, nil, 284, nil, nil, nil, nil, nil, nil, 179, nil, 304, nil, nil, nil, nil, 341, nil, nil ] racc_action_default = [ -105, -1, -2, -29, -105, -4, -105, -28, -5, -105, -6, -105, -7, -105, -8, -105, -105, -9, -105, -105, -10, -105, -11, -12, -105, -3, -37, -78, -54, -55, -89, -43, -47, -105, -105, -50, -48, -44, -105, -49, -99, -77, -105, -46, -51, -45, -52, -56, -105, -89, -14, -15, -17, -18, -105, -22, -37, -87, -88, -89, -85, -105, -30, -33, -35, -31, -34, -28, -38, -26, -103, -76, -32, -75, -24, -105, -89, -105, -90, -41, -105, -105, -105, -105, -105, -36, -105, -105, -97, -105, -105, -105, -103, -105, -86, 173, -105, -27, -105, -105, -104, -37, -105, -93, -96, -105, -105, -100, -105, -101, -102, -73, -71, -105, -74, -65, -66, -105, -72, -105, -59, -105, -63, -105, -105, -105, -98, -16, -13, -105, -105, -40, -25, -19, -20, -39, -103, -92, -105, -105, -91, -105, -80, -42, -105, -68, -105, -57, -105, -105, -60, -58, -53, -105, -82, -21, -105, -84, -23, -94, -95, -79, -70, -105, -67, -105, -64, -81, -83, -69, -105, -62, -61 ] racc_goto_table = [ 25, 1, 27, 63, 74, 50, 116, 78, 103, 120, 86, 37, 60, 135, 80, 45, 52, 70, 115, 64, 93, 123, 62, 73, 146, 108, 65, 113, 77, 122, 72, 98, 59, 37, 69, 127, 99, 45, 102, 24, nil, nil, 145, 90, nil, nil, nil, 92, 37, 150, 94, nil, 45, 105, 52, nil, nil, nil, 129, nil, nil, nil, nil, 113, nil, nil, nil, nil, nil, 122, 159, nil, nil, 124, 63, 132, 104, 111, 73, 111, 73, 112, 37, 112, 52, 118, 45, 118, 169, 52, 64, 163, 136, 62, 73, 166, 37, 65, nil, nil, 45, 72, 158, nil, nil, nil, nil, 141, 37, 113, nil, nil, 45, 111, 73, nil, 71, 112, 53, 111, 73, 118, nil, 112, nil, nil, 153, 118, 66, nil, nil, 156, nil, nil, nil, 36, nil, nil, 104, 37, 25, nil, 55, 45, 37, 111, 73, nil, 45, 112, nil, nil, 25, 118, nil, 25, 53, 36, 38, 111, 73, nil, nil, 112, nil, nil, 170, 118, nil, 25, nil, 71, 36, 71, nil, nil, nil, nil, nil, nil, 79, nil, nil, 114, nil, 114, 53, 71, nil, nil, nil, 53, nil, nil, nil, 85, nil, nil, nil, 66, nil, nil, nil, nil, nil, nil, 36, 71, nil, nil, nil, nil, nil, 71, nil, nil, nil, nil, nil, 114, 36, nil, nil, nil, nil, 114, nil, nil, nil, 119, nil, nil, 36, nil, nil, nil, nil, nil, nil, 71, nil, nil, nil, 131, nil, nil, nil, nil, nil, nil, nil, 114, nil, 71, nil, 143, nil, nil, nil, nil, nil, nil, nil, 36, nil, 114, nil, nil, 36, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 160, nil, nil, nil, nil, 162 ] racc_goto_check = [ 3, 2, 24, 25, 22, 13, 39, 45, 47, 35, 42, 15, 44, 28, 29, 21, 15, 19, 38, 26, 42, 34, 24, 33, 40, 30, 15, 37, 41, 37, 21, 18, 43, 15, 17, 14, 20, 21, 46, 1, nil, nil, 39, 13, nil, nil, nil, 19, 15, 35, 44, nil, 21, 45, 15, nil, nil, nil, 20, nil, nil, nil, nil, 37, nil, nil, nil, nil, nil, 37, 47, nil, nil, 13, 25, 22, 15, 24, 33, 24, 33, 15, 15, 15, 15, 21, 21, 21, 39, 15, 26, 30, 19, 24, 33, 37, 15, 15, nil, nil, 21, 21, 20, nil, nil, nil, nil, 2, 15, 37, nil, nil, 21, 24, 33, nil, 31, 15, 16, 24, 33, 21, nil, 15, nil, nil, 2, 21, 16, nil, nil, 2, nil, nil, nil, 4, nil, nil, 15, 15, 3, nil, 4, 21, 15, 24, 33, nil, 21, 15, nil, nil, 3, 21, nil, 3, 16, 4, 27, 24, 33, nil, nil, 15, nil, nil, 2, 21, nil, 3, nil, 31, 4, 31, nil, nil, nil, nil, nil, nil, 27, nil, nil, 16, nil, 16, 16, 31, nil, nil, nil, 16, nil, nil, nil, 27, nil, nil, nil, 16, nil, nil, nil, nil, nil, nil, 4, 31, nil, nil, nil, nil, nil, 31, nil, nil, nil, nil, nil, 16, 4, nil, nil, nil, nil, 16, nil, nil, nil, 27, nil, nil, 4, nil, nil, nil, nil, nil, nil, 31, nil, nil, nil, 27, nil, nil, nil, nil, nil, nil, nil, 16, nil, 31, nil, 27, nil, nil, nil, nil, nil, nil, nil, 4, nil, 16, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, nil, nil, 27 ] racc_goto_pointer = [ nil, 39, 1, -1, 124, nil, nil, nil, nil, nil, nil, nil, nil, -11, -54, 0, 102, 8, -38, -9, -34, 4, -22, nil, -4, -23, -7, 147, -87, -19, -55, 90, nil, -3, -62, -74, nil, -54, -63, -75, -93, -2, -39, 11, -9, -23, -38, -68 ] racc_goto_default = [ nil, nil, nil, 2, 5, 8, 10, 12, 14, 17, 20, 22, 23, nil, 51, 4, 39, nil, nil, nil, nil, 19, nil, 75, 31, 32, 35, nil, 68, nil, nil, 43, 44, 46, nil, nil, 121, 34, nil, nil, nil, nil, nil, nil, nil, 88, nil, nil ] racc_token_table = { false => 0, Object.new => 1, :LBRACK => 2, :DQTEXT => 3, :SQTEXT => 4, :RBRACK => 5, :LBRACE => 6, :RBRACE => 7, :SYMBOL => 8, :FARROW => 9, :COMMA => 10, :TRUE => 11, :FALSE => 12, :EQUALS => 13, :QMARK => 14, :LPAREN => 15, :RPAREN => 16, :ISEQUAL => 17, :GREATEREQUAL => 18, :GREATERTHAN => 19, :LESSTHAN => 20, :LESSEQUAL => 21, :NOTEQUAL => 22, :IF => 23, :ELSE => 24, :IMPORT => 25, :DEFINE => 26, :ELSIF => 27, :VARIABLE => 28, :CLASS => 29, :INHERITS => 30, :NODE => 31, :BOOLEAN => 32, :DOT => 33, :COLON => 34, :TYPE => 35, :NAME => 36, :SEMIC => 37, :CASE => 38, :DEFAULT => 39, :FUNCTION => 40, :AT => 41 } racc_use_result_var = true racc_nt_base = 42 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', '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', 'FUNCTION', 'AT', '$start', 'program', 'statements', 'statement', 'object', 'collectable', 'assignment', 'casestatement', 'import', 'fstatement', 'definition', 'hostclass', 'nodedef', 'classnames', 'classname', 'name', 'variable', 'objectinstances', 'endsemi', 'params', 'endcomma', 'type', 'objectinst', 'objectname', 'quotedtext', 'selector', 'array', 'rvalue', 'param', 'rvalues', 'comma', 'boolean', 'objectref', 'funcrvalue', 'caseopts', 'caseopt', 'casevalues', 'selectlhand', 'svalues', 'selectval', 'sintvalues', 'argumentlist', 'parent', 'hostnames', 'hostname', 'nothing', 'arguments', 'argument'] Racc_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted module_eval <<'.,.,', 'grammar.ra', 25 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 module_eval <<'.,.,', 'grammar.ra', 39 def _reduce_3( 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 4 omitted # reduce 5 omitted # reduce 6 omitted # reduce 7 omitted # reduce 8 omitted # reduce 9 omitted # reduce 10 omitted # reduce 11 omitted # reduce 12 omitted module_eval <<'.,.,', 'grammar.ra', 61 def _reduce_13( 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', 71 def _reduce_14( 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 15 omitted module_eval <<'.,.,', 'grammar.ra', 90 def _reduce_16( val, _values, result ) result = aryfy(val[0], val[2]) result.line = @lexer.line result.file = @lexer.file result end .,., # reduce 17 omitted # reduce 18 omitted module_eval <<'.,.,', 'grammar.ra', 124 def _reduce_19( 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', 138 def _reduce_20( 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', 150 def _reduce_21( 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', 169 def _reduce_22( val, _values, result ) 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', 177 def _reduce_23( val, _values, result ) result = AST::ObjectInst.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., # reduce 24 omitted module_eval <<'.,.,', 'grammar.ra', 191 def _reduce_25( 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 26 omitted # reduce 27 omitted module_eval <<'.,.,', 'grammar.ra', 202 def _reduce_28( val, _values, result ) result = AST::Name.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 210 def _reduce_29( val, _values, result ) result = AST::Type.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., # reduce 30 omitted # reduce 31 omitted # reduce 32 omitted # reduce 33 omitted # reduce 34 omitted # reduce 35 omitted module_eval <<'.,.,', 'grammar.ra', 233 def _reduce_36( 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', 242 def _reduce_37( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 242 def _reduce_38( val, _values, result ) result = val[0] result end .,., module_eval <<'.,.,', 'grammar.ra', 255 def _reduce_39( 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', 270 def _reduce_40( 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 41 omitted module_eval <<'.,.,', 'grammar.ra', 283 def _reduce_42( 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 43 omitted # reduce 44 omitted # reduce 45 omitted # reduce 46 omitted # reduce 47 omitted # reduce 48 omitted # reduce 49 omitted # reduce 50 omitted # reduce 51 omitted # reduce 52 omitted module_eval <<'.,.,', 'grammar.ra', 306 def _reduce_53( 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', 314 def _reduce_54( val, _values, result ) result = AST::String.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 320 def _reduce_55( val, _values, result ) result = AST::FlatString.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 328 def _reduce_56( val, _values, result ) result = AST::Boolean.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 338 def _reduce_57( 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', 355 def _reduce_58( 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 59 omitted module_eval <<'.,.,', 'grammar.ra', 369 def _reduce_60( 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', 379 def _reduce_61( 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', 391 def _reduce_62( 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 63 omitted module_eval <<'.,.,', 'grammar.ra', 405 def _reduce_64( 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', 415 def _reduce_65( val, _values, result ) result = AST::Selector.new( :pin => "?", :line => @lexer.line, :file => @lexer.file, :param => val[0], :values => val[2] ) result end .,., # reduce 66 omitted module_eval <<'.,.,', 'grammar.ra', 417 def _reduce_67( val, _values, result ) result = val[1] result end .,., # reduce 68 omitted module_eval <<'.,.,', 'grammar.ra', 432 def _reduce_69( 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', 442 def _reduce_70( val, _values, result ) result = AST::ObjectParam.new( :pin => "=>", :line => @lexer.line, :file => @lexer.file, :param => val[0], :value => val[2] ) result end .,., # reduce 71 omitted # reduce 72 omitted # reduce 73 omitted # reduce 74 omitted # reduce 75 omitted # reduce 76 omitted module_eval <<'.,.,', 'grammar.ra', 456 def _reduce_77( val, _values, result ) result = AST::Default.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 518 def _reduce_78( 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) ) # result = AST::ASTArray.new( # :file => @lexer.file, # :line => @lexer.line # ) next end # push the results into the main result array #result.push parser.parse parser.parse.each do |child| result.push child end } } result end .,., module_eval <<'.,.,', 'grammar.ra', 529 def _reduce_79( 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', 542 def _reduce_80( 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', 559 def _reduce_81( 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', 576 def _reduce_82( 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', 597 def _reduce_83( 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', 620 def _reduce_84( 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 85 omitted module_eval <<'.,.,', 'grammar.ra', 634 def _reduce_86( val, _values, result ) if val[0].instance_of?(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', 642 def _reduce_87( val, _values, result ) result = AST::HostName.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 648 def _reduce_88( val, _values, result ) result = AST::HostName.new( :line => @lexer.line, :file => @lexer.file, :value => val[0] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 656 def _reduce_89( val, _values, result ) result = AST::ASTArray.new( :line => @lexer.line, :file => @lexer.file, :children => [] ) result end .,., # reduce 90 omitted module_eval <<'.,.,', 'grammar.ra', 661 def _reduce_91( val, _values, result ) result = val[1] result end .,., module_eval <<'.,.,', 'grammar.ra', 672 def _reduce_92( 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 93 omitted module_eval <<'.,.,', 'grammar.ra', 686 def _reduce_94( 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', 694 def _reduce_95( val, _values, result ) result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0],val[2]] ) result end .,., module_eval <<'.,.,', 'grammar.ra', 701 def _reduce_96( val, _values, result ) result = AST::CompArgument.new( :line => @lexer.line, :file => @lexer.file, :children => [val[0]] ) result end .,., # reduce 97 omitted module_eval <<'.,.,', 'grammar.ra', 710 def _reduce_98( val, _values, result ) result = AST::Name.new( :value => val[1], :file => @lexer.file, :line => @lexer.line ) result end .,., module_eval <<'.,.,', 'grammar.ra', 719 def _reduce_99( 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', 731 def _reduce_100( 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 101 omitted # reduce 102 omitted # reduce 103 omitted module_eval <<'.,.,', 'grammar.ra', 736 def _reduce_104( val, _values, result ) result = nil result end .,., def _reduce_none( val, _values, result ) result end end # class Parser end # module Parser end # module Puppet