while の条件部分に
	while  token = $tokens.shift
	while  (token = $tokens.shift)

の様に書くと そのうち token に nil を入れたまま無限ループに
入ります。(Linux /ruby 0.99.2)

	token = $tokens.shift
	while  token 
		token = $tokens.shift
	end

なら nil でloop からでます。

でも
	@lineNr = @cur_line = 0 
の様な時は期待通りに動きます。

代入演算の戻り値は使える場合と使えない場合があるのでしょうか?