def p_assignment(p): '''assignment : field_list '=' expr''' # if len(p[1]) == 1: # p[0] = assignment(p[1][0], p[3]) # else: struct_name = p[1].popleft() p[0] = assignment(struct_name, field_update(variable(struct_name), p[1], p[3]))
def p_field_access_field_list(p): '''expr0 : field_list''' struct = variable(p[1].popleft()) fields = p[1] while fields: struct = field_access(struct, fields.popleft()) p[0] = struct