xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 2.05MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-10-29
  • 語言: 其他
  • 標簽: 算符優先??

資源簡介

(1)根據給定文法,先求出FirstVt和LastVt集合,構造算符優先關系表(要求算符優先關系表 輸出到屏幕或者輸出到文件); (2)根據算法和優先關系表分析給定表達式是否是該文法識別的正確的算術表達式(要求輸出歸約過程) (3)給定表達式文法為: G(E’): E’→#E# E→E+T | T T→T*F |F F→(E)|i (4)分析的句子為: (i+i)*i和i+i)*i

資源截圖

代碼片段和文件信息

/*
*本次實驗內容是算符運算分析
實驗任務分為一下三部分:
*構造FIRSTVT,LASTVT
*構造算符優先表
*根據輸入判斷結果


*/

#include
#include
#include
#pragma?warning(disable:4996)


using?namespace?std;
const?int?maxsize?=?10;
const?int?NUM_VT?=?7;
const?int?NUM_VN?=?5;




char?WenFa[maxsize][maxsize];//存放從文件中讀取的文法
int?wenfaNum?=?0;//存放文法的個數,初值為0
char?VT[NUM_VT]?=?{?‘+‘‘*‘‘^‘‘i‘‘(‘‘)‘‘#‘?};//枚舉所有終結符
char?VN[NUM_VN]?=?{?‘E‘‘T‘‘F‘‘P‘‘S‘?};//,枚舉所有的非終結符
int?firstVt[NUM_VN][NUM_VT];//存放每個非終結符的FIRSTVT集
int?lastVt[NUM_VN][NUM_VT];//存放每個非終結符的LASTVT集
int?labelOfCh[maxsize];//保存以ch開頭的所有文法的標號
//int?firstVt[NUM_VN][NUM_VT];//存放每一個非終結符的FIRSTVT
//int?lastVt[NUM_VN][NUM_VT];//存放每一個非終結符的LASTVT
char?OGTable[NUM_VT][NUM_VN];//存放算符優先表





//首先讀取文法
bool?readFromFile(char?*str)
{
FILE?*fp?=?fopen(str?“r“);
if?(fp)
{
while?(EOF?!=?fscanf(fp?“%s“?WenFa[wenfaNum]))
{
wenfaNum++;
}
fclose(fp);
return?true;
}
else
{
printf(“Failed?to?open?the?file!\n“);
return?false;
}
}

//判斷文法字符是否是終結符
int?isVt(char?ch)
{
for?(int?i?=?0;?i? {
if?(ch?==?VT[i])
return?true;
}
return?false;
}
//判斷文法字符是否是非終結符
int?isVn(char?ch)
{
for?(int?i?=?0;?i? {
if?(ch?==?VN[i])
return?true;

}
return?false;
}
//將終結符轉換為下標
int?VnToInt(char?ch)
{
switch?(ch)
{
case?‘E‘:
return?0;
break;
case?‘T‘:
return?1;
break;
case?‘F‘:
return?2;
break;
case?‘P‘:
return?3;
break;
case?‘S‘:
return?4;
break;
default:
return?-1;

}
}

//將終結符轉換為下標
int?VtToInt(char?ch)
{
switch(ch)
{
case?‘+‘:
return?0;
break;
case?‘*‘:
return?1;
break;
case?‘^‘:
return?2;
break;
case?‘i‘:
return?3;
break;
case?‘(‘:
return?4;
break;
case?‘)‘:
return?5;
break;
case?‘#‘:
return?6;
break;
default:
return?-1;

}
}

//查找以ch開頭文法的下標并保存
int?findCh(char?ch)
{
int?num?=?0;
for?(int?i?=?0;?i? {
if?(WenFa[i][0]?==?ch)
{
labelOfCh[num++]?=?i;
}
}
return?num;//因為num是以0開始計數,所以不需要減1
}





//首先是計算FIRSTVT集,算法如下:
//1)若有產生式P->a...或者P->Qa...
//則a屬于FIRSTVT(P)
//2)若有產生式P->Q
//若a屬于FIRSTVT(Q)
//則a屬于FIRSTVT(P)
//注意算符優先分析的文法右部必須是不包含兩個不相鄰的非終結符
void?getFirstVt(char?ch)
{
//首先判斷給定的字符是否是非終結符
if?(isVn(ch))
{
//獲得ch所對應的文法編號,找到以該非終結符開頭的文法的下標
int?firstNum?=?VnToInt(ch);
int?num?=?findCh(ch);//num為返回的文法數量下標保存在labelOfCh數組中
//開始求FITSTVT集
for?(int?i?=?0;?i? {
char?rightFirst?=?WenFa[labelOfCh[i]][3];
//判斷該文法推出的第一個是終結符,則加入FIRSTVT集,如果不是將第二個字符加入FIRSTVT集中
//并且如果該文法的第一個非終結符不是左側符號的話還需要將該非終結符的FIRSTVT加入當前文法的FITRSTVT集中
if?(isVt(rightFirst))
{
firstVt[firstNum][VtToInt(rightFirst)]?=?1;
}
//否則該文法的右部第一個不是非終結符
else
{
char?rightSecond?=?WenFa[labelOfCh[i]][4];
if?(isVt(rightSecond))
{
firstVt[firstNum][VtToInt(rightSecond)]?=?1;
}
if?(ch?!=?rightFirst)
{

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

?????文件???????7400??2017-10-29?22:43??算符優先分析1\算符優先分析1\算符優先分析1.vcxproj

?????文件????????956??2017-10-29?22:43??算符優先分析1\算符優先分析1\算符優先分析1.vcxproj.filters

?????文件?????????42??2017-10-29?20:23??算符優先分析1\算符優先分析1\Input.txt

?????文件?????????68??2017-10-29?20:22??算符優先分析1\算符優先分析1\nick.txt

?????文件????????215??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\算符優先分析1.lastbuildstate

?????文件??????16160??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\CL.read.1.tlog

?????文件????????464??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\CL.write.1.tlog

?????文件????????670??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\CL.command.1.tlog

?????文件???????2882??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\link.read.1.tlog

?????文件????????420??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\link.write.1.tlog

?????文件???????1134??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog\link.command.1.tlog

?????文件????????429??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\算符優先分析1.log

?????文件????????524??2017-10-29?23:33??算符優先分析1\算符優先分析1\Debug\算符優先分析1.Build.CppClean.log

?????文件?????330752??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\vc140.idb

?????文件?????348160??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\vc140.pdb

?????文件??????56848??2017-10-30?11:17??算符優先分析1\算符優先分析1\Debug\OperatorGrammer.obj

?????文件???????9164??2017-10-30?11:17??算符優先分析1\算符優先分析1\OperatorGrammer.cpp

?????文件????8478720??2017-10-31?23:33??算符優先分析1\算符優先分析1.VC.db

?????文件???????1339??2017-10-29?22:43??算符優先分析1\算符優先分析1.sln

????..A..H.?????28160??2017-10-31?23:33??算符優先分析1\.vs\算符優先分析1\v14\.suo

?????文件?????880640??2017-10-30?11:17??算符優先分析1\Debug\算符優先分析1.pdb

?????文件?????338956??2017-10-30?11:17??算符優先分析1\Debug\算符優先分析1.ilk

?????文件??????40960??2017-10-30?11:17??算符優先分析1\Debug\算符優先分析1.exe

?????目錄??????????0??2017-10-29?22:47??算符優先分析1\算符優先分析1\Debug\算符優先分析1.tlog

?????目錄??????????0??2017-10-29?21:09??算符優先分析1\.vs\算符優先分析1\v14

?????目錄??????????0??2017-10-29?22:47??算符優先分析1\算符優先分析1\Debug

?????目錄??????????0??2017-10-29?21:09??算符優先分析1\.vs\算符優先分析1

?????目錄??????????0??2017-10-29?21:09??算符優先分析1\算符優先分析1

????...D.H.?????????0??2017-10-29?21:09??算符優先分析1\.vs

?????目錄??????????0??2017-10-29?22:47??算符優先分析1\Debug

............此處省略4個文件信息

評論

共有 條評論