Method: Puppet::Parser::Parser#parse

Defined in:
lib/vendor/puppet/parser/parser_support.rb

#parse(string = nil) ⇒ Object

how should I do error handling here?



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/vendor/puppet/parser/parser_support.rb', line 146

def parse(string = nil)
  if self.file =~ /\.rb$/
    main = parse_ruby_file
  else
    self.string = string if string
    begin
      @yydebug = false
      main = yyparse(@lexer,:scan)
    rescue Racc::ParseError => except
      error = Puppet::ParseError.new(except)
      error.line = @lexer.line
      error.file = @lexer.file
      error.set_backtrace except.backtrace
      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
      raise except
    rescue Puppet::DevError => except
      except.line ||= @lexer.line
      except.file ||= @lexer.file
      raise except
    rescue => except
      error = Puppet::DevError.new(except.message)
      error.line = @lexer.line
      error.file = @lexer.file
      error.set_backtrace except.backtrace
      raise error
    end
  end
  # Store the results as the top-level class.
  return Puppet::Parser::AST::Hostclass.new('', :code => main)
ensure
  @lexer.clear
end