diff options
Diffstat (limited to 'lib/puppet/parser/parser.rb')
| -rw-r--r-- | lib/puppet/parser/parser.rb | 1264 |
1 files changed, 1264 insertions, 0 deletions
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb new file mode 100644 index 000000000..3b42bd8d7 --- /dev/null +++ b/lib/puppet/parser/parser.rb @@ -0,0 +1,1264 @@ +# +# 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 |
