Issue #9251 has been updated by duerst (Martin Dürst).

Assignee changed from pragdave (Dave Thomas) to matz (Yukihiro Matsumoto)

Sorry about the confusion with the books, but the "pickaxe" has exactly the same issue, too.

As for "almost with admiration", that might apply to LALR, but not to the syntax. Every syntax has some advantages and some disadvantages, and these can be discussed endlessly. Ruby has a much more flexible syntax than e.g. Pascal. That has big benefits in many cases, but may also have some problems in corner cases. In general, it's impossible for programming language syntax to be easy to write and catch all programmer errors at the same time :-(.
----------------------------------------
Bug #9251: ! operator has lower precedence than = in an assignment expression
https://bugs.ruby-lang.org/issues/9251#change-43731

Author: rits (First Last)
Status: Third Party's Issue
Priority: Low
Assignee: matz (Yukihiro Matsumoto)
Category: doc
Target version: 
ruby -v: ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


irb(main):001:0> !a = 1
(irb):1: warning: found = in conditional, should be ==
=> false
irb(main):002:0> a
=> 1

! is supposed to have higher precedence than =, so !a = 1 should be (!a) = 1, and thus an error, not !(a = 1) 



-- 
http://bugs.ruby-lang.org/