# File lib/puppet/parser/parser_support.rb, line 176
176:   def parse(string = nil)
177:     return parse_ruby_file if self.file =~ /\.rb$/
178:     self.string = string if string
179:     begin
180:       @yydebug = false
181:       main = yyparse(@lexer,:scan)
182:     rescue Racc::ParseError => except
183:       error = Puppet::ParseError.new(except)
184:       error.line = @lexer.line
185:       error.file = @lexer.file
186:       error.set_backtrace except.backtrace
187:       raise error
188:     rescue Puppet::ParseError => except
189:       except.line ||= @lexer.line
190:       except.file ||= @lexer.file
191:       raise except
192:     rescue Puppet::Error => except
193:       # and this is a framework error
194:       except.line ||= @lexer.line
195:       except.file ||= @lexer.file
196:       raise except
197:     rescue Puppet::DevError => except
198:       except.line ||= @lexer.line
199:       except.file ||= @lexer.file
200:       raise except
201:     rescue => except
202:       error = Puppet::DevError.new(except.message)
203:       error.line = @lexer.line
204:       error.file = @lexer.file
205:       error.set_backtrace except.backtrace
206:       raise error
207:     end
208:     if main
209:       # Store the results as the top-level class.
210:       newclass("", :code => main)
211:     end
212:     return known_resource_types
213:   ensure
214:     @lexer.clear
215:   end