fix parser corner cases. fix number types. add value ranges to number types.
Merge branch 'master' into value-ranges
value range restriction and branch cutting
- works for simple comparison such as x<2, x>2, 2<x etc
- restrict number range after such conditionals
- cut infeasible branches and types give the value ranges
add debug flag
fix a few exceptions from last change
fix return type for If. more tests.
more tests, some are not correct yet
basic working arithmetic system.
- unified AST nodes (removed BoolOp, Compare, and complex ops NotEq etc)
- represent complex ops with simple/atomic ones
- perform arithmetic and numerical reasoning on number ranges
- the following program can be reasoned about and w will only refer to the 'w' on the true branch.

x = int(random)
y = int(random)

if 1 < x < 2 and y < 4:
    z = x + y
    if z < 7:
        w = "true"
    else:
        w = False
print x, y, w
Double.MIN_VALUE and Double.MAX_VALUE are not the right ones to use. Use Double.POSITIVE_INFINITY and Double.NEGATIVE_INFINITY instead.
refactoring, move op to front. fix a bug. the control flow with branches is still not correct.
starting point for a ruby AST dumper
revert incorrect changes to Scope
remove more complex nodes from Python AST
- AugAssign x+=1 is turned into x=x+1
- Assign x=y=z=1+2 is turned into z=1+2;y=z;x=z
fix type of +
still cleaning up deeply recursive shit :)
80% done
checkpoint3
switch to GPL
connected to irb
generated first trivial ruby result