def p_direct_abstract_declarator_5(self, p): """ direct_abstract_declarator : LPAREN parameter_type_list_opt RPAREN """ p[0] = c_ast.FuncDecl( args=p[2], type=c_ast.TypeDecl(None, None, None), coord=p[1].coord)
def p_direct_declarator_5(self, p): """ direct_declarator : direct_declarator LPAREN parameter_type_list RPAREN | direct_declarator LPAREN identifier_list_opt RPAREN """ func = c_ast.FuncDecl(args=p[3], type=None, coord=p[1].coord) p[0] = self._type_modify_decl(decl=p[1], modifier=func)
def p_direct_declarator_6(self, p): """ direct_declarator : direct_declarator LPAREN identifier_list_opt RPAREN | direct_declarator LPAREN parameter_type_list RPAREN """ func = c_ast.FuncDecl(args=p[3], type=None, coord=p[1].coord) # TODO: 可以考虑移除此部分 if self._get_lookahead_token().type == "LBRACE": if func.args is not None: for param in func.args.params: self._add_identifier(param.name, param.coord) p[0] = self._type_modify_decl(decl=p[1], modifier=func)