class Treetop::Runtime::CompiledParser

def terminal_parse_failure(expected_string, unexpected = false)

def terminal_parse_failure(expected_string, unexpected = false)
  if @max_terminal_failure_index == -1
    @max_terminal_failure_index = 0
    return nil
  end
  return nil if index < max_terminal_failure_index
  if index > max_terminal_failure_index
    @max_terminal_failure_index = index
    @terminal_failures = []
  end
  @terminal_failures << [index, expected_string, unexpected]
  # It's very slow, but this shows the last 5 nested rules:
  # caller.reject{|l| l =~ /`loop'|`block in /}[0..5].reverse.map{|l| l.sub(/[^`]*`_nt_/,'').sub(/'/,'')}
  terminal_failures
  return nil
end