91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 242KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-09-09
  • 語言: 其他
  • 標簽: 活前綴??

資源簡介

編譯原理實驗報告及源碼,LR1 活前綴 字符串匹配

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
//輸入為擴廣后的文法
//文法存儲在g中
#define?PROJECT_SET_SIZE?20
#define?PROJECT_ID_POS?0
#define?GRAMMER_ID_POS?1
#define?GRAMMER_START_CHAR_POS?5
#define?BFCHAR_POS?2
#define?AFCHAR_POS?3
#define?PROJECT_LEN_POS?4
#define?ID?10000


struct?grammer
{
char?**g;
char?vt[127];
char?vn[27];
char?s;
int?line;
};

typedef?struct
{
int?id;
char?ch;
}SElemType;

#include?“stack.h“
//?文法的項目
struct?gprjt
{
char?**gp;//gp的格式為gp[1][0]為編號(從0開始),gp[1][2]字符數gp[i][1]圓點前的字符若無則為0,gp[i][2]為圓點后的字符,若無為0
char?s;
int?line;
};

typedef?struct?prjset
{
int?id;//項目集編號,從10000開始,與項目編號(從0開始)區別
struct?prjset?*next;//指向下個項目集
char?prjt[PROJECT_SET_SIZE+1];//PROJECT_SET_SIZE個單元存儲項目的編號prjt[0]項目編號的個數
char?pointafter[PROJECT_SET_SIZE+1];//圓點后的字符pointafter[0]字符個數
struct?prjset?*actorgo[PROJECT_SET_SIZE];
char?pointbefore;
}prjset*pprjset;

struct?head
{
prjset?*I;//指向I0及第一個項目集
prjset?*tail;
int?size;//項目集的個數
};

struct?From
{
int?**form;
char?vn[27];
char?vt[127];
};

char?DOT?=?‘*‘;
grammer?g;
gprjt?project;
head?root;
struct?From?form;
/////////////////////////////////////////////////
void?Init();
void?Quit();
void?Input();
int?OpenFile(char?*s);
void?CreateProjectSet();//構造文法的項目集
void?Closure(prjset?*prjset);//prjset指向項目集
int?go(int?rk?prjset?*prjset);//rk為項目編號,將rk的去向加入prjset指向的項目集中返回項目編號,若無,返回-1
int?CreateAnalysisForm();//返回1,則LR(0)分析表創建成功;返回0,不成功
void?PrintPojectSet();
void?PrintForm();
void?AnalysisProcess(char?*s);
int?IsInSet(char?*s?char?ch);
void?JoinSet(char?*s?char?ch);
////////////////////////////////////////////////

void?main()
{
int?i;
char?ch;
char?filename[25];
char?string[100];
Init();
re: printf(“====================?LR(0)語法分析?=====================\n\n您希望從文件讀入文法請按1,退出請按0?\n“);
fflush(stdin);
ch?=?getche();
printf(“\n“);
????if(ch==‘0‘)
return;
if(ch==‘1‘)
{
printf(“請輸入存放文法的文件名(XXX.txt)?:“);
gets(filename);
if(!OpenFile(filename))
{
goto?re;
}
}
CreateProjectSet();
PrintPojectSet();
CreateAnalysisForm();
/* if(!CreateAnalysisForm())
{
printf(“不是?LR(0)?文法?!\n“);
goto?re;
}//if

*/
PrintForm();

re2:printf(“進行字符串匹配請按‘1‘退出請按‘0‘:“);
fflush(stdin);
printf(“請輸入您的選擇?:?“);
ch?=?getche();
printf(“\n“);
if(ch?==?‘1‘)
{
printf(“請輸入要匹配的序列串(以?‘#‘結尾):“);
gets(&string[1]);
string[0]?=?strlen(&string[1]);
i?=?string[0];
if(string[i]?!=?‘#‘)
{
string[i+1]?=?‘#‘;
string[i+2]?=?‘\0‘;
string[0]++;
}
AnalysisProcess(string);
goto?re2;
}
else?if(ch?==?‘0‘)
{
Quit();
return?;
}
else?
goto?re2;


}




void?Init()
{
form.form?=?NULL;
form.vn[0]?=?form.vt[0]?=?0;
root.I?=?root.tail?=?NULL;
root.size?=?0;
}

void?Quit()
{
if(root.I?!=?NULL)
{
for(pprjset?p=root.I;?p!=NULL;?p=p->next)
{
pprjset?q?=?p-

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????239058??2011-07-16?17:28??實驗3編譯原理?LR1\LR實驗報告冊.docx

?????文件??????19458??2011-06-19?22:28??實驗3編譯原理?LR1\LR語法分析.cpp

?????文件?????204891??2011-06-19?22:28??實驗3編譯原理?LR1\LR語法分析.exe

?????文件?????????29??2011-06-17?23:46??實驗3編譯原理?LR1\test.txt

?????目錄??????????0??2011-07-16?17:28??實驗3編譯原理?LR1

-----------?---------??----------?-----??----

???????????????463436????????????????????5


評論

共有 條評論