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 ;
}
/**************************************