示例#1
0
 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)
示例#2
0
    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)
示例#3
0
    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)