• 大小: 20KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: 优先表  算符优先  

资源简介

编译原理中的算符优先文法,构造出一个优先表。

资源截图

代码片段和文件信息

//===========================================================
//     “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


评论

共有 条评论