1 / 14
文档名称:

词法分析的实验报告.doc

格式:doc   大小:179KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

词法分析的实验报告.doc

上传人:平凡 2022/2/14 文件大小:179 KB

下载得到文件列表

词法分析的实验报告.doc

文档介绍

文档介绍:《编译技术》实验一实验报告
12
《词法分析》
实验报告

《编译技术》实验一实验报告
1
,特殊符号1,
// 特殊符号2,特殊符号3,特殊符号4,特殊符号5,特殊符号6,特殊符号7,特殊符号8,特殊符号9,特殊符号10};
//关键字bi编码 1 2 3 4 5 6 7 8
char K[18][10]={"else","end","if","read","repeat","then","until","write",
"%","*","+","-","/",":",";","<","=",">"};
bool CA::isDigit(char c)
《编译技术》实验一实验报告
5
{
if(c<='9'&&c>='0') return true;
else return false;
}
bool CA::isLetter(char c)
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z') return true;
else return false;
}
int CA::Search(char a[18][10],const char *b,int n)
{
int left=0;int right=n-1;int mid=0;
while(left<=right)
{
mid=(left+right)/2;
if(strcmp(a[mid],b)==0) return mid;
else if(strcmp(a[mid],b)<0) left=mid+1;
else right=mid-1;
}
return -1;
}
int CA::InsertID(char *strToken)
{
int i=0;
while (i<m) //设m为符号表中已有的标识符的个数
{
if (!strcmp(ID[i], strToken))
return i;
i++;
}
strcpy(ID[i],strToken);
m++;
return i;
}
《编译技术》实验一实验报告
6
int CA::InsertConst(char *strToken)
{
int i=0;
while (i<n) //设n为常数表中已有的常数的个数
{
if (!strcmp(Cons[i], strToken))
return i;
i++;
}
strcpy(Cons[i],strToken);
n++;
return i;
}
void CA::display()
{
char filename[30];
//输入的时候一定要是...:/.../...格式
cout<<" 文件的绝对路径:"<<endl;
cin>>filename;
ifstream infile(filename,ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
abort();
}
char ch;
int count1=1;count2=0;
cout<<"第 "<<count1<<" 行 ";
while((ch))
{
preDo(ch);
cout<<ch; //逐行打印出源程序
if(ch=='\n')
{
count1++;
cout<<"第 "<<count1<<" 行 ";
}
}
buffer1[count2+1]='\0';
《编译技术》实验一实验报告
7
cout<<endl;
//对buffer1中的字符进行扫描
getToken();
();
cout<<endl;

cout<<"符号表:";

for (int i=0;i<m;i++)
cout<<ID[i]<<" ";
cout<<endl;

cout<<"数字表:";
for (i