424: def parse(string = nil)
425: if string
426: self.string = string
427: end
428: begin
429: @yydebug = false
430: main = yyparse(@lexer,:scan)
431: rescue Racc::ParseError => except
432: error = Puppet::ParseError.new(except)
433: error.line = @lexer.line
434: error.file = @lexer.file
435: error.set_backtrace except.backtrace
436: raise error
437: rescue Puppet::ParseError => except
438: except.line ||= @lexer.line
439: except.file ||= @lexer.file
440: raise except
441: rescue Puppet::Error => except
442:
443: except.line ||= @lexer.line
444: except.file ||= @lexer.file
445: raise except
446: rescue Puppet::DevError => except
447: except.line ||= @lexer.line
448: except.file ||= @lexer.file
449: raise except
450: rescue => except
451: error = Puppet::DevError.new(except.message)
452: error.line = @lexer.line
453: error.file = @lexer.file
454: error.set_backtrace except.backtrace
455: raise error
456: end
457: if main
458:
459: newclass("", :code => main)
460: end
461: return @loaded_code
462: ensure
463: @lexer.clear
464: end