資源簡介
編譯原理中的算符優先文法,構造出一個優先表。

代碼片段和文件信息
//===========================================================
//?????“FirstVT.cpp“
//??This?.cpp?file?is?used?to?realization?of?FirstVT‘s?class
//===========================================================
#include?“FirstVT_LastVT.h“
using?namespace?std;
//-----------------------------------------------------------
FirstVT::FirstVT(int?num_vnchar?vn[]int?num_vtchar?vt[]
?vector*?first)
{
num_VN?=?num_vn;
//VN_First?=?vn;
for(int?m=0;m VN_First[m]?=?vn[m];
num_VT?=?num_vt;
//VT_First?=?vt;
for(int?n=0;n VT_First[n]?=?vt[n];
????vector_First?=?first;
for(int?i=0;i {
Result_First[i][0]=vn[i];
????????Result_First[i][1]=‘\0‘;
}
}
//-----------------------------------------------------------
void?FirstVT::Scan_First()
{
for(int?i=0;i<(*vector_First).size();i++)
{
string?temp?=?(*vector_First)[i].right;
for(int?j=0;j {
if(IsVT(temp[j])?&&?j==0)
{
//cout<<“\n“<<(*vector_First)[i].left<<“??“< stack_First.Push((*vector_First)[i].lefttemp[j]);
break;
}
else?if(IsVT(temp[j])?&&?j==1)
{
//cout<<“\n“<<(*vector_First)[i].left<<“??“< stack_First.Push((*vector_First)[i].lefttemp[j]);
break;
}
}
}
}
//-----------------------------------------------------------
void?FirstVT::Scan_Second()
{
char?leftright;
DataType?pop_element;
while(!stack_First.IsEmpty())
{
stack_First.Pop(&pop_element);??//棧頂元素出棧
left??=?pop_element.left_VN;
right?=?pop_element.right_VT;
InsertTable(leftright);???//將出棧的元素添加到FirstVt集合中
????????Seek_Left_VN(leftright);??//找彈出的元素的左部符號是否能被別的非終結符推出.
}
}
//-----------------------------------------------------------
bool?FirstVT::IsVT(char?vt)
{
for(int?i=0;i {
if(VT_First[i]?==?vt)
return?true;
}
return?false;
}
//-----------------------------------------------------------
void?FirstVT::InsertTable(char?leftchar?right)
{
int?ij;
for(i=0;i if(VN_First[i]?==?left)
break;
for(j=0;;j++)
if(Result_First[i][j]?==?‘\0‘)
{
Result_First[i][j]?=?right;
break;
}
Result_First[i][j+1]?=?‘\0‘;
}
//-----------------------------------------------------------
void?FirstVT::Seek_Left_VN(char?leftchar?right)
{
string?temp;
for(int?i=0;i<(*vector_First).size();i++)
{
temp?=?(*vector_First)[i].right;
if(temp[0]?==?left?&&?temp[0]?!=?(*vector_First)[i].left)
stack_First.Push((*vector_First)[i].leftright);
}
}
//-----------------------------------------------------------
void?FirstVT::Result_Return(char?first[10][10])
{
cout<<“\nFirstVT?二維表:\n“;
for(int?i=0;i {
for(int?j=0;first[i][j]?=?Result_First[i][j]Result_First[i][j]?!=?‘\0‘;j++)
{
cout< }
cout< }
}
//-----------------------------------------------------------
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3033??2008-05-25?21:41??PriorityTable\FirstVT.cpp
?????文件???????2897??2008-05-24?22:01??PriorityTable\FirstVT_LastVT.cpp
?????文件???????2055??2008-05-25?21:02??PriorityTable\FirstVT_LastVT.h
?????文件???????2213??2008-05-25?21:05??PriorityTable\Input.cpp
?????文件????????798??2008-05-25?21:01??PriorityTable\Input.h
?????文件???????3109??2008-05-25?21:40??PriorityTable\LastVT.cpp
?????文件????????249??2008-05-25?21:06??PriorityTable\PriorityTable.asp
?????文件???????1570??2008-05-25?21:27??PriorityTable\PriorityTable.cpp
?????文件???????4991??2008-05-25?21:08??PriorityTable\PriorityTable.dsp
?????文件????????532??2008-05-25?20:59??PriorityTable\PriorityTable.dsw
?????文件??????91136??2008-06-27?23:16??PriorityTable\PriorityTable.ncb
?????文件??????51712??2008-06-27?23:16??PriorityTable\PriorityTable.opt
?????文件???????7222??2008-06-27?23:16??PriorityTable\PriorityTable.plg
?????文件???????4406??2008-05-25?21:38??PriorityTable\Scan.cpp
?????文件????????752??2008-05-25?21:41??PriorityTable\Scan.h
?????文件?????????80??2008-05-25?21:08??PriorityTable\Source.txt
?????文件???????1316??2008-05-25?21:06??PriorityTable\Stack.cpp
?????文件????????936??2008-05-25?21:00??PriorityTable\Stack.h
?????文件??????????0??2008-05-20?09:47??PriorityTable\Table.cpp
?????文件????????118??2008-05-20?10:33??PriorityTable\Table.h
?????目錄??????????0??2008-06-27?23:16??PriorityTable\Debug
?????目錄??????????0??2008-06-27?23:16??PriorityTable
-----------?---------??----------?-----??----
???????????????179125????????????????????22
評論
共有 條評論