The reason is that the Makefile re-made src/yacc.lex.sml and friends, and so since mlyacc.cm depends on them, it had to be re-made to. The reason is that src/yacc.lex.sml wasn't part of the source, so it must be made.