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/