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