# File lib/puppet/parser/parser_support.rb, line 424
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:             # and this is a framework error
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:             # Store the results as the top-level class.
459:             newclass("", :code => main)
460:         end
461:         return @loaded_code
462:     ensure
463:         @lexer.clear
464:     end