def p_dynamic_class_name_reference(p): '''dynamic_class_name_reference : base_variable OBJECT_OPERATOR object_property dynamic_class_name_variable_properties | base_variable''' if len(p) == 5: name, dims = p[3] p[0] = ast.ObjectProperty(p[1], name, lineno=p.lineno(2)) for class_, dim, lineno in dims: p[0] = class_(p[0], dim, lineno=lineno) for name, dims in p[4]: p[0] = ast.ObjectProperty(p[0], name, lineno=p.lineno(2)) for class_, dim, lineno in dims: p[0] = class_(p[0], dim, lineno=lineno) else: p[0] = p[1]
def p_variable(p): '''variable : base_variable_with_function_calls OBJECT_OPERATOR object_property method_or_not variable_properties | base_variable_with_function_calls''' if len(p) == 6: name, dims = p[3] params = p[4] if params is not None: p[0] = ast.MethodCall(p[1], name, params, lineno=p.lineno(2)) else: p[0] = ast.ObjectProperty(p[1], name, lineno=p.lineno(2)) for class_, dim, lineno in dims: p[0] = class_(p[0], dim, lineno=lineno) for (name, dims), params in p[5]: if params is not None: p[0] = ast.MethodCall(p[0], name, params, lineno=p.lineno(2)) else: p[0] = ast.ObjectProperty(p[0], name, lineno=p.lineno(2)) for class_, dim, lineno in dims: p[0] = class_(p[0], dim, lineno=lineno) else: p[0] = p[1]
def p_encaps_var_object_property(p): 'encaps_var : VARIABLE OBJECT_OPERATOR STRING' p[0] = ast.ObjectProperty(ast.Variable(p[1], lineno=p.lineno(1)), p[3], lineno=p.lineno(2))