• 大小: 312KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-08-31
  • 语言: C/C++
  • 标签:

资源简介

编译原理第一个实验,用C语言编写的词法分析器(附源文件)。输入一串字符,可以识别出关键字、运算符,标识符等。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#define letter(a) str[a]>=‘A‘&&str[a]<=‘Z‘||str[a]>=‘a‘&&str[a]<=‘z‘
#define digit(a) str[a]>=‘0‘&&str[a]<=‘9‘
const int S=200;
void main()
{

char keyword[][5]={“DIM““IF““DO““STOP““END“};
char str[S]id[50]s[25];
int choicem=0n=0flag=0;
cout<<“请选择 :\n1.从文件中读取源程序\n2.通过键盘输入源程序\n“;
cin>>choice;
while(choice!=1&&choice!=2)
{
cout<<“\t\t警告  !输入不合法,重新新输入!\n“;
cin>>choice;
}
if(choice==1)
{
ifstream infile(“sourcefile.txt“);
if(!infile)
{
cout<<“打开失败!“;
abort();
}
infile.getline(strS‘#‘);
infile.close();
}
else
{
cin.get();
cout<<“请输入源程序,以“#”结束\n“;
cin.getline(strS‘#‘);
}
ofstream outfile(“objectfile.txt“ios::out);
if(!outfile)
{
cout<<“打开失败!“;
abort();
}
for(int i=0;str[i];i++)
{
if(str[i]==‘ ‘) ;
else if(str[i]==‘\n‘) ;
else if(letter(i)) 
{
id[m++]=str[i++];
while(letter(i)||digit(i))
id[m++]=str[i++];
id[m]=‘\0‘;
i--;
for(int l=0;l<5;l++)
if(!strcmp(idkeyword[l]))
{
cout<<“<$“<“< outfile<<“<$“<“< flag=1;
}
if(flag==0)

cout<<“<$ID“<“< outfile<<“<$ID“<“<
m=0;
flag=0;
}
else if(digit(i)) 
{
s[n++]=str[i++];
while(digit(i))
s[n++]=str[i++];
s[n]=‘\0‘;i--;
int a=0c[78]w=n-1; 
char *p;
for(p=s;*p;p++w--)
a=a+(int)pow(10w)*(*p-48);
w=0;
while(a)
{
int b=a%2;
c[w++]=b;
a/=2;
}
cout<<“<$INT“;
outfile<<“<$INT“;
for(w=w-1;w>=0;w--)
{cout< cout<<“>\n“;
outfile<<“>\n“;
n=0;
}
else if(str[i]==‘=‘) {cout<<“<$ASSIGN->“<“< else if(str[i]==‘+‘) {cout<<“<$PLUS->“<“< else if(str[i]==‘*‘)
{
if(str[i+1]==‘*‘) {cout<<“<$POWER->“<“< else {cout<<“<$STAR->“<“< }
else if(str[i]==‘‘) {cout<<“<$COMMA->“<“< else if(str[i]==‘(‘) {cout<<“<$LPAR->“<“< else if(str[i]==‘)‘) {cout<<“<$RPAR->“<“< else {cout<<“ERROR!“< }

outfile.close();
}

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

     文件      50176  2010-11-16 21:23  词法分析器\Debug\vc60.idb

     文件      61440  2010-10-02 16:44  词法分析器\Debug\vc60.pdb

     文件     262195  2010-10-13 12:44  词法分析器\Debug\词法分析器.exe

     文件     305940  2010-10-13 12:44  词法分析器\Debug\词法分析器.ilk

     文件      18718  2010-10-13 12:44  词法分析器\Debug\词法分析器.obj

     文件     302856  2010-10-02 15:46  词法分析器\Debug\词法分析器.pch

     文件     590848  2010-10-02 16:44  词法分析器\Debug\词法分析器.pdb

     文件         17  2010-11-16 21:24  词法分析器\objectfile.txt

     文件         61  2010-10-02 16:05  词法分析器\sourcefile.txt

     文件       2516  2010-10-02 16:44  词法分析器\词法分析器.cpp

     文件       3451  2010-10-02 16:37  词法分析器\词法分析器.dsp

     文件        528  2010-10-02 16:44  词法分析器\词法分析器.dsw

     文件      41984  2010-11-16 21:28  词法分析器\词法分析器.ncb

     文件      48640  2010-11-16 21:28  词法分析器\词法分析器.opt

     文件        254  2010-10-13 12:45  词法分析器\词法分析器.plg

     目录          0  2010-10-03 21:55  词法分析器\Debug

     目录          0  2010-11-16 21:28  词法分析器

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

              1689624                    17


评论

共有 条评论