• 大小: 20.28MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-06
  • 语言: C/C++
  • 标签: 实验报告  

资源简介

合工大编译原理实验报告(附源码),用c++编写。11111

资源截图

代码片段和文件信息

#include
#include
#include 
using namespace std;
string key[8] = { “do““end““for““if““printf““scanf““then““while“ };
string optr[4] = { “+““-““*““/“ };
string separator[6] = { “““;““{““}““(““)“ };
char ch;
//判断是否为保留字 
bool IsKey(string ss) {
int i;
for (i = 0; i<8; i++)
if (!strcmp(key[i].c_str() ss.c_str()))
return true;
return false;
}
//字母判断函数 
bool IsLetter(char c) {
if (((c >= ‘a‘) && (c <= ‘z‘)) || ((c >= ‘A‘) && (c <= ‘Z‘)))
return true;
return false;
}
//数字判断函数 
bool IsDigit(char c) {
if (c >= ‘0‘&&c <= ‘9‘)
return true;
return false;
}
//运算符判断函数 
bool IsOptr(string ss) {
int i;
for (i = 0; i<4; i++)
if (!strcmp(optr[i].c_str() ss.c_str()))
return true;
return false;
}
//分界符判断函数 
bool IsSeparator(string ss) {
int i;
for (i = 0; i<6; i++)
if (!strcmp(separator[i].c_str() ss.c_str()))
return true;
return false;
}



void analyse(ifstream &in) {
string st = ““;
char ch;

int line = 1 row = 0;
while ((in.get(ch))) {
st = ““;
if ((ch == ‘ ‘) || (ch == ‘\t‘)) {} //空格,tab健    
else
if (ch == ‘\n‘) { line++; row = 0; }  //换行行数加一处理 
else
if (IsLetter(ch))   //关键字、标识符的处理    
{
row++;
while (IsLetter(ch) || IsDigit(ch))
{
st += ch;
in.get(ch);
}
in.seekg(-1 ios::cur);//文件指针(光标)后退一个字节     
if (IsKey(st))  //判断是否为关键字 查询关键字表;   
cout << st << “\t(“ << st << ““ << 1 << “)“ << ‘\t‘ << “关键字“ << ‘\t‘ << ‘\t‘ << “(“ << line << ““ << row << “)“ << endl;
else    //否则为标示符
cout << st << “\t(“ << st << ““ << 2 << “)“ << ‘\t‘ << ‘\t‘ << “标识符“ <<‘\t‘<< ‘\t‘ << “(“ << line << ““ << row << “)“ << endl;
}
else
if (IsDigit(ch))  //无符号整数处理    
{
row++;
while (IsDigit(ch))
{
st += ch;
ch = in.get();
}
in.seekg(-1 ios::cur);
cout << st << “\t(“ << st << ““ << 3 << “)“ << ‘\t‘ << ‘\t‘ << “常数“ << ‘\t‘ << ‘\t‘ << “(“ << line << ““ << row << “)“ << endl;
// break;
}
else
{
st = ““;
st += ch;
if (IsOptr(st)) //运算符处理
{
row++;
                            cout << st << “\t(“ << st << ““ << 4 << “)“ << ‘\t‘ << ‘\t‘<< “运算符“ << ‘\t‘ <<‘\t‘<< “(“ << line << ““ << row << “)“ << endl;

}
else
if (IsSeparator(st))//分隔符处理     
{
row++;
cout << st << “\t(“ << st << ““ << 5 << “)“ << ‘\t‘ << ‘\t‘ << “分界符“ << ‘\t‘ << ‘\t‘ << “(“ << line << ““ << row << “)“ << endl;
}
else {
switch (ch) {
row++;
case‘=‘: {row++; cout << “=“ << “\t(“ << “=“ << ““ << “6“ << “)“ << ‘\t‘ << “\t关系运算符“ << ‘\t‘ << “(“ << line << ““ << row << “)“ << endl; }
case‘>‘: {row++; ch = in.get();
if (ch == ‘=‘) cout << “>=“ << ‘\t‘ << “(“ << “>=“ << ““ << “6“ << “)“ << ‘\t‘ << “\t关系运算符“ << ‘\t‘ << “(“ << line << ““ << row << “)“ <

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      786392  2018-06-19 19:37  2016212234余达昊.docx
     目录           0  2018-05-24 19:44  ConsoleApplication1\
     目录           0  2018-05-24 18:47  ConsoleApplication1\.vs\
     目录           0  2018-05-24 18:47  ConsoleApplication1\.vs\ConsoleApplication1\
     目录           0  2018-06-19 19:34  ConsoleApplication1\.vs\ConsoleApplication1\v15\
     文件       27648  2018-06-19 19:34  ConsoleApplication1\.vs\ConsoleApplication1\v15\.suo
     文件     4829184  2018-06-19 19:34  ConsoleApplication1\.vs\ConsoleApplication1\v15\Browse.VC.db
     目录           0  2018-05-24 18:49  ConsoleApplication1\.vs\ConsoleApplication1\v15\ipch\
     目录           0  2018-05-24 18:49  ConsoleApplication1\.vs\ConsoleApplication1\v15\ipch\AutoPCH\
     目录           0  2018-05-24 18:49  ConsoleApplication1\.vs\ConsoleApplication1\v15\ipch\AutoPCH\CONSOLEAPPLICATION1-6cc9b11c\
     目录           0  2018-05-24 18:49  ConsoleApplication1\.vs\ConsoleApplication1\v15\ipch\AutoPCH\CONSOLEAPPLICATION1-6cc9b11c\源-b6faddeb\
     文件    25690112  2018-06-19 19:33  ConsoleApplication1\.vs\ConsoleApplication1\v15\ipch\AutoPCH\CONSOLEAPPLICATION1-6cc9b11c\源-b6faddeb\源.ipch
     目录           0  2018-06-07 19:11  ConsoleApplication1\ConsoleApplication1\
     文件        7052  2018-05-24 18:50  ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj
     文件         944  2018-05-24 18:50  ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj.filters
     目录           0  2018-06-07 19:11  ConsoleApplication1\ConsoleApplication1\Debug\
     目录           0  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\
     文件         762  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\CL.command.1.tlog
     文件       12296  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\CL.read.1.tlog
     文件         640  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\CL.write.1.tlog
     文件         235  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\ConsoleApplication1.lastbuildstate
     文件        1332  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\link.command.1.tlog
     文件        2918  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\link.read.1.tlog
     文件         624  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleA.DE846A07.tlog\link.write.1.tlog
     文件         265  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\ConsoleApplication1.log
     文件      322560  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\vc141.idb
     文件      430080  2018-06-07 19:11  ConsoleApplication1\ConsoleApplication1\Debug\vc141.pdb
     文件      316564  2018-06-14 19:05  ConsoleApplication1\ConsoleApplication1\Debug\源.obj
     文件          33  2018-05-24 19:37  ConsoleApplication1\ConsoleApplication1\test.txt
     文件        4352  2018-06-07 19:11  ConsoleApplication1\ConsoleApplication1\源.cpp
     文件        1340  2018-05-24 18:48  ConsoleApplication1\ConsoleApplication1.sln
............此处省略70个文件信息

评论

共有 条评论