Every attempt to reduce the need for parentheses introduces a possible
ambiguity, whose resolution might after all require a semicolon.
You are wrong here.
Removing parentheses from the following expressions will NOT add any new ambiguity in Lua syntax.
("str"):foo()
({a=42})[foo]
As you can see, these expressions are already a source of ambiguity due to they are starting with "(".
You can't make them more ambiguous than they already are :-)