--- est.py- 2016-09-26 00:00:00.000000000 +0900 +++ est.py 2016-09-27 00:00:00.000000000 +0900 @@ -425,11 +425,15 @@ def do_set(e, val, info): set_val(v, val, info) return val if e[:2] in [ [ 'op', '.' ], [ 'op', '->' ] ]: - name = e[2][1] # [ 'name', xxx ] + d = do_expr( e[2], info ) memb = e[3][1] # [ 'name', xxx ] - d = get_val(name, info) d[memb] = val return val + if e[:2] == [ 'op', '[' ]: + lst = do_expr( e[2], info ) + i = do_expr( e[3], info ) + lst[ int(i) ] = val + return val warn_no_sup('do_set', 'k', k) @@ -617,6 +621,7 @@ def bind_body_val(lst, vals): def do_type_struct(e, val, info): # [ 'struct', name, body ] + do_sdef(e, info) (name, body) = e[1:3] if body is None: body = get_val( sdef_name(name), info )