private boolean backtrack ( ) { // if B = bottom_of_stack if ( bp == 0 ) { // then fail_and_exit_program return true ; } else { // B0 <- STACK[B + STACK[B} + 7] b0 = data . get ( bp + data . get ( bp ) + 7 ) ; // P <- STACK[B + STACK[B] + 4] ip = data . get ( bp + data . get ( bp ) + 4 ) ; return false ; } }
Backtracks to the continuation label stored in the current choice point frame if there is one . Otherwise returns a fail to indicate that there are no more choice points so no backtracking can be done .