The drawback is that building an AST now requires a symbol table and resolving imports, possibly performing type inference and whatnot. It constitutes a higher barrier for various types of tooling. You really want your programming language to avoid becoming context-sensitive in that way.

It’s similar for the human reader: The examples are only intelligible to the reader incidentally, due to the names used and some natural-text conventions. In the general case, you have a seemingly random token sequence where you have no idea what binds to what, without looking up the type definitions or having an IDE present the expression in some structured way again.

Furthermore, in typical code you don’t have the case of constant values so often. You’ll rather have things like:

    nextYear thisMonth.previous() lastDayOf(thisMonth.previous())
    Double.parse(speedInput) m/s
    startPos to (startPos + length - 1)
    Schedule contacts.select(contactId) inputForm.getDateTime()