btyacc is a public-domain backtracking implementation of yacc. It can be found at http://www.siber.com/btyacc/.