C程序片段并发性测试以及前趋图的自动生成

VX2012平台。C++完成主程序,JAVA实现界面。

所谓程序并发性是指在计算机系统中同时存在有多个程序,宏观上看,这些程序是同时向前推进的.在单CPU环境下,这些并发执行的程序是交替在CPU上运行的。分析程序之间的的可并发性,并利用伯恩斯坦条件来判定各程序之间能否并发执行,同时通过词法语法分析自动生成程序之间的前趋图(DAG图),对我们分析程序很有好处。


//by hfut yzk
#include"stdafx.h"
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<fstream>
using namespace std;
/************************************************************结构体定义************************************************************/
#pragma region    结构体定义
struct  kind
{
    string na;																									   //单词
    int num;																									   //内码
    string type;																							    	//类型
    int l,r;																											 //行列数
};
struct var_que									                                                           //每个变量对应俩个程序读写情况队列
{
    vector<int>r,w;
};
#pragma endregion</span>


/* ***********************************************************变量定义************************************************************** */
#pragma region    变量定义

int line=1,row=1;																						//行列号
//char c;
const int num_pro=10;																				//程序数量
map<char,int>ma;																						//运算符表
vector<kind>res;																						 //视图表
int tree[10000][30];                                                                                //字典树
int numv=0;int w[10000];                                                                    //字典树变量值
int key=0;  int flag=0;	int flag1=0;												    //key统计关键字,flag统计标识符
char *pro[100];																					    //程序文件路径名
ifstream in;																							    //文件对象	
map<string,int>getid ;																		     //标识符编号
var_que vq[100];																				  //变量 对每个程序的读写情况
void  test_for_berstein();			                                                         //berstein条件的判定
#pragma endregion</span>


/* ***********************************************************函数声明**************************************************************/
#pragma region 函数声明

void start(int id);																				//启动函数	
void testit(int id,char c,string s);													//标识符是否左值测试1
void testitf(int id,string s);																//标识符是否左值测试2
void init();																							//初始化函数
void insert(string s);																			//字典树插入函数		
void reads()	;																						//读入数据
bool test(int u);																					//是否保留字前缀
void f1(char &c,int id)	;																	// 关键字标识符分析器
void f2(char &c)			;																		  //数字分析器
void f3(char &c)			;																		 //分界符、运算符等其他分析器
bool test_other(char x)	;																 //测试是否运算符
void  test_for_same_w(string s,int id) ;                                         //防止同程序的变量多次记录
void get_graph()			;																		  //生成前趋图		

#pragma endregion</span>

/************************************************************函数实现区************************************************************/

#pragma region 函数实现
/************************************************************初始化函数************************************************************/
void  init()                                                                                         
{
    //res.clear();
    flag=0;
	return ;
}

/**************************************
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值