I think I understand why semicolons make good error messages easier to implement. However, I don&#x27;t see anything that makes that same quality of error messages <i>impossible</i> in a language without semicolons. It&#x27;s just a matter of how much time the language writer is willing to spend on slightly improving the user experience.<p>Semicolons help get a better error message for the following typo, if `foo` can take either 0 or 1 arguments:<p><pre><code>  if (true) {
    foo(;
    bar *= 2;
    baz(
      &quot;first&quot;,
      &quot;second&quot;,
    );
  }
</code></pre>
The compiler can easily tell you that you forgot a ) on line 2. If semicolons were optional, the program would be this:<p><pre><code>  if (true) {
    foo(
    bar *= 2
    baz(
      &quot;first&quot;,
      &quot;second&quot;,
    )
  }
</code></pre>
The simplest error message to implement would complain that you forgot a ) somewhere within lines 2 to 7, and also that the argument to `foo` contains two statements instead of one expression. This error message would be less helpful.<p>However, with the semicolonless language, you <i>could</i> still write the compiler to give the better error message. You could have a heuristic that that this combination of errors suggests a different error, or you could parse indentation for error-checking purposes. It would just require more work on the part of the compiler writer.