--- esg.py- 2016-09-14 00:40:00.000000000 +0900 +++ esg.py 2016-09-14 23:00:00.000000000 +0900 @@ -243,6 +243,10 @@ def tree_type(lst): e4 = tree_type( [ e[4] ] )[0] e = [ e[0], e[1], e[2], e[3], e4 ] return step(e, 1) + if e[0] == 'kwd' and e[1] in [ 'if', 'while', 'for' ]: + try_blk = lambda t: tree_type( [ t ] )[0] if t[:2] == [ 'br_s', '{' ] else t + e = e[:2] + [ try_blk(t) for t in e[2:] ] + return step(e, 1) if e[0] == 'type' and len( lst[1:] ) > 0: e = [ e[0], e[1], lst[1] ] return step(e, 2)