Non-smart contracts also have something like the two sides having an understanding of what the spirit of what they agreed was, and they can be discussed in court and interpreted by a judge when all else fails. So not absolutely everything has to be spelled out all the time.
Smart contracts are code and there is no fallback mechanism in case of mistakes.
They probably have to be way more complicated than non-smart contracts?
The equivalent in code is pre-existing libraries, and miles of them. But the law has highly developed ways of ridding itself of cruft and tech debt over time, in a way that lib dependencies really don't.
Legal precedent is a method for defining laws, not a requirement of a legal system. It is absolutely not essential to solve issues of incomplete, ambiguous, or invalid contracts.
Smart contracts are code and there is no fallback mechanism in case of mistakes.
They probably have to be way more complicated than non-smart contracts?