• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2022-11-30
  • 语言: C/C++
  • 标签: 东南大学  

资源简介

编译原理实验,语法分析器,用C++实验,里面将词法分析器与语法分析器连接在了一起,通过写一段简单的C++代码,能够通过词法分析,然后进行语法分析,判断是否符合简单的C++语法

资源截图

代码片段和文件信息

#include
using namespace std;
#include 
#include 
#include 
using std::string;
#include 
#include
using std::ofstream;
using std::ifstream;
char ch;
int sp=0;
int j=0;
int k=0;
int buff[100]={0};
int bu=0;
string M[12][18]={“K)(m““&““&““&““&““&““&““&““&““&““&““&““&““&““&““&““&““$“
               “&““&““&““}C{““&““&““&““&““&““&““&““&““&““&““&““&““&““&“
  “&““&““&““&““$““&““&““C;Y““C;Y““C;Y““&““&““&““&““&““&““&““&“
  “&““&““&““&““&““&““&““T““X““F““&““&““&““&““&““&““&““&“
  “&““&““&““&““&““&““&““&““&““B=a““&““&““&““&““&““&““&““&“
  “&““&““&““&““&““&““&““KJi““&““&““&““&““&““&““&““&““&““&“
  “&““&““&““&““&““&““&““&““KJw““&““&““&““&““&““&““&““&““&“
  “&““)BGB(““&““&““&““&““&““&““&““&““&““&““&““&““&““&““&““&“
  “&““P)B(““&““&““&““&““&““&““&““Pa““Pd““&““&““&““&““&““&““&“
  “&““PBZB““$““&““&““$““&““&““&““PBZB““PBZB““$““$““$““$““$““$““&“
  “&““&““&““&““&““&““&““&““&““&““&““+““-““*““/““&““&““&“
  “&““&““&““&““&““&““&““&““&““&““&““&““&““&““&““<““>““&“};
  //&表示错误,$表示空串m=maina=idi=ifw=whilep=B‘d=num
char stack[100];
char* keyword[13]={“main““if““break““else““int““for“ “return““while““include““char““switch““void““new“};
int number[]={12345678910111213};
int number1[]={14151617181920212223242526};
char *operatornum[13]={“+““-““*““/““=““>““;““(““)““{““}““<““:“};

char *zhushifu[3]={“//““/*““*/“};//注释符

//////////////////////////////////////////////////////////////////////////////////////////
int a=0;
bool compare(char searchstr[]int wordtype)
{
int i;
switch (wordtype)
{
case 1:for(i=0;i<=12;i++)
     {
      if(strcmp(keyword[i]searchstr)==0)
  {
  a=i;
       return(true);
  }
      
     }
case 2:{
for(i=0;i<=12;i++)
{
if(strcmp(operatornum[i]searchstr)==0)
{
a=i;
return(true);
}
}
break;
   }
}
return(false);
}
void search(char ch[])
{
if(compare(ch1))
{
cout<<“<“<“< buff[bu]=number[a];
bu++;
}
else
{
a=27;
cout<<“<“<“< buff[bu]=27;
bu++;
}

}
void digitnumber(char ah[])
{
a=28;
cout<<“<“<“< buff[bu]=28;
bu++;


}

void other(char ah)
{
char c[2]={ah‘\0‘};
if(compare(c2))
{
cout<<“<“<“< buff[bu]=number1[a];
bu++;
}
else{
cout<<“error!“< buff[bu]=-1;
bu++;
}
}
void scnar()
{
char ch;
char sd[20];
int i=0;
char dg[32];
char bh;
ifstream inPut(“input.txt“ios::in);

if(!inPut)
{
cerr<<“File could not be opened“< exit(1);
}
else
{
inPut>>ch;

while(!inPut.eof())
{   
if(isalpha(ch))

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

     文件         48  2011-12-23 13:46  yufa\input.txt

     文件       7569  2011-12-23 12:32  yufa\test.cpp

     目录          0  2012-01-17 19:44  yufa

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

                 7617                    3


评论

共有 条评论