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:
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:
210: newclass("", :code => main)
211: end
212: return known_resource_types
213: ensure
214: @lexer.clear
215: end