ーは変数名の一部になるっぽいからそれをエラーとして出すことはできない
$dbー>Query('SHOW TABLES');は、
$dbー という変数と、 Query('SHOW TABLES'); という関数呼び出しの結果を > で比較するような式になるから文法的には間違っていない

$dbー = 1;
function Query($str) {return 2};とか定義してやればちゃんと動く

一方、10 ー 1がダメな理由は、10 A 1とかがダメなのと一緒で、文法的に間違っている。
要は、この2つは似てるようでいて動かない理由が違うってこと。

PHPみたいなインタプリタ方式で動く言語は、実行時の条件分岐によって、変数や定数などが定義されたかどうかで特定の式がエラーになったりならなかったりするから、
実行前のエラー検出はC++とかより困難で、前者のエラーはインタプリタでは実行前にはエラーであることを検出するのが難しい

そういう打ち間違いをしないようにするか、打ち間違いしないようなプラグインなりチェックツールなりを探すか自作する必要があると思う