On Apr 3, 2006, at 2:20 PM, Logan Capaldo wrote: > Frankly I'm confused that > while obj.meth do end isn't a syntax error... > > while 1 do end > [...] > I tried fiddling with it with ParseTree, but it was less than > enlightening: > ParseTree.new.parse_tree(A)[0][3] > => [:defn, :m, [:scope, [:block, [:args], [:while, [:call, > [:self], :class], true]]]] Why are you confused that it isn't a syntax error? Is it simply because of the lack of a semi between do/end? while bool-expr [do] body end Given that body is zero or more expressions, it would seem to me to be perfectly valid as-is. BTW, there is a much easier way to use ParseTree: % echo "while 1 do end" | parse_tree_show -f (eval):1: warning: literal in condition [[:class, :Example, :Object, [:defn, :example, [:scope, [:block, [:args], [:while, [:lit, 1], true]]]]]] % echo "while obj.meth do end" | parse_tree_show -f [[:class, :Example, :Object, [:defn, :example, [:scope, [:block, [:args], [:while, [:call, [:vcall, :obj], :meth], true]]]]]] The next release of ParseTree will make it outputs just: [[:while, [:call, [:vcall, :obj], :meth], true]] -- _why: zenspider's most intense moments of solice are immediately following the slaughter [...] _why: that topknot's the only thing keeping a lid on the righteous anger bricolage: yeah, that and his flagrant obsession with dvorak