• 大小: 7.78MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-02
  • 语言: 其他
  • 标签: 编译原理  for  

资源简介

编译原理 for 条件语句,while 语句的翻译及各种地质输出,大家慢慢找

资源截图

代码片段和文件信息

#include“expression.h“

using namespace std;
//--------------变量定义------------------------

int predicateTable[7][11]=//预测分析表
{
{12000000000}
{014403000000}
{00050000000}
{00000060000}
{00000700000}
{0000000118910}
{1300012000000}

};
typedef struct Formula//产生式的结构体
{
string leftsec;
string*rightsec;
int rightnum;
}Form;
Formula formula[15];//定义产生式
//----------------函数定义---------------
void InitFormula()//初始化产生式
{
formula[1].leftsec=“S“;
formula[1].rightsec=new string [5];
formula[1].rightsec[0]=“do“;
formula[1].rightsec[1]=“T“;
formula[1].rightsec[2]=“while“;
formula[1].rightsec[3]=“E“;
formula[1].rightsec[4]=“K“;
formula[1].rightnum=5;
formula[2].leftsec=“S“;
formula[2].rightsec=new string [2];
formula[2].rightsec[0]=“ndo“;
formula[2].rightsec[1]=“D“;//and do pre ndo
formula[2].rightnum=2;
formula[3].leftsec=“K“;
formula[3].rightsec=new string [1];
formula[3].rightsec[0]=“}“;
formula[3].rightnum=1;
formula[4].leftsec=“K“;
string * temp=new string(““);
formula[4].rightsec=temp;
formula[4].rightnum=0;
formula[5].leftsec=“T“;
formula[5].rightsec=new string [2];
formula[5].rightsec[0]=“{“;
formula[5].rightsec[1]=“S“;
formula[5].rightnum=2;
formula[6].leftsec=“E“;
formula[6].rightsec=new string [5];
formula[6].rightsec[0]=“(“;
formula[6].rightsec[1]=“A“;
formula[6].rightsec[2]=“op“;
formula[6].rightsec[3]=“A“;
formula[6].rightsec[4]=“)“;
formula[6].rightnum=5;
formula[7].leftsec=“A“;
formula[7].rightsec=new string [1];
formula[7].rightsec[0]=“i“;
formula[7].rightnum=1;
formula[8].leftsec=“op“;
formula[8].rightsec=new string [1];
formula[8].rightsec[0]=“<“;
formula[8].rightnum=1;
formula[9].leftsec=“op“;
formula[9].rightsec=new string [1];
formula[9].rightsec[0]=“>“;
formula[9].rightnum=1;
formula[10].leftsec=“op“;
formula[10].rightsec=new string [1];
formula[10].rightsec[0]=“==“;
formula[10].rightnum=1;
formula[11].leftsec=“op“;
formula[11].rightsec=new string [1];
formula[11].rightsec[0]=“<=“;
formula[11].rightnum=1;
formula[12].leftsec=“D“;
formula[12].rightnum=1;
formula[12].rightsec=new string [1];
formula[12].rightsec[0]=“}“;
formula[13].leftsec=“D“;
formula[13].rightnum=1;
formula[13].rightsec=new string [1];
formula[13].rightsec[0]=“S“;
formula[14].leftsec=“K“;
formula[14].rightnum=2;
formula[14].rightsec=new string [2];
formula[14].rightsec[0]=“ndo“;
formula[14].rightsec[1]=“}“;

};
void ClearVar()//清空全局变量
{
for(int i=0;i<50;i++)
sstack[i]=““;
sorcecode.clear();
while(!sStack.empty())
sStack.pop();
index=‘0‘;
}
int retX(string &x)//定位产生式辅助函数
{
if(x==“S“)
return 0;
else if(x==“K“)
return 1;
else if(x==“T“)
return 2;
else if(x==“E“)
return 3;
else if(x==“A“)
return 4;
else if(x==“op“)
return 5;
else if(x==“D“)
return 6;
else //error
return -1;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      82944  2009-06-21 21:11  词法分析\Debug\vc60.idb

     文件     110592  2009-06-21 21:11  词法分析\Debug\vc60.pdb

     文件     602192  2009-06-21 21:11  词法分析\Debug\词法分析.exe

     文件     829592  2009-06-21 21:11  词法分析\Debug\词法分析.ilk

     文件     377509  2009-06-21 21:11  词法分析\Debug\词法分析.obj

     文件    2009656  2009-05-01 02:43  词法分析\Debug\词法分析.pch

     文件    1139712  2009-06-21 21:11  词法分析\Debug\词法分析.pdb

     文件       4096  2009-06-18 22:25  词法分析\Debug\词法分析.suo

     文件        102  2009-06-21 17:37  词法分析\inputword.txt

     文件        341  2009-06-21 21:11  词法分析\outputword.txt

     文件      43376  2009-06-21 21:10  词法分析\词法分析.cpp

     文件       3427  2009-06-21 21:11  词法分析\词法分析.dsp

     文件        541  2009-06-21 21:12  词法分析\词法分析.dsw

     文件      50176  2009-06-21 21:12  词法分析\词法分析.ncb

     文件      48640  2009-06-21 21:12  词法分析\词法分析.opt

     文件        702  2009-06-21 21:11  词法分析\词法分析.plg

     目录          0  2009-06-21 21:11  词法分析\Debug

     目录          0  2009-06-21 21:12  词法分析

----------- ---------  ---------- -----  ----

              5303598                    18


评论

共有 条评论